2010-04-30 4 views
3

사용할 데이터베이스 시스템을 결정할 때 도움이 필요합니다. (저는 지난 몇 시간 동안 인터넷 검색과 독서를 해왔으며 직접 지식을 가진 사람에게 도움을 요청하는 것이 좋습니다.)200MIPS/일, 월간 요약 쿼리를위한 데이터베이스 솔루션

근무일 기준으로 8 시간당 2 억 회 이상을 기록해야합니다. 데이터베이스를 검색 한 다음 해당 데이터에 대한 주간/월간/연간 요약 쿼리를 ​​수행합니다. 요약 쿼리는 청구 명세서와 같은 것에 대한 데이터를 수집하는 것입니다 (예 : "이번 달에 각 사용자가 A 유형의 거래를 몇 번이나 했습니까?" (더 복잡 할 수 있지만 일반적인 생각입니다).

필요에 따라 여러 대의 컴퓨터에 데이터베이스를 분산시킬 수는 있지만 오래된 데이터를 오프라인으로 가져갈 수는 없다고 생각합니다. 필자는 1 개월 분량의 데이터를 쿼리 할 수 ​​있어야합니다. 어쩌면 1 년이 걸릴 수도 있습니다. 이러한 쿼리는 내 용도로 사용되며 최종 사용자에게 실시간으로 생성 될 필요는 없습니다 (필요할 경우 야간에 실행할 수 있음).

누구에게 적합한 데이터베이스가 좋을까요?

P. 카산드라는 글을 다룰 때 아무런 문제가 없을 것 같지만 거대한 월별 테이블 스캔은 어떨까요? Cassandra/Hadoop MapReduce 성능에 익숙한 사람이 있습니까?

+1

나는 큰 문제가 있고 기존 데이터베이스 인프라가 없다는 것에 놀랐다. 지금까지 시스템이 어떻게 작동 했습니까? – Summer

+0

그래, 솔직히 말해서, 금요일 오후에 나는 세부 사항이 부족했다. 나는 주말에 이것을보고 싶었다.하지만 포스트 작업 맥주가 기다리고 있었다;) 데이터는 현재 PostgreSQL 데이터베이스, 쓰기 버퍼로 작동하는 SQLite 데이터베이스가 몇 개 있습니다 (RAM에 있음). 이것은 현재 잘 작동합니다. 쓰기와 계속 유지되며 초당 수 백 메가 바이트 (postgres db는 약 4TB입니다)를 통해 질의합니다.실제로 그것은 확장 인 문제입니다. 볼륨이 꾸준히 증가하면서 시스템을 확장하는 현실적인 계획을 세우는 것이 좋을 것입니다. –

답변

1

카산드라 + 하둡은 당신에게 딱 맞는 소리입니다. 200M/8h는 7000/s입니다. 이는 단일 Cassandra 노드가 쉽게 처리 할 수 ​​있으며지도/축소 (또는 상위 수준 돼지)와 관련하여 집계 작업이 간단 할 것 같습니다.

+0

약 2 년 후 우리는 마침내 첫 카산드라 집단을 구성하게되었습니다. 처음에는 다른 용도로 사용 하겠지만 모든 Postgres 데이터베이스가 정상적으로 작동하면 전환을 시작합니다. 카산드라에 대한 귀하의 작업에 대해 조나단 (그리고 다른 모든 공헌자들)에게 감사드립니다. –

1

Greenplum 또는 Teradata가 좋은 옵션입니다. 이러한 데이터베이스는 MPP이며 페타 스케일 데이터를 처리 할 수 ​​있습니다. Greenplum은 분산 된 PostgreSQL 데이터베이스이며 자체 mapreduce를 가지고 있습니다. Hadoop은 저장소 문제를 해결할 수 있지만 데이터에 대한 요약 쿼리를 ​​수행하는 데는 도움이되지 않습니다.

+0

감사합니다 Harsha, 나는이 중 하나를 전해 듣지 않고 있었다. –

2

나는 현저한 트랜잭션 비율로 현재 (웹 도메인 크롤링 데이터베이스) 매우 유사한 프로세스를 진행하고 있습니다.

이러한 유입 속도에서는 저장 영역 레이어를 먼저 가져 오는 것이 중요합니다. SAN 클러스터의 스토리지에 연결하는 여러 대의 컴퓨터를 살펴볼 것입니다. 단일 데이터베이스 서버는 하루에 수백만 건의 쓰기를 지원할 수 있습니다. 이는 "쓰기"당 사용되는 CPU의 양과 쓰기가 커밋 될 수있는 속도입니다.

영리를 분할

(네트워크 성능도 종종 초기 병목), 당신은 데이터를 요약하는 데 필요한 노력을 줄일 수 있습니다. 요약본이 필요한 최신 정보를 말하지 않으며, 이는 매우 중요합니다. 나는 "실시간"에서 뒤로 물러나서 하룻밤을 제안하려고한다.

마지막으로 우리는 2 CPU 4GB RAM Windows 2003 가상 SQL Server 2005와 단일 CPU 1GB RAM IIS Webserver를 테스트 시스템으로 사용하고 있으며 10 시간 동안 2 천만 개의 레코드를 섭취 할 수 있습니다. 공유 SAN에서 RAID 5). 우리는 네트워크 당 왕복 당 40 레코드의 블록으로 일괄 처리 된 초 당 160 레코드를 최대로 섭취합니다.

+0

가이의 통찰력에 감사드립니다. –