NoSQL 데이터 저장소를 사용하여 어떤 확장 성 문제가 발생 했습니까? [닫은]


189

NoSQL은 관계형 데이터베이스의 역사와 ACID 보증을 위반하는 비 관계형 데이터 저장소를 말합니다. 많이 사용되는 오픈 소스 NoSQL 데이터 저장소는 다음과 같습니다.

  • Cassandra (Cisco, WebEx, Digg, Facebook, IBM, Mahalo, Rackspace, Reddit 및 Twitter에서 사용되는 Java로 작성된 표)
  • CouchDB (Erlang으로 작성되고 BBC 및 Engine Yard에서 사용하는 문서)
  • 다이너마이트 (Erlang으로 작성된 키-값, Powerset에서 사용)
  • HBase (Bing에서 사용되는 Java로 작성된 키-값)
  • 하이퍼 테이블 (바이두에서 사용하는 C ++로 작성된 표)
  • Kai (키-값, Erlang으로 작성)
  • MemcacheDB (C로 작성되고 Reddit에서 사용되는 키-값)
  • MongoDB (C ++로 작성되고 Electronic Arts, Github, NY Times 및 Sourceforge에서 사용하는 문서)
  • Neo4j (일부 스웨덴어 대학에서 사용하는 Java로 작성된 그래프)
  • Project Voldemort (Java로 작성되고 LinkedIn에서 사용하는 키-값)
  • Redis (C로 작성된 키-값, Craigslist, Engine Yard 및 Github에서 사용)
  • Riak (Comcast 및 Mochi Media에서 사용되는 Erlang으로 작성된 키-값)
  • Ringo (Erlang으로 작성된 키-값, Nokia에서 사용)
  • 스칼라리스 ( OnScale 에서 사용하는 Erlang으로 작성된 키-값)
  • Terrastore (문서, Java로 작성)
  • ThruDB (C ++로 작성된 문서, JunkDepot.com 에서 사용)
  • 도쿄 내각 / 도쿄 폭군 (C로 작성된 키-값, Mixi.jp (일본 소셜 네트워킹 사이트)에서 사용)

데이터 리더를 사용하여 해결 한 특정 문제 (SO 리더)가 어떤 NoSQL 데이터 저장소를 사용했는지 알고 싶습니다.

질문 :

  • NoSQL 데이터 저장소를 사용하여 어떤 확장 성 문제를 해결 했습니까?
  • 어떤 NoSQL 데이터 저장소를 사용 했습니까?
  • NoSQL 데이터 저장소로 전환하기 전에 어떤 데이터베이스를 사용 했습니까?

직접적인 경험을 찾고 있습니다. 그러지 않으면 대답하지 마십시오.


6
bignose : 현상금은 가장 유익한 답변을 제공 한 사람에게 주어진 550의 평판 팁으로 봅니다. :-)
knorv

1
Smalltalk 객체 저장소 인 GemStone / S와 같은 솔루션을 잊지 마십시오.
Randal Schwartz

2
OrientDB ( orientechnologies.com )를 놓치지 마세요
Lvca

답변:


49

로드를 처리 할 수 ​​있도록 작은 하위 프로젝트를 MySQL에서 CouchDB로 전환했습니다. 결과는 놀랍습니다.

약 2 년 전, http://www.ubuntuusers.de/ (아마도 가장 큰 독일 리눅스 커뮤니티 웹 사이트) 에 자체 작성 소프트웨어가 릴리스되었습니다 . 이 사이트는 Python으로 작성되었으며 모든 예외를 잡아서 다른 소규모 MySQL 기반 웹 사이트로 보낼 수있는 WSGI 미들웨어를 추가했습니다. 이 작은 웹 사이트는 해시를 사용하여 다른 버그를 확인하고 발생 횟수와 마지막 발생 횟수를 저장했습니다.

안타깝게도 릴리스 직후에 역 추적 로거 웹 사이트가 더 이상 응답하지 않았습니다. 우리는 메인 사이트의 프로덕션 DB에 잠금 문제가있어 거의 모든 요청에 ​​예외가 발생했으며 테스트 단계에서 탐색하지 않은 다른 버그도 있습니다. 기본 사이트의 서버 클러스터 (트레이스 백 로거 제출 페이지라고도 함) 그리고 그것은 트레이스 백 로거를 호스팅하는 작은 서버에게는 너무 많은 길이었습니다 (이것은 이미 개발 목적으로 만 사용되었던 오래된 서버였습니다).

현재 CouchDB는 다소 인기가 있었으므로 그것을 사용 해보고 작은 역 추적 기록기를 작성하기로 결정했습니다. 새로운 로거는 단일 파이썬 파일로만 구성되었으며, 정렬 및 필터 옵션과 제출 페이지가 포함 된 버그 목록을 제공했습니다. 그리고 백그라운드에서 CouchDB 프로세스를 시작했습니다. 새로운 소프트웨어는 모든 요청에 ​​매우 신속하게 응답했으며 방대한 양의 자동 버그 보고서를 볼 수있었습니다.

한 가지 흥미로운 점은 이전의 솔루션이 기존 전용 서버에서 실행되고 있었지만 새로운 CouchDB 기반 사이트는 리소스가 매우 제한된 공유 xen 인스턴스에서만 실행되었다는 것입니다. 또한 키-값 저장소의 강점을 사용하여 수평 적으로 확장하지도 않았습니다. CouchDB / Erlang OTP가 어떤 것도 잠그지 않고 동시 요청을 처리하는 능력은 이미 요구를 충족시키기에 충분했습니다.

이제 빠르게 작성된 CouchDB-traceback 로거가 여전히 실행 중이며 기본 웹 사이트에서 버그를 탐색하는 데 유용한 방법입니다. 어쨌든 약 한 달에 한 번 데이터베이스가 너무 커지고 CouchDB 프로세스가 종료됩니다. 그러나 CouchDB의 compact-db 명령은 크기를 몇 GB에서 몇 KB로 다시 줄이고 데이터베이스가 다시 실행 중입니다 (cronjob을 추가하는 것을 고려해야 할 수도 있습니다 ... 0o).

요약하면 CouchDB는 분명히이 하위 프로젝트에 대한 최선의 선택 (또는 적어도 MySQL보다 더 나은 선택)이었으며 잘 작동합니다.


압축되지 않은 데이터가 특정 수준에 도달하면 couchdb가 자동으로 압축을 수행 할 수있는 곳을 읽은 것 같습니다.
Ztyx

50

내 현재 프로젝트입니다.

18,000 개의 객체를 표준화 된 구조로 저장 : 8 개의 서로 다른 테이블에 9 만 행. Java 객체 모델에 검색하고 매핑하는 데 1 분이 걸렸습니다. 모든 것이 올바르게 색인화되어 있습니다.

간단한 텍스트 표현 (1 개의 테이블, 18,000 개의 행, 3 초)을 사용하여 키 / 값 쌍으로 저장하여 모두 검색하고 Java 객체를 재구성합니다.

비즈니스 측면에서 : 첫 번째 옵션은 실현 가능하지 않았습니다. 두 번째 옵션은 앱이 작동 함을 의미합니다.

기술 세부 정보 : SQL 및 NoSQL 모두를 위해 MySQL에서 실행! 우수한 트랜잭션 지원, 성능 및 데이터 손상, 우수한 확장 성, 클러스터링 지원 등의 입증 된 실적을 위해 MySQL을 고수합니다.

MySQL의 데이터 모델은 이제 주요 필드 (정수)와 큰 "값"필드입니다. 기본적으로 큰 TEXT 필드입니다.

우리는 새로운 플레이어 (CouchDB, Cassandra, MongoDB 등)와 함께 가지 않았습니다. 각각 자체적으로 훌륭한 기능 / 성능을 제공하지만 상황에 따라 항상 단점 (예 : 누락 / 미성숙 한 Java 지원)이 있었기 때문입니다.

MySQL을 사용 (AB)의 추가 혜택은 - 우리의 모델의 비트 관계형 작업은 쉽게 우리의 키 / 값 저장소 데이터에 연결할 수 있습니다.

업데이트 : 여기 실제 상사 영역 ( "제품"으로 작업하지 않음)이 상사가 나를 쏘지 않고 텍스트 내용을 어떻게 표현했는지에 대한 예가 있지만, 재귀 적 측면 (여기서는 하나의 엔티티)을 포함하여 아이디어를 전달합니다. "포함 된"제품). 정상화 된 구조에서 이것이 어떻게 여러 종류의 풍미에 제품을 결합시키는 지, 다른 제품이 포함되어 있는지 등의 몇 가지 표가 될 수 있음이 분명합니다.

Name=An Example Product
Type=CategoryAProduct
Colour=Blue
Size=Large
Flavours={nice,lovely,unpleasant,foul}
Contains=[
Name=Product2
Type=CategoryBProduct
Size=medium
Flavours={yuck}
------
Name=Product3
Type=CategoryCProduct
Size=Small
Flavours={sublime}
]

2
문제의 두 데이터베이스 (sql 및 NoSQL)는 어디에 있습니까?
mavnn 2019

둘 다 MySQL이었습니다 (이 정보를 제공하기 위해 응답을 편집했습니다. 처음에 잊었습니다). 동일한 DB, SQL 및 NoSQL 접근 방식의 성능이 매우 다릅니다. MySQL의 키 / 값 접근 방식에 매우 만족합니다.
브라이언

5
안녕 브라이언, 정규화 된 구조의 스키마와 키-값 쌍 "스키마"의 예를 제공 할 수 있습니까? 또한 표준화 된 구조의 성능 문제에 직면하고 있으며 현재 테이블을 비정규 화하거나 NoSQL 데이터 저장소로 이동하는 두 가지 옵션을 고려하고 있습니다. 이미 지불하고있는 라이센스 및 유지 관리 비용으로 인해 현재 Oracle 스택을 활용하고 비정규 화 된 RDBMS 솔루션을 찾고 있습니다. 흥미로운 예가 될 것입니다!
tth

@Brian : 4 가지 예제가 java로 작성되었으므로 어떤 Java 지원 기능이 누락되었거나 미성숙합니까? 나는이 분야에 경험이 없지만 약간 놀랍습니다.
Jimmy

tthong-정규화 된 스키마를 간결하게 포함시키는 방법을 모르지만 콘텐츠를 단일 텍스트 필드에 저장하는 방법에 대한 예를 추가했습니다. 약간 생각이 들었습니다. 상사가 탄도를 가할 때 실제 사례를 포함시킬 수 없었기 때문에이 "데이터 모델"과 관련된 "문제"가 그 이유 일 가능성이 높습니다. Oracle과 다른 솔루션을 벤치마킹 할 것을 권장하지만 조직에 Oracle 전문 지식, DBA, 백업 등이있는 경우 고려해야 할 정말 좋은 옵션이 될 수 있습니다.
Brian

22

Todd Hoff의 highscalability.com 은 일부 사례 연구를 포함하여 NoSQL에 대한 많은 정보를 제공합니다.

상용 Vertica 컬럼 DBMS는 SQL을 지원하더라도 목적에 맞을 수 있습니다. 분석 쿼리를위한 기존 관계형 DBMS와 비교할 때 매우 빠릅니다. Vertica와 map-reduce를 대조 한 Stonebraker 등의 최근 CACM 논문을 참조하십시오 .

업데이트 : 그리고 트위터 는 HBase, Voldemort, MongoDB, MemcacheDB, Redis 및 HyperTable을 포함한 여러 다른 것보다 Cassandra선택 했습니다.

업데이트 2 : Rick Cattell은 고성능 데이터 저장소 에서 여러 NoSQL 시스템 비교를 발표했습니다 . 그리고 Rick의 논문에 대한 highscalability.com의 의견은 여기에 있습니다 .



@ar : 감사합니다. 좋은 링크입니다. 버티 카 사람들은 상당한 논쟁을 일으켰습니다.
Jim Ferrans

8

우리는 데이터의 일부를 mysql에서 mongodb로 옮겼습니다. 확장 성이 아니라 파일 및 비 테이블 데이터에 더 적합하기 때문에 확장 성이 뛰어납니다.

프로덕션에서는 현재 다음을 저장합니다.

  • 25,000 개 파일 (60GB)
  • 1 억 3 천만 개의 다른 "문서"(350GB)

매일 약 10GB의 매출이 발생합니다.

데이터베이스는 mongodb python api (pymongo)를 사용하여 apache / wsgi / python 클라이언트와 함께 두 개의 노드 (6x450GB sas raid10)에 "페어링 된"구성으로 배포됩니다. 디스크 설정은 아마도 과잉이지만 mysql에 사용하는 것입니다.

pymongo 스레드 풀과 관련된 문제와 mongodb 서버의 차단 특성 외에도 좋은 경험이었습니다.


이름을 딴 문제에 대해 좀 더 자세히 설명해 주시겠습니까?
felixfbecker

5

직접적인 경험이 없기 때문에 굵은 글씨로 된 것에 대해 사과드립니다. 그러나이 블로그 게시물 세트는 CouchDB의 문제를 해결하는 좋은 예입니다.

CouchDB : 사례 연구

본질적으로 textme 응용 프로그램은 CouchDB를 사용하여 폭발적인 데이터 문제를 처리했습니다. 그들은 많은 양의 아카이브 데이터를 처리하기에 SQL이 너무 느리고 CouchDB로 옮겼다는 것을 발견했습니다. CouchDB가 해결할 수있는 문제와 문제 해결 방법을 파악하는 전체 과정에 대해 설명합니다.


5

Postgresql과 Memcached에 저장하는 데 사용했던 일부 데이터를 Redis 로 옮겼습니다 . 키 값 저장소는 계층 적 개체 데이터를 저장하는 데 훨씬 적합합니다. ORM을 사용하여 BLOB을 RDBMS에 맵핑하는 것보다 훨씬 빠르고 개발 시간과 노력을 덜어 BLOB 데이터를 저장할 수 있습니다.

POCO 객체를 한 줄로 저장하고 검색 할 수 있는 오픈 소스 c # redis 클라이언트 가 있습니다.

var customers = redis.Lists["customers"]; //Implements IList<Customer>
customers.Add(new Customer { Name = "Mr Customer" });

키 값 저장소는 새 서버를 추가 한 다음로드를 균등하게 분할하여 새 서버를 포함 할 수 있으므로 '스케일 아웃'이 훨씬 쉽습니다. 중요한 것은 확장 성을 제한하는 중앙 서버가 없다는 것입니다. (단, 요청을 배포하려면 일관된 해싱 전략이 필요합니다).

Redis는 여러 클라이언트에게 빠르고 동시 적이며 원자적인 액세스를 제공하는 스테로이드의 '관리되는 텍스트 파일'이라고 생각하므로 텍스트 파일이나 내장 데이터베이스를 사용하는 데 사용한 모든 것이 이제 Redis를 사용합니다. 예를 들어, 우리의 모든 서비스에 대해 실시간 통합 롤링 오류 로그를 얻으려면 (우리에게 어려운 작업이었습니다), 이제 Redis 서버 사이드 목록에 오류를 미리 추가하여 몇 줄로만 수행 할 수 있습니다. 그런 다음 목록을 트리밍하여 마지막 1000 개만 유지하십시오.

var errors = redis.List["combined:errors"];
errors.Insert(0, new Error { Name = ex.GetType().Name, Message = ex.Message, StackTrace = ex.StackTrace});
redis.TrimList(errors, 1000);

4

직접 체험 한 경험 없지만 블로그 항목이 매우 흥미 롭습니다.


3

소프트웨어 도메인 객체 (예 : aSalesOrder, aCustomer ...)를 2 차원 관계형 데이터베이스 (행 및 열)에 매핑하려는 노력이 많은 코드를 저장 / 업데이트 한 다음 다시 여러 테이블에서 도메인 객체 인스턴스를 인스턴스화하는 데 많은 노력을 기울입니다. . 판매 주문 또는 고객 레코드와 같은 도메인 개체를 보거나 조작하기 위해 모든 조인, 디스크 읽기 등의 성능에 대한 언급은 말할 것도 없습니다.

우리는 오브젝트 데이터베이스 관리 시스템 (ODBMS)으로 전환했습니다. 이들은 나열된 noSQL 시스템의 기능을 능가합니다. GemStone / S (Smalltalk의 경우)가 그러한 예입니다. 여러 언어에 대한 드라이버가있는 다른 ODBMS 솔루션이 있습니다. 주요 개발자 이점 인 클래스 계층은 자동으로 데이터베이스 스키마, 서브 클래스 및 모두입니다. 객체 지향 언어를 사용하여 객체를 데이터베이스에 유지하십시오. ODBMS 시스템은 ACID 수준의 트랜잭션 무결성을 제공하므로 재무 시스템에서도 작동합니다.


3

M2M 시스템의 경우 MySQL (InnoDB)에서 cassandra로 전환했습니다. 기본적으로 각 장치에 대한 시계열 센서가 저장됩니다. 각 데이터는 (device_id, date) 및 (device_id, type_of_sensor, date)로 인덱싱됩니다. MySQL 버전에는 2 천만 행이 포함되어 있습니다.

MySQL :

  • 마스터-마스터 동기화 설정. 동기화 손실과 관련하여 몇 가지 문제가 발생했습니다 . 스트레스가 많았으며 처음에는 수정하는 데 몇 시간이 걸릴 수 있습니다.
  • 삽입 시간은 문제가되지 않았지만 데이터가 증가함에 따라 쿼리에 더 많은 메모리가 필요했습니다 . 문제는 지수가 전체적으로 고려된다는 것입니다. 필자의 경우 메모리에로드하는 데 필요한 인덱스의 매우 얇은 부분 만 사용했습니다 (장치의 소수만 자주 모니터링하고 최신 데이터에 있음).
  • 그것은이었다 백업 하드 . Rsync는 큰 InnoDB 테이블 파일에서 빠른 백업을 수행 할 수 없습니다.
  • 너무 많은 시간 (시간)이 걸리기 때문에 무거운 테이블 스키마를 업데이트 할 수 없다는 것이 곧 분명해졌습니다 .
  • 데이터를 가져 오는 데 몇 시간이 걸렸습니다 (인덱싱이 끝났더라도). 최선의 구조 계획은 항상 데이터베이스 사본 (데이터 파일 + 로그)을 몇 개 보관하는 것이 었습니다.
  • 이동 타 하나 개의 호스팅 회사에서하는 것은 정말 큰 문제였다 . 복제는 매우 신중하게 처리해야했습니다.

카산드라 :

  • MySQL보다 설치가 훨씬 쉽습니다.
  • 많은 RAM이 필요합니다. 2GB 인스턴스를 첫 번째 버전에서 실행할 수 없었으므로 이제 1GB 인스턴스에서 작동 할 수 있지만 아이디어가 아닙니다 (너무 많은 데이터 플러시). 우리의 경우 8GB면 충분합니다.
  • 데이터 구성 방법을 이해하면 저장이 쉽습니다. 요청은 조금 더 복잡합니다. 그러나 일단 당신이 그 주위를 돌아 다니면 정말 빠릅니다 (실제로 원하지 않으면 실수를 할 수 없습니다).
  • 이전 단계가 올바르게 수행 되었다면, 그것은 매우 빠르다.
  • 데이터가 백업되도록 구성되어있는 것 같습니다. 모든 새로운 데이터는 새로운 파일로 추가됩니다. 나는 개인적으로 좋지 않지만 매일 밤과 매번 시스템을 종료하기 전에 (일반적으로 업그레이드를 위해) 데이터를 플러시하므로 읽을 로그가 적기 때문에 복원 시간이 단축됩니다. 압축 된 파일은 많지 않습니다.
  • 데이터 가져 오기는 매우 빠릅니다. 호스트가 많을수록 더 빠릅니다. 기가 바이트의 데이터를 내보내고 가져 오는 것은 더 이상 문제가되지 않습니다.
  • 스키마를 갖지 않는 것은 매우 흥미로운 일입니다. 필요에 따라 데이터를 발전시킬 수 있기 때문입니다. 이는 동일한 컬럼 제품군에서 동시에 다른 버전의 데이터를 갖는 것을 의미 할 수 있습니다.
  • 호스트를 추가하는 것은 쉽지만 (빠르지는 않지만) 다중 데이터 센터 설정에서는 수행하지 않았습니다.

참고 : elasticsearch (lucene을 기반으로 한 문서 지향) 도 사용 했으며 NoSQL 데이터베이스로 간주해야한다고 생각합니다. 분산되고 안정적이며 종종 빠릅니다 (일부 복잡한 쿼리는 성능이 크게 저하 될 수 있음).


2

난 아니야 프로세스에서 호출 할 수있는 간단하고 무료 키-값 저장소를 사용하고 싶지만 Windows 플랫폼에는 그러한 것이 존재하지 않습니다. 이제 Sqlite를 사용하지만 Tokyo Cabinet과 같은 것을 사용하고 싶습니다. BerkeleyDB에는 라이센스 "문제"가 있습니다.

그러나 Windows OS를 사용하려는 경우 NoSQL 데이터베이스 선택이 제한됩니다. 그리고 항상 C # 공급자가있는 것은 아닙니다

MongoDB를 사용해 보았고 Sqlite보다 40 배 빠릅니다. 그래서 사용해야합니다. 그러나 여전히 간단한 프로세스 솔루션을 원합니다.


3
AC # 공급자는 이러한 데이터베이스에 기존 데이터베이스 ( "NoSQL")와 유사한 인터페이스가 없으므로 ADO.NET 인터페이스가 사각형 구멍에 둥근 페그가되기 때문에 대부분 관련이 없습니다.
MarkR

2
실제로 ADO.NET 인터페이스를 구현하는 공급자는 필요하지 않지만 db와 .NET 사이를 연결하려면 일종의 드라이버 / 제공자가 필요합니다. MongoDB에는 하나가 있지만 아직 완벽하지는 않습니다. 예를 들어 예외 처리에는 개선이 필요합니다.
Theo

redis @ code.google.com/p/servicestack/wiki/ServiceStackRedis에 대한 오픈 소스 C # 클라이언트가 있습니다 .'typed POCOs '를 텍스트 blob으로 저장할 수 있으며 redis 서버에 IList <T> 및 ICollection <T> 인터페이스를 제공합니다 사이드리스트 및 세트 등
mythz

2

나는 redis를 사용하여 여러 시스템에 로깅 메시지를 저장했습니다. 구현하기가 매우 쉬웠으며 매우 유용했습니다. 레디 스 정말 바위


2

고정 스키마가없는 것이 postgres 데이터베이스를 CouchDB 문서 데이터베이스로 교체했습니다. 각 문서에는 해당 문서에 액세스하는 데 사용되는 다양한 인덱스가 있습니다.


1

나는 과거에 Couchbase를 사용해 왔으며 재조정 문제와 다른 많은 문제가 발생했습니다. 현재 여러 프로덕션 프로젝트에서 Redis를 사용하고 있습니다. Redis 클러스터의 확장을 담당하는 Redis의 관리 서비스 인 redislabs.com 을 사용 하고 있습니다. 제공자 블로그에서 Redis를 사용하는 방법과 C # 객체를 Redis에 저장하는 방법을 보여주는 http://thomasjaeger.wordpress.com 블로그에서 객체 지속성에 대한 비디오를 게시했습니다 . 구경하다.


나는 이것이 지금까지 오래 걸렸음을 알고 있지만, 특히 재조정에서 어떤 문제가 있었습니까?
Seer

1

나는 이것을 읽고있는 누군가에게 3.0이 문 밖에 있다는 것을 다시 한번 Couchbase를 시도해 볼 것을 권한다. 초보자를위한 200 가지가 넘는 새로운 기능이 있습니다. Couchbase 서버의 성능, 가용성, 확장 성 및 손쉬운 관리 기능은 매우 유연하고 가용성이 높은 데이터베이스를 만듭니다. 관리 UI가 내장되어 있으며 API는 자동으로 클러스터 노드를 감지하므로 애플리케이션에서 DB로로드 밸런서가 필요하지 않습니다. 현재 관리되는 서비스는 없지만 AWS, RedHat Gears, Cloudera, Rackspace, CloudSoft와 같은 Docker Container 등에서 소파베이스를 실행할 수 있습니다. 재조정에 관해서는 구체적으로 언급 한 것에 달려 있지만 Couchbase는 설계된대로 노드 장애 후에 자동으로 재조정하지 않습니다. 그러나 관리자는 첫 번째 노드 장애에 대해 자동 장애 조치를 설정할 수 있으며 API를 사용하여 복제본 vbucket에 액세스하여 읽을 수 있도록하거나 RestAPI를 사용하기 전에 모니터링 도구로 장애 조치를 시행 할 수 있습니다. 이것은 특별한 경우이지만 수행 할 수 있습니다.

우리는 노드가 완전히 오프라인 상태이고 다시는 오지 않거나 새 노드가 자동으로 균형을 잡을 준비가되지 않는 한 거의 모든 모드에서 재조정하지 않는 경향이 있습니다. 다음은 가장 성능이 뛰어난 NoSQL 데이터베이스 중 하나가 무엇인지 파악하는 데 관심이있는 사람을 돕기위한 몇 가지 안내서입니다.

  1. 카우치베이스 서버 3.0
  2. 관리 안내서
  3. REST API
  4. 개발자 안내서

마지막으로 분산 쿼리에 대해 N1QL을 확인하는 것이 좋습니다.

  1. N1QL 튜토리얼
  2. N1QL 가이드

읽어 주셔서 감사합니다. 도움이 더 필요하면 저나 다른 사람들에게 알려주십시오!

오스틴


0

나는 과거에 Vertica를 사용했습니다. 열 압축에 의존하고 디스크 읽기 속도를 높이고 하드웨어를 최대한 활용하기 위해 스토리지 요구를 줄입니다. 빠른 데이터로드 및 높은 동시성으로 최소 지연 시간으로 더 많은 사용자에게 분석 데이터를 제공 할 수 있습니다.

이전에는 수십억 개의 레코드를 가진 Oracle 데이터베이스를 쿼리하고 있었으며 성능은 매우 부적절했습니다. SSD로 최적화 한 후에도 쿼리를 실행하는 데 8 ~ 12 초가 걸렸습니다. 따라서보다 빠른 읽기 최적화 된 분석 지향 데이터베이스를 사용해야한다는 느낌이 들었습니다. 린 서비스 계층 뒤에 Vertica Clusters를 사용하면 1 초 미만의 성능으로 API를 실행할 수 있습니다.

Vertica는 데이터를 프로젝션에 쿼리 실행을 최적화하는 형식으로 저장합니다. 구체화 된 뷰와 유사하게 프로젝션은 쿼리에 사용될 때마다 결과 세트를 계산하지 않고 디스크 또는 SSD에 저장합니다. 프로젝션은 다음과 같은 이점을 제공합니다.

  1. 저장 공간을 줄이기 위해 데이터를 압축 및 인코딩합니다.
  2. 데이터베이스 클러스터 전체의 배포를 단순화합니다.
  3. 고 가용성 및 복구 기능을 제공하십시오.

Vertica는 Segmentation을 사용하여 클러스터에 데이터를 분산시켜 데이터베이스를 최적화합니다.

  1. 분할은 데이터의 일부를 노드에 배치합니다.
  2. 모든 노드에 데이터를 균등하게 분배합니다. 따라서 각 노드는 쿼리 프로세스를 수행합니다.
  3. 쿼리는 클러스터에서 실행되며 모든 노드는 쿼리 계획을받습니다.
  4. 쿼리 결과가 집계되어 출력을 작성하는 데 사용됩니다.

자세한 내용은 Vertica 설명서 @ https://www.vertica.com/knowledgebase/ 를 참조 하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.