sql >> データベース >  >> NoSQL >> MongoDB

Aerospikeを使用した人はいますか? MongoDBと比較してどうですか?

    私はAerospike、MongoDB、Redisを使用し、他の多くのNoSQLデータベースをテストしました。 Aerospikeはその機能が非常に優れていると思いますが、MongoDBとは異なります。すべては、データベースの使用を計画している目的によって異なります。さまざまなデータベースを何に使用しているかの例を示します。また、それらの違いを調べて、Aerospikeの利点について説明することもできます。

    MongoDB

    SQLの代替としてMongoDBを使用しています。私のMongoDBデータベースには、さまざまなフィールドがあります。多くの場合、フィールドは変更されており、さまざまなフィールドについてランダムにクエリを実行する必要があります。これは非常に構造化されていないデータベースであり、MongoDBはその点で素晴​​らしいです。また、MongoDBを標準のKey-Valueストアとして使用しました。パフォーマンスは良好ですが、トランザクションスケールとデータベースサイズスケールの両方でMongoDBのパフォーマンスが最適ではありません。確かに、データベースはもう少し最適化されている可能性がありますが、さまざまな状況でMongoDBを正しく構成するためのドキュメントを見つけるのは非常に困難です。

    Redis

    Redisは純粋なKey-Valueストアです。 Redisの最大の問題は、それが純粋にメモリ内にあることです(ディスクをバックアップとして使用しますが、使用可能なメモリよりも多くの情報を保存することはできません)。用途としては非常に高速です。私は個人的に小さなトランザクションデータベースに使用しています。特定のユーザーに対してイベントが発生した回数をカウントするなど、キーに対して非常に単純な機能を実行します。また、さまざまな値にマップする必要があるメモリ内ルックアップもすばやく実行します。 Redisは小さなデータセットに最適なツールであり、非常に高速です。設定も非常に簡単です。

    エアロスパイク

    スケーリングするときは、個人的にAerospikeを使用してRedisを置き換えます。私の理解では、それはより多くに使用することができます。 Redisと同様に、AerospikeはKey-Valueストアです。オープンソース版は、Redisがサポートしていないセカンダリインデックスもサポートしていると思います(本番環境ではセカンダリインデックスを使用していませんが、テストはほとんど行っていません)。

    Aerospikeの最大の機能は、拡張性です。 Aerospikeを調べるときに解決する必要があった最大の問題は、非常に高速な状態を維持しながら、大規模なデータセットを処理するようにシステムをスケーリングすることでした。私がAerospikeを使用しているプロジェクトには、速度に関する非常に厳しい要件があります。私は通常、3〜4のデータベース検索とその他の処理を行い、50ミリ秒未満のトランザクション時間を必要とします。いくつかのルックアップは、300GB以上のデータセットで行われます。このデータを保持し、妥当な時間内にアクセスできるようにするための解決策を見つけることができませんでした。 300GB以上のRAMを搭載したマシンがないと、Redisは明らかに機能しません。 MongoDBは、300GBよりはるかに小さいサイズで非常にパフォーマンスが低下し始めました。そこで、Aerospikeを試してみたところ、すべてをうまく処理できました。 Aerospikeの最も優れている点は、データセットが大きくなるにつれて、必要なときに新しいボックスを立てる以上のことをする必要がなくなったことです。速度は一定に保たれています。

    Aerospikesのドキュメントも非常に優れています。構成するのはそれほど難しくなく、発生した問題の答えを見つけるのは非常に簡単です。

    結論

    それで、Aerospikeは彼らが主張するのと同じくらい良いですか?個人的に、私は主張されたものに他ならないものを見てきました。 100万TPSに拡張する必要はありませんでしたが、十分なハードウェアがあれば可能だと思います。また、AerospikeとMongoDBの速度の違いを示す数値だと思います。 Aerospikeは、MongoDBよりもはるかに「構成」および「計画」されたデータベースです。このため、AerospikeはMongoDBよりも大規模にはるかに高速になります。動的に変更できるMongoDBとは異なり、単一の(または、セカンダリインデックスの場合は数百の)インデックスについてのみ心配する必要があります。あなたが本当に尋ねる必要がある質問は、あなたがあなたのデータベースで何を達成しようとしているのかということです。次に、どのデータベースがニーズに最も適しているかを調べます。スケーラブルで高速なKey-Valueストアデータベースが必要な場合は、Aerospikeがおそらく最高だと思います。

    ご不明な点がある場合や、ご不明な点がございましたら、お気軽にお問い合わせください。私はおそらくあなたを助けることができるでしょう。



    1. 開発ツールでのAPIエンドポイント保留中のリクエストの投稿

    2. Redisですべてのキーを取得する方法

    3. サーバー側のjavascript関数にはmongoDBのパフォーマンスの問題がありますか?

    4. MongoDBで配列の順序を変更するにはどうすればよいですか?