私はArangoDBについて読んでいて、それはもっと興味深いですが、ドキュメントのどこでArangoDBがどのようにスケーリングするかを見つけることができません。ArangoDBはスケーリングし、MongoDBやCouchDBのようなシャーディングを使用できますか?
2 に答える
編集
ArangoDBは、バージョン2.0以降のシャーディングをサポートしています。
バージョン3.0では、 VelocyPackが提供されます。これは、コンパクト性、解析可能性、および構成可能性のために最適化されたバイナリJSON表現です。これは、形状の概念/形状のJSONに取って代わります。
/編集
私はArangoDBのチーフアーキテクトです。
monkegjinniは正しいです。ArangoDBはシャーディングをサポートしていませんでしたが、レプリケーションをサポートしていました。なんで?
ショートバージョン:
グラフやドキュメントなどのかなり複雑なデータモデルのサポートを提供すると、シャーディングの動作と競合します。ただし、最新のSSDとコンピューターの効率により、ほとんどすべてのプロジェクトでシャーディングが不要になったと考えています。今日のコンピューターは、すべてのデータを単一のノードに簡単に保存します。これらのプロジェクトに必要なのは、ArangoDBでサポートされている負荷分散のためのレプリケーションです。
ロングバージョン:
実際には、スケーリングの問題を分離する必要があります。
最初の問題は、リクエストの負荷を分散するために、リクエストを複数のサーバーに分散することです。
ArangoDBは、書き込みの同期レプリケーションと読み取り要求の分散を通じてこれをサポートします。
ほとんどのデータベースシステムは非常によく似たパスをたどることに注意してください。つまり、制限された整合性保証を使用してリクエストの配布をサポートするか、1つのノードでのみ書き込みを許可して読み取りリクエストを配布します。書き込み要求を配布し、完全な整合性をサポートすることは効率的に行うことが不可能であるため、この制限があります。そして、それを非効率的に行うと、配布を通じて達成したかった利益が打ち消されます。
2番目の問題は、データを複数のサーバーに分散して、より大きなデータセットを許可することです。
ArangoDBは、複数のサーバーへのデータの分散をサポートしていません。
複数のサーバーにデータを分散するには常にコストがかかるため、この決定を下しました。
この価格は非常に明確な場合があります。たとえば、データモデルが非常に制限されている可能性があります。これは、DynamoやRIAKなどのキーバリューストアがたどったルートです。ここでは、データモデルとサポートされているクエリが非常に単純であるため、要求された値が存在するサーバー(または少数のサーバー)にクエリを送信することが常に可能です。
このアプローチは一部のアプリケーション(Amazonデータベースなど)で有効であると確信していることに注意してください。ただし、実際に大量のデータを格納する必要があるため、多数のサーバーにデータを分散する必要があるため、アクセスパターンをKey-Valueに制限する必要があるアプリケーションの数は非常に少ないと考えています。
または、価格を非表示にすることができます。これは、たとえば、データが分散されており、データベースシステムが一般的なクエリを許可している場合です。その場合、クエリはすべてのサーバーに分散する必要があります(探しているデータがいずれかのサーバーに存在する可能性があるため)。そのため、クエリは非効率になります。
ArangoDBのアプローチは、ほとんどを1つのサーバーに詰め込むことです(ArangoDBは複数のサーバーをサポートしていますが、可用性をサポートしています)。このために、2つの主要な戦略を使用します。
1つの戦略は、SSDを利用することです。SSDの容量は信じられないほどの速度で大きくなっていることに注意してください(2台目のサーバーにかかる費用よりもはるかに少ない金額で1テラバイトのSSDを購入できます)。また、耐久性(SSDに書き込むことができるデータの総量)はペタバイトに達します(ベンダーが最終的にウェアレベリングアルゴリズムを正しく取得するようになりました)。したがって、SSDの信頼性はもはや問題ではありません。また、これらのSSDのパフォーマンスは非常に優れています(通常のディスクよりもメインメモリに近い)。
もう1つの戦略は、データを効率的に保存することです。ArangoDBは、図形を使用してドキュメントを保存します。図形は、ドキュメントが持つ属性と属性タイプの情報です。同じ形状のすべてのドキュメントは、この情報の表現を共有します。これは、JSONまたはBSON表現が必要とするよりも少ないスペースにドキュメントを保存できることを意味します。
私が理解しているように、シャーディング(バージョン2.0より前)は許可されていませんが、レプリケーションは許可されています。リンクから
AvocadoDBは簡単に複製を許可します。私たちは「管理者ゼロの原則」が好きです。AvocadoDBを使用して複製を作成するのは非常に簡単です。IPアドレスを挿入して実行してください。
次のレプリケーションタイプは、バージョン2を対象としています。
- マスター-マスター同期、
- マスター-マスター非同期、
- マスタースレーブ同期、
- マスタースレーブ非同期