2010-07-21 2 views
3

10 억 개 이상의 개체가있는 데이터베이스가 필요하고 언제든지 데이터베이스의 항목에 즉각적으로 (또는 거의 즉각적으로) 액세스해야하는 경우 가장 좋은 솔루션은 무엇입니까?수십억 개의 정보를 저장하는 것이 중요합니까?

이 데이터베이스는 초당 약 1000 건의 요청으로 쿼리됩니다. 데이터베이스의 행은 거의 관련이 없으므로 관계형 일 필요는 없습니다.

이유가 궁금하신 분은 움직이는 요소를 시뮬레이션 해보십시오.

로드 균형 조정 된 웹 서버 클러스터를 통해 액세스되는 카산드라의 여러로드 균형 클러스터와 같은 것을 생각하고있었습니다.

돈은 더 싼 것이 더 좋은 요소입니다. 소프트웨어 또는 도구에 대한 제한은 없지만 오픈 소스 여야합니다.

수많은 사용자가 어리석은 양의 데이터를 처리하는 데 좋은 데이터베이스 솔루션을 찾고 있습니다 (관계형 일 필요는 없습니다).

중복성과 오류를 처리하는 것이 중요합니다.

저를 올바른 방향으로 끌어 들이기위한 높은 수준의 아이디어는 훌륭합니다. 당신이 효율적으로 3D 간격 (X_min < = X_obj < = X_max & Y_min < = Y_obj < = Y_max & Z_min < = Z_obj < = Z_max) 내에서 모든 개체를 얻을 수 있어야합니다 때문에

+0

평균적으로 수십억에서 1000 리퀘스트/초를 수집해야하는 오브젝트의 수는 얼마입니까? 서로 다른 요청에 의해 선택된 데이터간에 얼마나 많은 상관 관계가 있습니까? 10 억 개 이상의 물체는 얼마나 큽니까? 객체는 어떻게 식별됩니까? –

+0

요청 당 약 10 또는 20 개를 말하십시오. 상관 관계는 없습니다 (클라이언트 측에서 계산됩니다). 각 객체는 실제로 약 10 개의 일반 텍스트 속성과 3D 위치 데이터를 말합니다. 객체는 고유 한 키로 식별됩니다 (또는 사용자가 특정 위치에 범위가 지정된 경우). X 단위 내의 모든 객체를 볼 수 있어야합니다 (결과를 얻으려면 db에 쿼리 할 수 ​​있어야합니다. X, Y 및 Z의 범위 내에 있습니다. 다른 속성도 쿼리 할 수 ​​있지만 반환되는 객체는 대부분 10에서 20 또는 100 정도입니다. – jreid42

+0

당신은 z == this 속성을 가진 모든 객체를 제공한다고 말할 수는 없습니다. 그것은 항상 ... X, Y, Z의 200 단위 내의 모든 객체를 제공 할 것입니다. 그런 다음 속성에 따라 추가로 필터링 할 수 있습니다 (그러나 클라이언트 측에서 수행 할 수있는 작업은 동일한 것이 많지 않습니다. 부위). – jreid42

답변

0

, 나는 확실하지 않다 카산드라와 같은 키 - 밸류 스토어가 얼마나 당신에게 적합할까요? 그것은 MongoDB에서 보았을 때 보람이 있을지도 모르는데, 나는 이것이 여러 필드를 색인화하고 간격을 기반으로 쿼리 할 수 ​​있다고 믿고 있습니다.

+0

나는 MongoDB가 당신의 데이터를 보호한다는 점에서 가장 큰 것이 없다고 들었다. – jreid42

+0

MongoDB는 다른 DB와 마찬가지로 양호한 상태입니다.하드웨어에 문제가 있음을 인정합니다. 2 개 또는 3 개의 다른 시스템에 데이터가 없으면 안전하다고 확신 할 수 없습니다. –

+0

카산드라는 여러 필드를 인덱싱하고 간격을 기준으로 쿼리 할 수도 있습니다. –

1

하나의 옵션은 3D 좌표를 space-filling curve에 매핑하여 점을 단일 값으로 효과적으로 표시하는 것입니다. 그런 다음 카산드라의 범위 쿼리를 실행하여 특정 지역의 포인트를 얻을 수 있습니다.

이전에 2D 공간에서 구현 된 것을 보았습니다. 3D에서도 가능할 것으로 확신합니다.

관련 문제