2008-11-04 2 views
4

Ruby on Rails 또는 Merb로 작성된 애플리케이션을위한 백엔드 솔루션을 찾고 있습니다. 나는 내가보기로 분산 모델에 가서 순간에 내가 HadoopRuby On Rails/Merb는 수십억 개의 레코드 앱을위한 프론트 엔드로서

Couchdb

HBase에서 HBase를 솔루션으로 문제를보고하기로되어있어 느낌이 - 루비 지원 Couchdb는 1.0 버전에 아직 도달하지 못했습니다.

이렇게 많은 양의 데이터에 어떤 제안을 하시겠습니까?

데이터는 때때로 30-40MB의 빠른 가져 오기가 필요할 수 있지만 가져 오기는 청크로 나옵니다. 따라서 ~ 95 %의 시간 데이터는 읽기 전용입니다.

답변

1

실제 데이터 사용량에 따라 MySQL 또는 Postgres는 적절한 하드웨어에서 2 억 개의 레코드를 처리 할 수 ​​있어야합니다. 특히 많은 양의 요청이있는 경우이 두 데이터베이스를 여러 서버에 복제 할 수 있습니다 (읽기/복제 복제는 여러 마스터/쓰기 복제와 비교하여 설정하기가 쉽습니다).

RDBMS 레일 또는 Merb는 당신이 데이터베이스의 이러한 유형에 액세스하기위한 훌륭한 도구 지원 모두에 액세스 할 수 있습니다.

내 조언이 실제로 이러한 시스템의 몇 데이터를 프로파일 링하고 거기에서 그것을 가지고하는 것입니다.

1

사람들이 사용해온 여러 가지 해결책이 있습니다. 내 경험에 의하면 정말 테이블에있는 행의 번호가 아닌 해당 데이터와 관련된 사용 패턴에 더 의존합니다.

예를 들어, "초당 몇 개의 삽입/업데이트가 발생하고 있습니다." 이와 같은 질문은 귀하가 선택할 백 엔드 데이터베이스 솔루션에 대한 귀하의 결정에 영향을 미칩니다.

Google을 예로 들어 보겠습니다. 자신의 요구를 충족시키는 저장/검색 솔루션이 실제로 존재하지 않았으므로 Map/Reduce 모델을 기반으로 자체적으로 만들었습니다.

0

백엔드는 데이터 및 데이터 액세스 방법에 따라 다릅니다.

그러나 ORM의 경우 DataMapper를 사용하고 사용자 정의 DataObjects 어댑터를 작성하여 원하는 백엔드로 연결할 수 있습니다.

1

그 HBase에 대한 경고의 말씀과 그 자연의 다른 프로젝트들 (CouchDB에 대해 아무것도 모릅니다 - 내가 라고 생각하면이 아닙니다. db는 아예 키 - 값 저장소) :

  1. Hbase는 속도를 조정하지 않습니다. 그것은 확장 성을 위해 조정되었습니다. 응답 속도가 모두 문제가되면이 경로에 커밋하기 전에 몇 가지 개념 증명을 실행하십시오.
  2. Hbase은 조인을 지원하지 않습니다. ActiveRecord를 사용하고 있고 하나 이상의 관계가 있다면 잘 어디에 (서) 당신이 볼 수 있습니다.

또한 Hadoop 위에 구축 된 Hive 프로젝트는 조인을 지원합니다. 돼지도 마찬가지입니다 (하지만 실제로 SQL은 아닙니다). 포인트 1은 두 가지 모두에 적용됩니다. 이들은 무거운 데이터 처리 작업을위한 것이지, Rails로 처리 할 가능성이있는 처리 유형이 아닙니다.

당신은 웹 응용 프로그램, 데이터를 분할하고, 파티션이 분리되어 보장하기 위해 가능한 한 많이하고있는 작품 기본적으로 유일한 전략의 확장 성을 원하는 경우 (서로 대화 할 필요가 없습니다). 그것은 하나의 중앙 데이터베이스가 있다는 것을 기본적으로 가정 이것은, 레일과 조금 까다 롭습니다. 1 년 반 전에이 문제를 살펴본 이후로 그 면면에 개선이있을 수 있습니다. 데이터를 분할 할 수 있다면 상당히 수평 적으로 확장 할 수 있습니다. 하나의 MySQL의 기계는 몇 백만 행 (PostgreSQL을 아마 행 큰 수를 확장 할 수 있지만, 조금 느리게 작동 할 수 있습니다)를 처리 할 수 ​​있습니다.

모든 쓰기가 마스터에 의해 수행되는 설정 마스터 - 슬레이브, 데 작동하고 노예 (그리고 아마도 마스터) 공유됩니다 읽고 또 다른 전략. 분명히 이것은 공정하게 신중히 수행되어야합니다! 높은 읽기/쓰기 비율을 가정 할 때, 이것은 꽤 잘 확장 될 수 있습니다. 조직에서 자금력이있는 경우

, Vertica의, AsterData, 그리고 그린 플럼이 제공하는 것을 확인하십시오.

0

CouchDB가 1.0과 관련이 없다는 것이 확실하지 않습니다. 나는 몇 가지 테스트를 수행하는 것이 좋습니다 (단지 억 임의 문서를 생성)하고 떠받 있을지 볼 것. 특정 버전 번호가 없어도 가능하다고 말하고 싶습니다.

CouchDB는 데이터를 파티셔닝/샤딩 할 때 많은 도움이 될 것입니다. 특히 CouchDB 이후에 데이터 형식이 미래에 변경 될 수있는 경우 (필드 추가 또는 제거) 데이터베이스에는 스키마가 없습니다.

CouchDB에는 읽기가 많은 앱을위한 최적화 기능이 많이 있으며, 내 경험에 비추어 볼 때이 기능이 실제로 빛을 발합니다.

관련 문제