web-dev-qa-db-ja.com

大企業がRiakやCouchDBを使用する代わりにMnesiaを使用する理由

KlarnaやWhatsappのような2つの大企業が、メモリデータベースとしてMnesiaを使用していることがわかります(2GBの制限でMnesiaを使用してデータを保持する方法がわかりません)。私の質問は、なぜこれらのような企業が、RiakやcouchDBの代わりにMnesiaを使用するのかということです。どちらもErlangであり、どちらのデータベースもメモリデータベースでより高速にサポートされ、痛みのない永続性が向上し、さらに多くの機能がサポートされます。ここで何かが恋しいですか?

17
securecurve

あなたはいくつかの重要な点を見逃しています:

まず第一に、mnesiaには2ギガバイトの制限はありません。 32ビットアーキテクチャに制限されていますが、実際の作業にはほとんど存在しません。また、64ビットでは、2ギガバイトに制限されません。私は数百ギガバイトのオーダーのデータベースを見てきました。唯一の問題は、それらの初期起動時間です。

Mnesiaは以下を処理するように構築されています。

  • 非常に低遅延のK/Vルックアップであり、必ずしも線形化できるとは限りません。
  • 線形化可能な変更を伴う適切なトランザクション(CAP定理のC)。これらは比較的まれであると予想されるため、はるかに悪いレイテンシで実行できます。
  • オンラインスキーマ変更
  • クラスター内でノードに障害が発生した場合でも存続します(クラスターが小さい場合、最大で10〜50台のマシンなど)

データはすでにErlangシステムにあるため、別のプロセスを回避するように設計されています。データログのようなクエリ用のQLCがあります。また、Erlangの用語を保存することもできます。

上記が必要な場合、Mnesiaはうまくいきます。その制限は次のとおりです。

  • 2テラバイトを超えるメモリを搭載したマシンを入手することはできません。また、2つのテラを最初からロードするのは遅くなります。
  • これはCPシステムであり、APシステムではないため、ノードが失われると手動で介入する必要があります。トランザクションも必要ない場合があります。また、システムにノードをシームレスに追加できるようにすることもできます。このためには、Riakがより良い選択です。
  • 多くのプロセスがトランザクション内の同じ行にアクセスしようとすると問題が発生する楽観的ロックを使用します。

私の通常のコツは、ErlangシステムのMnesiaから始めて、データサイズが大きくなるにつれて別のシステムに切り替えることです。データサイズの増加が遅い場合は、Mnesiaのすべてをメモリに保持し、非常に迅速に起動して実行できます。

38

非常に注意深く。 mnesiaディスクテーブルのサイズに実際の制限はありません。

  • Mnesiaはriak(商用利用)とは異なり無料です。
  • キャプチャ定理について読んでください。プレーンな記憶処理をバックエンドとして使用して、独自のca、cp、またはapデータベースを構築できます。ただし、couchdbなどの特定のdbmsを使用する場合は、すぐに使用できるように設計されています。そして、あなたはそれを作ることはできません、例えば、ca(私が知る限り)

私の知る限り、 riakも (コメントのBitCaskに関する注記を参照してください)CouchDBはインメモリデータベースをサポートします。 Riakで間違っている可能性がありますが、CouchDBで作業しているので、非常に確信しています。

エンジニアは、別の問題を解決するため、RiakやCouchDBではなく記憶喪失を選択しています。

彼らが大企業であるかどうかは、これの要因ではありません。

3
Jan Lehnardt