문제

데이터 색인을 구축하고 있는데, 이는 양식에 많은 트리플렛을 저장하는 것을 수반합니다. (document, term, weight). 나는 최대 수백만 개의 줄을 저장할 것입니다. 현재 MySQL에서 간단한 테이블 로이 작업을 수행하고 있습니다. 문서와 용어 식별자를 다른 테이블에 대한 외래 키보다 문자열 값으로 저장하고 있습니다. 소프트웨어를 다시 작성하고 데이터를 저장하는 더 나은 방법을 찾고 있습니다.

HBase의 작동 방식을 살펴보면 스키마에 잘 맞는 것 같습니다. 트리플렛을 많이 저장하는 대신 매핑 할 수 있습니다. document 에게 {term => weight}.

나는 단일 노드에서 이것을하고있다, 그래서 나는 분산 노드 등에 관심이 없다. 나는 그것이 작동하기 때문에 mySQL을 고수해야합니까, 아니면 hbase를 시도하는 것이 현명해야합니까? Lucene은 전체 텍스트 인덱싱에 사용합니다 (이는 내가하는 일과 유사합니다). 내 질문은 실제로 단일 HBase 노드가 단일 MySQL 노드와 어떻게 비교됩니까? 나는 Scala에서 왔는데 직접 Java API가 JDBC와 MySQL 구문 분석 등에 가장자리가있을 수 있습니까?

나의 주요 관심사는 이전에 병목 현상 이었기 때문에 삽입 속도입니다. 처리 후 MySQL 내에서 더 잘 수행되는 계산을 수행해야하기 때문에 데이터를 MySQL에 다시 넣을 것입니다.

나는 둘 다 프로토 타이핑을 시도 할 것이지만, 커뮤니티가 이것에 대한 귀중한 통찰력을 줄 수 있다고 확신합니다.

도움이 되었습니까?

해결책

작업에 적합한 도구를 사용하십시오.

산 (원자력, 일관성, 격리, 내구성)과 달리 많은 항 -RDBMS 또는 기본 시스템 (기본적으로 사용 가능한 소프트 상태, 결국 일관성)이 있습니다. 여기 그리고 여기.

나는 기존의 RDBMS를 사용했는데 클로브/블롭을 저장할 수는 있지만 이러한 개체를 검색하기 위해 특별히 맞춤형 인덱스가 내장되어 있지 않습니다.

문서를 삽입 할 때 대부분의 작업 (발견 된 각 튜플의 가중 주파수를 계산)을 수행하려고합니다.

각 검색 후 각 (DocumentID, SearchWord) 쌍의 유용성을 채점하는 작업을 수행 할 수도 있습니다.

그렇게하면 매번 더 나은 검색을 제공 할 수 있습니다.

또한 각 검색 및 가중 점수에 대한 점수 또는 가중치를 다른 검색과 유사하게 저장하려고합니다.

일부 검색은 다른 검색보다 더 일반적이며 사용자가 일반적인 검색을 수행한다는 의미이지만 검색 쿼리를 올바르게 표현하지 않을 수 있습니다.

문서를 삽입하면 검색 가중치 인덱스를 약간 변경해야합니다.

내가 그것에 대해 더 많이 생각할수록 솔루션이 더 복잡해집니다. 먼저 좋은 디자인으로 시작해야합니다. 디자인이 예상되는 요인이 많을수록 결과가 더 좋아집니다.

다른 팁

Mapreduce는 튜플을 생성하는 좋은 방법처럼 보입니다. Scala 작업을 JAR 파일에 넣을 수 있다면 (이전에 Scala를 사용하지 않았고 JVM N00B이기 때문에 확실하지 않음), 그것을 보내고 그것을 실행하기 위해 약간의 래퍼를 작성하는 것은 단순히 문제가 될 것입니다. 지도에서 클러스터를 줄입니다.

완료된 후 튜플을 저장하는 것은 다음과 같은 문서 기반 데이터베이스를 고려할 수도 있습니다. MongoDB 튜플을 저장하는 경우.

일반적으로 텍스트로 더 통계적으로 무언가를하고있는 것처럼 들립니다 ... 단순히 루센이나 솔르를 사용하여 자신의 글을 쓰는 대신하고있는 일을하는 것을 고려해 보셨습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top