빅데이터 저장 및 클라이언트 푸시?

k1259cik의 이미지

안녕하세요.여기에 글을 처음 올리네요~

이번에 프로젝트를 하나 진행하는데.. 어떤 기술을 사용해야 할지...감이 잡히지 않아 문의드립니다.

사용자 위치정보를 서버에 데몬이 받아 DB에 저장하는하는데요 1초에 2회정도 발생합니다.
(엄청나게..많겠죠 ㅠㅠ)

1) 인원이 많게는 몇 천정도되는데 이정보를 한번에 어케 DB에 넣을 수 있을까요?

2) 저장 하기전 위치정보는 클라이언트(PC)화면에 찍어주어야 합니다.
서버단에서 계속 움직이는 인원정보를 Push하여 갱신 해줘야 하는데..
Server Sent-Event를 사용하고, 서버에는 어떻해 개발해야 할까요? 어떤 언어?, 어떤기술?
여러명이 해당 페이지에 붙으면, 서버에 무리를 주지 않고..?

3) 또 데이터중 특정 상황을 분석해서 클라이언트(PC, Mobile)에 Push도 해줘야 합니다.

어떤식으로 시스템 구성을 잡아야 할지..전문개발자가 아니다..보니.감이 오지 않네요~

고수님들에 자문을 요청드립니다.

shint의 이미지

- 네이버 다음 카페.
- 지역별 직업학교. 대학교. 창업보육센터. 전문대. 학원. 소프트웨어 진흥원.
- 도서관. 서점

- 공개SW.
http://www.oss.kr/

- OLC 센터.
http://olc.kr/main/index.jsp

- GIS 프로그래밍
http://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=GIS+%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

- GPS 프로그래밍
http://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=GPS+%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

웹, 모바일웹, 앱 프로그래밍 - 지도(Map) 구현
http://book.naver.com/bookdb/book_detail.nhn?bid=8222278

모바일 GIS 프로그래밍
http://book.naver.com/bookdb/book_detail.nhn?bid=7125650

- Erlang 멀티 프로세스 서버
- Apache 서버
- 메모리 DB를 사용하는 MySQL
- 다음. 네이버. 구글. 공공. AWS. OpenAPI.

MMORPG 서버 프로그래밍
http://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=MMORPG+%EC%84%9C%EB%B2%84+%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

MMORPG 게임 프로그래밍
http://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=MMORPG+%EA%B2%8C%EC%9E%84+%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

CCNA
http://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=CCNA

DNS 장애
http://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=DNS+%EC%9E%A5%EC%95%A0

VLAN 장애
http://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=VLAN+%EC%9E%A5%EC%95%A0

보안
http://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=%EB%B3%B4%EC%95%88

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

k1259cik의 이미지

좀 세부적인 기술명등을 원하는 건데..너무광범위 하네요.

shint의 이미지

Proximity SDK - T map SDK - T map Reverse Geocoding API - Beacon
https://developers.skplanetx.com/

통합 개발자 센터
http://dev.onestore.co.kr/devpoc/index.omp

올레맵 API
KT │ 올레맵 │ https://www.ollehmap.com │ 유료

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

익명 사용자의 이미지

> 1) 인원이 많게는 몇 천정도되는데 이정보를 한번에 어케 DB에 넣을 수 있을까요?
요즘 하드웨어 수준에서(단일 PC서버기준) 몇 천명 정보는 많은 정보가 아닙니다. 초당 2건정도에 1만명이라고 해도, 2만건 정도로 대략 예상되며, 한 레코드의 크기가 1KB 정도라고 볼때, 특별한 기술없이도 처리 가능한 수준이라고 보입니다.
단지, 저장은 큐잉을 하여 어느 정도 레코드가 누적되거나, 일정 주기가 되면 데이터베이스에 저장하는게 유리하겠습니다.
방법은 (1) Bulk Insert (2) Host Array방식이 대표적입니다. 두방식 다 SQL문장의 파싱 오버헤드를 줄이는 기법을 사용한 것이라 하겠습니다.
최근의 통상적인/평범한 하드웨어(commondity hw)에서 단일 쓰레드 모델인 경우, 특별한 튜닝없이 대충해도 인덱스 없이 30만건/sec 데이터 저장이 가능합니다. 하기에 달렸지만, 더 올릴 수도 있겠지요.
제시하신 문제는 충분히 처리가 가능하리라고 예측이 됩니다. 단지, 인덱스등을 사용한다면 전문가의 튜닝이 필요할 수 있습니다.

> 2) 저장 하기전 위치정보는 클라이언트(PC)화면에 찍어주어야 합니다.
> 서버단에서 계속 움직이는 인원정보를 Push하여 갱신 해줘야 하는데..
> Server Sent-Event를 사용하고, 서버에는 어떻해 개발해야 할까요? 어떤 언어?, 어떤기술?
> 여러명이 해당 페이지에 붙으면, 서버에 무리를 주지 않고..?

다음과 같은 토폴로지로 프로세스를 구성하는게 좋겠습니다.

데이터생산자(다수) -> 데이터브로커 ->(1.저장소, 2. 실시간모니터링, 3. 실시간분석기) -> 푸시서버 -> (필요한 클라이언트)

1) 데이터브로커가 저장소에 보내고 저장소는 이를 데이터베이스등에 저장한다.
2) 데이터브로커가 실시간모니터링에 보내고, 실시간모니터링은 필요한 사항에 대해 모니터링한다.
- 모니터링한 결과를 푸시서버에게 전달하고, 푸시서버는 큐잉을 할 수 있으며, 푸시서버는 필요한 클라이언트에게 전송을 개시한다. 푸시서버를 별도록 둔 이유는 클라이언트에 전달하는 메카니즘(라인속도, 클라이언트의 성능등)으로 인해 다른 구성요소가 영향을 받지 않게 하기 위함이다.(예를 들어 실시간분석기등이 블록되는 것을 방지)
3) 언어나 기술은 개발자가 편리한대로 하는게 좋겠지요.
4) 동시 접속자가 수십 명인 경우는 별로 문제가 되지는 않으나, 수백 명이상인 경우라면 고려가 필요합니다. 클라이언트가 서버에 '특정연산'을 요청할 수 없게하며, 미리 정의된 내용에 대해서만 조회하게 하면 서버에 부하가 덜 할 수 있습니다/적어도 부하를 예측할 수 있다는 것입니다.

> 3) 또 데이터중 특정 상황을 분석해서 클라이언트(PC, Mobile)에 Push도 해줘야 합니다.

2)에서 이미 말씀드렸네요.

* 좋은 제품 만드시길......

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.