2011-08-24 6 views
1

우리는 설계상의 어려움을 겪고 있기 때문에 웹상에서 트위터 & Facebook과 REST와 같은 API 서비스를 통해 다양한 소셜 네트워킹 피드의 처리 결과를 보여주는 시스템을 개발하는 데 절대적으로 깨끗한 평판을 얻습니다. 처리 부분은 이미 완료되었지만 이제는 결과를 저장할 어딘가가 필요합니다.스트리밍 웹 응용 프로그램 - Twitter, Facebook, NoSQL 또는 SQL?

결과 형식은 메시지 ID, 메시지 날짜, 처리 된 타임 스탬프 및 다양한 처리 점수 모음과 유사합니다. 이 데이터베이스에는 약 2 억 개의 메시지가있을 것입니다. 그래서 우리가 가장 먼저 필요한 것은이 데이터를 저장하는 것입니다. 우리는 NoSQL 문서 데이터베이스가 열 패밀리 스타일 데이터베이스를 할인하는 날짜 범위를 선택할 수 있어야한다는 점을 고려하면 흥미 롭다고 생각합니다. (HBase의 키 범위 검색이 느리다고 생각 하듯이) 또는 더 나은 옵션은 오래된 MySQL 또는 VoltDB에이 데이터를 저장하는 것일 수 있습니다. 그러한 시스템을 구현 한 사례가 누구에게 있습니까?

다음은 웹 응용 프로그램을 개발하는 것입니다. 실시간으로 데이터를 가져 와서 인터페이스를 업데이트 할 수있는 차트 서비스가 필요합니다. 우리는이 목적으로 HighChart를 사용하려고 생각하고 있습니다. 더 좋은 점이 있습니까?

마지막으로 우리는 Twitter 애플리케이션의 스트리밍 API와 같은 commet 애플리케이션 및 스트림 데이터처럼 작동 할 수있는 일종의 API 서비스가 필요합니다. 나는 이것이 node.js 일 것이라고 생각했다.

그래서 내가 생각하기에 문제는 우리가 작업에 가장 적합한 기술을 선택한 것입니다. 거기에 좋은 사례가 있습니까? 누군가가 추천할만한 것이 있습니까?

건배!

+1

숙제를 마치고 추가 검증이 필요한 것 같습니다. 나는 당신이 합리적인 기술을 선택했다고 생각합니다. 내 유일한 의견은 스토리지와 관련이 있습니다. MongoDB 프로젝트는 대규모 분석 트랜잭션을 위해 MongoDB를 사용합니다. 왜냐하면 원래는 우리에게 더 적합하다고 생각했기 때문입니다. 그러나 성능 테스트 중에는 인터페이스 관점에서 보면 좋지만 원하는 위치로 확장되지 않으므로 좋은 오래된 관계형 DB로 다시 전환한다는 것을 알 수 있습니다. 분명히 NoSQL 구현에는 모두 적용되지 않지만 고려해야 할 사항입니다. – momo

+1

정보 Momo 주셔서 감사합니다.콜 패트 (Col Fam) 가게가 갈 길이 멀다고 생각합니다. 내가 확신 할 수없는 유일한 것은 쿼리 성능입니다. HBase에서 순차적으로 증가하는 키를 생성하고 레코드를 덤프하는 방법이 필요합니다. 문제는 내가 날짜순으로 조회를하고 싶다면 날짜/시간과 같은 인덱스 테이블을 개발해야 할 것입니다. ID가 x 열 x 인 결과가 있습니다. 그래서 질문은 MySQL에서 인덱스 된 테이블에 대해 비슷한 일을하는 것과 키> X를 말하는 스캔 리턴 비율입니다. 누군가? – NightWolf

답변

2

저장소 정보 : nosql 저장소에는 4 가지 유형이 있습니다. 키/값, 열 데이터베이스, 문서 데이터베이스 및 그래프 데이터베이스. 각각은 이전 버전보다 느리지 만 더 많은 기능을 제공합니다. 경우에만 데이터 키/값 또는 열 데이터베이스를 저장할 필요가 귀하의 선택입니다. 이 유형의 저장 영역에서는 손으로 데이터 처리가 이루어 지므로 맵을 구현하는 데 필요한 종류가 필요할 수 있습니다. 아마 hadoop. 문서 및 그래프 데이터베이스는 어떤 종류의 쿼리를 제공하며 데이터베이스에서 데이터 처리의 일부 (예 : 날짜 필터)를 이동할 수 있습니다. 일부 nosql 저장소를 선택해야하는 경우 그래프 데이터베이스 (예 : neo4j)로 테스트를 수행하고 실적 문제가 열 데이터베이스 (예 : cassandra)로 전환되어지도가 줄어 듭니다.

차트 정보 : HighCharts는 좋은 옵션입니다. 나는 SVG 브라우저 지원에 대해 모르지만 성능상의 문제가있는 경우에는 내 컴퓨터에서 아주 멋지게 보입니다.

데이터 스트리밍 정보. 나는 nodejs에 대해서만 거의 경험이 없으며 그것이 나의 첫번째 선택 일 것이다. 파이썬을위한 Tornadoweb과 erlang을위한 Misultin, Mochiweb, Cowboy와 같은 몇 가지 다른 구현이 있습니다. benchmark이 서버의 링크를 발견하고 erlang 서버가 nodejs보다 빠를 것 같습니다. 당신은 또한 그들을 볼 수 있습니다.

+1

정보를 제공해 주셔서 감사합니다. 가장 큰 문제는 데이터를 역사적인 방식으로 내보내는 것입니다 (예 : 사용자가 지난 주 결과의 그래프를 보려고 함). 실시간으로 데이터를 스트리밍하여 새로운 처리 된 레코드가 DB를 웹 인터페이스로 보낼 수 있습니다. HighCharts를 사용하면 폴링을 사용하여 수행해야 할 필요가있는 것처럼 보이지만 괜찮습니다. 질문은 가장 빠른 폴링 방법입니다. 나는. 타임 스탬프 키> 날짜 또는 ID 필드> 마지막 ID를 묻는 HBase 같은 또는 ID> xyz 또는 타임 스탬프> abc에 대해 MySQL에서 SQL 쿼리를 실행 중입니까? – NightWolf

+2

매 초마다 업데이트가 있으면 풀링을 선택하는 것이 좋습니다. 다른 경우에는 더미 요청을하지 않는 한 밀어 넣기가 더 좋습니다. 하이 차트는 메모리 저장소를 사용하고 nodej 또는 다른 서버로 채워진 배열의 데이터를 가져 오는 데 적용 할 수 있습니다. 또한 twitter는 몇 주 동안 (나는 희망한다) 폭풍우를 열 것이다. 그것은 유용하게 보이지만 아직 닫혀있어 테스트하지 않았습니다. 어쨌든이 게시물을 미리보기로 확인하실 수 있습니다 : http://engineering.twitter.com/2011/08/storm-is-coming-more-details-and-plans.html – Ivan

+0

Storm에서 매우 흥미로운 점에 감사드립니다. S4를보고 있었지만 Storm은 더 많은 '제작 준비'가 될 수 있습니다. 감사! – NightWolf

0

샤링과 함께 SOLR/Lucene을 사용할 수도 있습니다. 처리량은 마스터/슬레이브 solr 설정을 통해 증가 될 수 있습니다.

관련 문제