2008-09-03 2 views
11

일반적으로 데이터베이스 서버는 수직 확장이 유일한 옵션이므로 우리가 구매해야하는 가장 크고 비싼 상자입니다. 수평 적으로 (즉, 여러 상품 기계에 걸쳐) 확장 가능한 데이터베이스가 있으며이 접근 방식의 한계는 무엇입니까?가로로 비례하는 데이터베이스를 추천 할 수 있습니까?

+0

NewSQL 옵션을 확인 했습니까? NuoDB, Clustrix 및 Xeround는 분산 된 OLTP 데이터베이스입니다. 저는 Clustrix에서 일하면서 멋진 제품이라고 생각합니다. – clieu

답변

4

좋은 해결책이오고 있습니다.

CouchdbHypertable은 오픈 소스이지만 여전히 알파로 제공되지만 분명히 상용 소프트웨어의 크기 조정이 간단하도록 설계되었습니다. 그들은 꽤 잘 작동하고 데이터베이스에 대한 생각을 바꿀 수 있습니다.

Google AppEngineAmazon SimpleDB도 매우 저렴한 분산 데이터베이스 서비스이지만 베타 버전이므로 엄격한 제한이 적용됩니다.

2

JavaSpaces (또는 Gigaspaces와 같은 상업적 구현)와 같은 저장 기술로 객체에 대한 확장 성이 뛰어나고 빠른 & 보안 액세스를 제공합니다.

비슷한 접근법을 제공하는 memcached와 같은 분산 캐시 시스템도 있습니다.

물론 이들 중 어느 것도 실제 데이터베이스는 아니지만 적절한 아키텍처가 제공되면 데이터베이스와 함께 작동하여 많은 양의 수평 확장 성을 제공 할 수 있습니다. 실제 문제는 데이터베이스와 함께 제공되는 모든 ACID 장점을 원한다면 피할 수없는 성능 저하가 있다는 것입니다. 유일한 방법은 ACID가 필요없는 비트를 찾아내어 다른 비트 기술을 사용하는 것입니다.

1

Netezza 및 기타 데이터웨어 하우스 어플라이언스는 이러한 방식으로 확장되지만 OLTP 및 웹 앱 작업 ​​부하에는 적합하지 않습니다.

1

여러 시스템에서 확장하는 Oracle 경로를 Oracle RAC (Real Application Clusters)라고합니다. 이것에 대한 문서는 끝이 없습니다. http://www.oracle.com/database/rac_home.html부터 시도해보십시오.

5

오라클 RAC - 리얼 애플리케이션 클러스터

이 당신은 당신의 클러스터에 상자를 추가, 잘 작동합니다. 한 상자에서 다른 상자로 장애 조치 할 수 있습니다. 복제가 아니며 모든 상자는 동일한 논리 단위의 일부입니다.

꽤 쓸만합니다.

2

Oracle RAC는 여분의 하드웨어 노드를 비교적 쉽게 추가하고 하드웨어 장애 조치를 수행 할 수 있도록 해주는 롤스 로이스 데이터베이스입니다.

그러나 귀하의 상품 하드웨어 비용은 라이센스 비용으로 비하면 정말 작습니다.

왜 수평 확장이 필요하다고 생각하십니까? 40GB RAM 및 SAN 스토리지를 갖춘 멀티 CPU 코어 서버는 대용량 DB 설치를 지원할 수 있습니다.

문제점을 더 잘 이해할 수 있도록 크기 조정 및 예상 활동 정보를 제공 할 수 있습니까?

0

Oracle Real Application Clusters. 당신이 최선을 원하면 그것을보십시오.

0

괜찮은 멀티 코어 "빅 아이언"상자를 스케일 아웃한다고 생각한다면 데이터 분할에 대해 생각해보십시오. 이것은 수평 적으로 확장 할 수있는 훌륭한 데이터베이스 불가지론 적 방법입니다.

모든 데이터베이스는 심각한 비용으로 수평 적으로 올 것입니다.

문제가 발생하면 메가 $$를 버리면 안되면 RAC를 잊어 버리십시오. 그것의 아주 좋은, 매우 비싼 한 번 당신은 2 개의 노드 저쪽에 가늠자.

2

RAC 라우트를 내려가 보면 영원히 수평 확장되지 않는다는 것을 기억할 가치가 있습니다. 심지어 판매원들도 rac 고객의 90 %가 4 개 이하의 노드라고 인정합니다. 그것보다 더 많은 것을 얻으면 당신은 점점 줄어드는 결과를 얻습니다. rac이 당신을 위해 일할 수도 있지만 대답은 보장되지 않습니다.

2

MySQL은 : http://www.mysql.com/why-mysql/scaleout.html

제한은 읽기 대부분의 워크로드에서 가장 잘 작동한다는 것이다. 일반적으로 모든 쓰기를받는 '마스터'와 쓰기를 복제하는 많은 '슬레이브'가 있습니다. 그런 다음 모든 데이터베이스에 대해 읽기를 배포합니다.

MySQL 복제는 비동기식이므로 시간 지연 문제 (마스터에 쓰고 쓰기가 복제되기 전에 슬레이브에서 읽음)를 처리해야 할 것입니다.

6

모든 Oracle 인스턴스가 동일한 데이터 저장소를 공유하므로 Oracle RAC는 수평 확장이 불가능합니다. 그렇습니다. SAN을 사용하면 큰 DB를 얻을 수 있지만, 확장 성이 전혀 없습니다. 즉, Oracle RAC는 여전히 규모 확장 방식입니다. 따라서 수평 확장 또는 수평 확장을 위해서는 기능을 기준으로 데이터를 분할해야합니다. 즉, 서로 다른 그룹의 테이블을 다른 데이터베이스에 배치해야합니다. 또는 하나의 테이블을 같은 스키마의 여러 ​​서브 테이블로 파티션하지만 다른 데이터베이스에 저장한다는 것을 의미하는 테이블 당 데이터를 파티션하십시오. 이런 식으로 스케일 아웃 솔루션을 얻을 수 있습니다. 그것에 많은 자원이 있습니다. Sharding은 웹 2.0 웹 사이트 아키텍처 블로그 영역에서 잠시 뜬 소문입니다. 샤딩은 데이터베이스 자체에서 직접 지원되지 않으므로 직접 솔루션을 구축해야합니다. 하지만 제가 말씀 드렸듯이, 이미 많은 교훈이 있습니다. 오라클의 경우 파티셔닝 테이블이 가능합니다. mysql의 경우 this question

0

MongoDB 은 수평으로 확장되는 최상의 데이터베이스 중 하나입니다.

관련 문제