こんにちは、
私の名前はElisabeteで、NuoDBのテクニカルサポートエンジニアです。私は私たち自身のフォーラムへのあなたの投稿を介してこれに答えたかもしれないと信じていますが、興味のある人のためにここでも答えています。
最初に...NuoDBアーキテクチャ/レイアウトに関するミニレッスン:
最も基本的なNuoDBのセットアップには次のものが含まれます。
- ブローカーエージェント
- トランザクションエンジン(TE)
- アーカイブディレクトリに接続されたストレージマネージャー(SM)
ブローカーエージェントは、ドメイン内のすべての可動部分(NuoDBプロセスをホストするマシンのコレクション)を追跡し、次に使用可能なトランザクションエンジンの接続情報をクライアントアプリケーションに提供します。
トランザクションエンジンは、着信SQL要求を処理し、トランザクションを管理します。
ストレージマネージャーは、「ディスク」(アーカイブディレクトリ)との間でデータの読み取りと書き込みを行います。
これらのコンポーネントはすべて単一のマシンに常駐できますが、最適なセットアップでは、複数のホストマシンに分散させることができます(各プロセスがホストの使用可能なCPU / RAMを最大限に活用できるようにします)。また、各コンポーネントの1つだけで実行することも可能ですが、これは間違いなく多い場合です。追加のブローカーは復元力を提供し、追加のTEはパフォーマンス/速度を向上させ、追加のSMは耐久性を保証します。
では、ストレージについて話しましょう。
これは、ストレージマネージャが書き込んでいる「アーカイブディレクトリ」です。現在、次の3つのストレージモードをサポートしています。
- ローカルファイルシステム
- アマゾンウェブサービス:シンプルストレージボリューム(S3)、Elastic Block Storage(EBS)
- Hadoop分散ファイルシステム(HDFS)
したがって、NuoDBがHDFSでどのように機能するかを詳しく説明すると、HDFSレイヤーが書き込んでいる複数のマシンについてはわかりません。SMに関する限り、データアトムの読み取りと単一のディレクトリへの書き込みを行っています。HDFSレイヤーは、それが存在するマシンのクラスターとの間でデータを分散および取得する方法を決定します。
そして最後に、レイテンシーの問題に対処します。
これが、リモートストレージデバイスを導入するときは常に、メモリとの間でアトムを読み書きするときにSMがさらに移動する必要があるため、必然的にある程度の追加のレイテンシが発生することです。HDFSは、データの分割、配布、取得、および再アセンブルを魔法のように行う必要があるため、もう少し追加される可能性があります。ネットワーク速度などのその不一致に追加します。
得られたディスク容量は移動時間のコストを上回っていると思いますが、これはケースバイケースで決定する必要があります。
さて、そのすべてが言った...私はTEとSMの両方がローカルメモリにデータをキャッシュする機能を持っているとは言いませんでした。このキャッシュのサイズは、各プロセスを起動するときに設定できるものです。NuoDBは、マルチバージョン同時実行制御(MVCC)とすべてのプロセス間のほぼ一定の通信ストリームの組み合わせを使用して、キャッシュに保持されているデータがシステム内で発生するすべての変更で最新に保たれるようにします。ガベージコレクションは、キャッシュが限界に近づいたときに、使用頻度が最も低い順序でアトムを開始およびクリアします。
TEは、最も頻繁に参照するデータを保持し、兄弟TEから持っていないデータのコピーを取得できるため、これらすべてが遅延の削減に役立ちます。SMにデータを要求することに頼る場合、SM(またはその兄弟SMの1つ)が要求されたデータのコピーをローカルキャッシュに保持し、アーカイブディレクトリへの移動を節約する可能性があります。
ふぅ..それはたくさんあり、私はいくつかの概念以上を絶対に理解しました。これらのトピックは、メインのWebサイトで入手できる新しい一連のホワイトペーパー(および新しい「グリーンブック」)を介してさらに詳しく説明されています。私は現在、これらすべてを説明するのに役立ついくつかのビジュアルガイドにも取り組んでいます。
NuoDBについて詳しく知りたい場合、または質問に完全に答えられなかった場合は、NuoDBコミュニティフォーラムから直接連絡してください(投稿への返信は少し速くなります)。
ありがとう、エリザベテ
NuoDBのテクニカルサポートエンジニア