TarantoolとRedisおよびMemcachedを比較する

画像







Tarantool



Redis



またはTarantool



Memcached



ますか? 決定しやすいように、主な違いを見てみましょう。







タランツールとレディス



in-memory



データベースに関しては、 Redis



Memcached



[1]と比較して、文字列だけでなく他のタイプのデータを使用するだけでなく、複雑なデータ操作を実行するキャッシュデータの保存機能Redis



改善されています。 Tarantoolでは、データグループの操作がさらに複雑になり、 (persistence)



とインデックス作成の観点から、速度とユーザーサポートは言うまでもなく、 Tarantool



Redis



よりも優れています[2] 。 ストレージファシリティの開発、およびトランザクションと大量のデータを処理する機能を考えると、 Tarantool



はアプリケーションのメインデータベースとして効果的に使用できます-率直に言って、このようなRedis



偉業は常に肩にTarantool



いるわけではありません[3]







Redis



の主な欠点は、サーバーRAMの量を超えるデータボリュームを処理できないことです。 Tarantool



では、ストレージエンジンを選択できます。









Vinyl



使用すると、使用可能なRAMサイズの10〜100倍のボリュームを持つデータを操作できます[4] 。 これは、より一般的なBツリーの代わりにLSMツリー(log-structured merge tree)



を使用することで達成され、最終的にランダムな書き込み操作(ディスクエンジンのボトルネック[5])を排除しました。







Redis



Tarantool



Lua



スクリプトをサポートします。つまり、データに複雑な機能を適用できます。 さらに、両方のデータベースにLuaRocks



エコシステムの特定のパッケージを追加できます。 しかし、 Tarantool



Tarantool



Redis



バニラLua



実装とは異なり、より高速なLuaJIT



使用します。 Tarantool



、ネットワークおよび外部サービスにアクセスできる本格的なノンブロッキングLua



サーバーアプリケーションも装備されています。 Redis



Lua



実装はサンドボックスに配置され、スクリプトはブロックされます[6] 。 つまり、 Redis



Lua



プロセスの完了を待つとパフォーマンスが低下する可能Tarantool



が、 Tarantool



ではそのような問題はありません:1つの呼び出しが外部リソースでブロックされている間、同時に実行されている別のアクティブな呼び出しが機能し続けます。







もちろん、 Tarantool



Redis



を比較することは、相対的なスループットと遅延レベルについて簡単に言及しなければ完全ではありません。 Yahoo! Cloud Server Benchmark (YCSB)



ベンチマークを使用した単一ノードでのテスト Yahoo! Cloud Server Benchmark (YCSB)



は、6つの主なタイプのロード( update heavy



read mostly



read only



read latest



short ranges



read-modify-write



)を実行し、 Hash



およびTree Tarantool



に関して、 Tree Tarantool



すべてのタイプのロードでRedis



よりもTree Tarantool



ていることを示しました。 また、ほとんどの場合、 Tarantool



latency



Tarantool



短くlatency



ます。 これは、フォワードロギングの有無にかかわらずロードに適用されます。







Tarantool



の利点は、データベース管理システム(DBMS)



と本格的なアプリケーションサーバー[7]が連携して動作するためです。 個別に使用できるこのサーバーには、追加のツールがすべて含まれていますが、それらはRedis



にはありません。 Tarantool



アプリケーションTarantool



の興味深い機能の1つは、他の遅いデータベースと対話して、 Tarantool



格納されている情報をキャッシュし、作業を高速化する機能です。これは、 Oracle



IBM DB2



MySQL



MS SQL Server



PostgreSQL



適用されOracle









Tarantool



、データのオーケストレーションと仮想化を行い、データへのアクセスを加速します。 ほとんどすべてのエンタープライズアプリケーションとサービスのアーキテクチャでTarantool



を使用すると、統合とスケーラビリティのコードベースを削減でき、サーバーと機器の要件も削減できます。 たとえば、単一のTarantool



サーバーで従来のDBMS



実行しているTarantool



サーバーを置き換えることができるため、マイクロサービスとアプリケーションを迅速にスケーリングできます[8]







TarantoolとMemcached



Memcached (2003)



Tarantool (2009)



in-memory



キャッシュベースのデータベースの2つの異なる世代です。 したがって、ある意味では、それらを比較することは公平ではありません。最近の技術は通常、以前の技術よりも優れているからです。 しかし、このテクノロジーが後で登場したとしても、それが何らかのタスクにより適しているという意味ではありません。 特定のニーズには、より高度なツールが望ましい場合があります。 新しいアプリケーション用にMemcached



Tarantool



どちらを選択するか、またはおそらくレガシーMemcached



インストールのサポートを継続するかどうかを検討しているという前提に基づきます。







キャッシュとスマートキャッシュ



Memcached



のアプローチはシンプルで優れています。 それを使用するアプリケーションは、 Memcached



に要求されたデータがあるかどうかを確認してから、それに関連付けられているより遅いデータベースを呼び出します。 ただし、 Memcached



と関連付けられたデータベースは、どちらも複製されず、アプリケーションがそれらと個別にやり取りするため、どちらか一方の更新に失敗したために同期していない場合があります。 Tarantool



この問題は「スマート」キャッシュを使用して解決されます。更新は、共役データベースの更新が成功した後にのみ完了します。 つまり、アプリケーションは2つのレベルと対話するのではなく、共役データベースの更新を担当するTarantool



とのみ対話します。 さらに、データベースサーバーと同時に動作するデータ処理Lua



サーバーアプリケーションにいつでも接続できます。







読み書き



2つのキャッシュ方法の主な違いは、関連するデータベースで読み取りおよび書き込み操作を処理する能力です。 Memcached



、読み込み時の負荷を減らすように設計されていますが、書き込み時の負荷を減らすことはありません。 Tarantool



には優れた読み取り処理もあります。 CPU



が高いため、低速DBMSの高価なレプリカを削減できます。 同時に、 Tarantool



書き込み操作を処理するための高度な機能を備えています。 ディスクに同期的に書き込むため、ディスクDBMSを置き換えることができます。 さらに、 Tarantool



書き込み操作Tarantool



ACID



完全ACID









コールドスタート



Memcached



起動すると、データが存在しないため、すべての選択操作を共役データベースに直接渡す必要があります。 Tarantool



保存されたファイルからデータを回復することTarantool



これを解決しています。







使いやすさ



Memcached



はインストールが簡単で、 GET



およびSET



要求をすばやく実行できます。これは、状況によっては十分です。 Tarantool



も簡単にインストールできますが、より高度な機能により、より広範な構文を備えています。 ただし、 Tarantool



する場合は、マイクロサービスから、前述のACID



対応する高負荷のトランザクションデータ処理まで、さまざまな分野でTarantool



を使用できます。







独立



Memcached



は、他のデータベースをサポートするために作成されました。 Tarantool



は他のデータベースと連携して機能しますが、完全に独立して機能することができます。これはキャッシュソリューションでは一般的ではありません。 これは、信頼性の高いデータストレージ、本格的なアプリケーションサーバー、 ACID



トランザクション、RAMを超えるボリュームのデータを処理する機能の助けを借りて達成されます。 実際、 Tarantool



はリレーショナルDBMSから独立してTarantool



するだけでなく、リレーショナルDBMSの形で追加のバックエンドなしで実行できます。 従来のストアドプロシージャと同じ方法で、 Lua



で完全なプログラムをプログラミングできます。







スケーリング



Memcached



Tarantool



は、新しいマシンを追加することで簡単にスケーリングできますが、ノード間でデータを分散する方法に注意する必要があります。 さらに、 Tarantool



には組み込みのシャーディングメカニズムがあり、クラスターを自動的にスケーリングできます。 このメカニズムの詳細については、 こちらをご覧ください







✽✽✽







ご覧のTarantool



Memcached



Tarantool



選択する際には、同期の問題からスケーリングに至るまで、多くの点を考慮する必要があります。 Tarantool



について質問がある場合は、コメントを記入してください。







参照資料







  1. http://www.infoworld.com/article/3063161/application-development/why-redis-beats-memcached-for-caching.html
  2. https://hackernoon.com/tarantool-vs-redis-38a4041cc4bc
  3. https://news.ycombinator.com/item?id=3010345
  4. https://medium.com/@denisanikin/tarantool-vinyl-200k-transactions-per-second-on-a-disk-based-database-c5f3cbba6543
  5. https://medium.com/@denisanikin/when-and-why-i-use-an-in-memory-database-or-a-traditional-database-management-system-5737f6d406b5
  6. https://hackernoon.com/tarantool-vs-redis-38a4041cc4bc
  7. https://medium.com/tarantool-database/dbms-as-an-application-server-779402dbf485
  8. https://medium.com/@denisanikin/how-to-save-one-million-dollars-on-databases-with-tarantool-5eb1596ec628
  9. https://github.com/tarantool/vshard



All Articles