
Tarantool
とRedis
またはTarantool
とMemcached
ますか? 決定しやすいように、主な違いを見てみましょう。
in-memory
データベースに関しては、 Redis
、 Memcached
[1]と比較して、文字列だけでなく他のタイプのデータを使用するだけでなく、複雑なデータ操作を実行するキャッシュデータの保存機能Redis
改善されています。 Tarantoolでは、データグループの操作がさらに複雑になり、 (persistence)
とインデックス作成の観点から、速度とユーザーサポートは言うまでもなく、 Tarantool
Redis
よりも優れています[2] 。 ストレージファシリティの開発、およびトランザクションと大量のデータを処理する機能を考えると、 Tarantool
はアプリケーションのメインデータベースとして効果的に使用できます-率直に言って、このようなRedis
偉業は常に肩にTarantool
いるわけではありません[3] 。
Redis
の主な欠点は、サーバーRAMの量を超えるデータボリュームを処理できないことです。 Tarantool
では、ストレージエンジンを選択できます。
Memtx
は、従来のin-memory
データベースとして機能し、- または
Vinyl/Disk
と組み合わせてディスクを使用できます。
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] 。
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
について質問がある場合は、コメントを記入してください。
参照資料
- http://www.infoworld.com/article/3063161/application-development/why-redis-beats-memcached-for-caching.html
- https://hackernoon.com/tarantool-vs-redis-38a4041cc4bc
- https://news.ycombinator.com/item?id=3010345
- https://medium.com/@denisanikin/tarantool-vinyl-200k-transactions-per-second-on-a-disk-based-database-c5f3cbba6543
- https://medium.com/@denisanikin/when-and-why-i-use-an-in-memory-database-or-a-traditional-database-management-system-5737f6d406b5
- https://hackernoon.com/tarantool-vs-redis-38a4041cc4bc
- https://medium.com/tarantool-database/dbms-as-an-application-server-779402dbf485
- https://medium.com/@denisanikin/how-to-save-one-million-dollars-on-databases-with-tarantool-5eb1596ec628
- https://github.com/tarantool/vshard