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

画像


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


タランツールとレディス


in-memoryデータベースに関しては、 RedisMemcached [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])を排除しました。


RedisTarantool Luaスクリプトをサポートします。つまり、データに複雑な機能を適用できます。 さらに、両方のデータベースにLuaRocksエコシステムの特定のパッケージを追加できます。 しかし、 TarantoolTarantoolRedisバニラLua実装とは異なり、より高速なLuaJIT使用します。 Tarantool 、ネットワークおよび外部サービスにアクセスできる本格的なノンブロッキングLuaサーバーアプリケーションも装備されています。 RedisLua実装はサンドボックスに配置され、スクリプトはブロックされます[6] 。 つまり、 RedisLuaプロセスの完了を待つとパフォーマンスが低下する可能Tarantoolが、 Tarantoolではそのような問題はありません:1つの呼び出しが外部リソースでブロックされている間、同時に実行されている別のアクティブな呼び出しが機能し続けます。


もちろん、 TarantoolRedisを比較することは、相対的なスループットと遅延レベルについて簡単に言及しなければ完全ではありません。 Yahoo! Cloud Server Benchmark (YCSB)ベンチマークを使用した単一ノードでのテスト Yahoo! Cloud Server Benchmark (YCSB)は、6つの主なタイプのロード( update heavyread mostlyread onlyread latestshort rangesread-modify-write )を実行し、 HashおよびTree Tarantoolに関して、 Tree TarantoolすべてのタイプのロードでRedisよりもTree Tarantoolていることを示しました。 また、ほとんどの場合、 Tarantool latency Tarantool短くlatencyます。 これは、フォワードロギングの有無にかかわらずロードに適用されます。


Tarantoolの利点は、データベース管理システム(DBMS)と本格的なアプリケーションサーバー[7]が連携して動作するためです。 個別に使用できるこのサーバーには、追加のツールがすべて含まれていますが、それらはRedisにはありません。 TarantoolアプリケーションTarantoolの興味深い機能の1つは、他の遅いデータベースと対話して、 Tarantool格納されている情報をキャッシュし、作業を高速化する機能です。これは、 OracleIBM DB2MySQLMS SQL ServerPostgreSQL適用されOracle


Tarantool 、データのオーケストレーションと仮想化を行い、データへのアクセスを加速します。 ほとんどすべてのエンタープライズアプリケーションとサービスのアーキテクチャでTarantoolを使用すると、統合とスケーラビリティのコードベースを削減でき、サーバーと機器の要件も削減できます。 たとえば、単一のTarantoolサーバーで従来のDBMS実行しているTarantoolサーバーを置き換えることができるため、マイクロサービスとアプリケーションを迅速にスケーリングできます[8]


TarantoolとMemcached


Memcached (2003)Tarantool (2009)in-memoryキャッシュベースのデータベースの2つの異なる世代です。 したがって、ある意味では、それらを比較することは公平ではありません。最近の技術は通常、以前の技術よりも優れているからです。 しかし、このテクノロジーが後で登場したとしても、それが何らかのタスクにより適しているという意味ではありません。 特定のニーズには、より高度なツールが望ましい場合があります。 新しいアプリケーション用にMemcachedTarantoolどちらを選択するか、またはおそらくレガシー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で完全なプログラムをプログラミングできます。


スケーリング


MemcachedTarantoolは、新しいマシンを追加することで簡単にスケーリングできますが、ノード間でデータを分散する方法に注意する必要があります。 さらに、 Tarantoolには組み込みのシャーディングメカニズムがあり、クラスターを自動的にスケーリングできます。 このメカニズムの詳細については、 こちらをご覧ください


✽✽✽


ご覧のTarantool MemcachedTarantool選択する際には、同期の問題からスケーリングに至るまで、多くの点を考慮する必要があります。 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


Source: https://habr.com/ru/post/J352760/


All Articles