独自のTarantool機能



Tarantoolは非常に興味深いデータベースです。

その考えは、コンスタンチン・オシポフ・タランツールの報告書から得ることができます:1日あたり15億件のリクエストを処理する方法は?



このメモでは、Tarantoolを他の同様のソリューションと区別するユニークな機能に注目し、便利なツールにしたいと思います。

さらに、このオープンソースプロジェクトをどのように支援できるのか、なぜそれがクールなのかを説明します:)





タランツールとは



直接脳ローディングのキーワード

nosql、key-value、メモリ内、永続的、先行書き込みログ、スナップショット、マスター/スレーブレプリケーション



Tarantoolは成熟したプロジェクトです


TarantoolはMail.ruで開発され、そこで積極的に使用されています。

ある意味では、TarantoolはRamblerで開発されたNginxと比較することができ、しばらくしてオープンプロジェクトとしての名声とコミュニティからの評価を得ました。





Tarantoolの主な機能



まず、TarantoolはRedisのクローンではなく、特にMemcachedではないことを強調したいと思います。

Redisの場合、彼は精神的には似ていますが、機能はあまり似ていません。 Redisは一部のタスクに適していますが、Tarantoolは他のタスクに適しています。
  1. キースペース

    スペースはオブジェクトのコレクションです。 スペースは個別のテーブルと考えることができます。 同じコレクションには、原則として、同じタイプのエンティティがあるため、これは便利です。 エンティティの分離に関する同じRedisでは、キーにプレフィックスを追加することを提案しています( "user:1001"、 "session:9994513" )。 Tarantoolの各スペースには、独自のインデックスセットを設定できます。



  2. 整数キー

    文字列キーに加えて、Tarantoolは整数キー(32および64ビット)をサポートしています

    まず、32ビットまたは64ビットキーへのアクセスは、任意の長さのキーよりも高速であることは明らかです。 第二に、たとえば、従来の(SQL)データベースで数値IDを使用する場合に便利です。



  3. 二次インデックス

    ほとんどのキーバリューストアは、プライマリキーアクセスに制限されています。 Tarantoolでは、タプルの個々の属性を選択できます(このためには、フィールドにインデックスを付ける必要があります)。



  4. セカンダリインデックスは一意ではない場合があります

    これは、一意でないフィールドのクエリが多くの値を返す可能性があることを意味します。 例:「国コードRUSを持つすべてのユーザーを返す」



  5. 複合インデックス

    単一のセカンダリインデックスに複数のタプルフィールドを含めることができます。 これは、「従来の」(SQL)データベースの複合インデックスの完全な類似物です。 複合インデックスを使用すると、部分一致(ワイルドカード)でクエリを作成できます。 インデックスの最初の部分のみがわかっている場合、Tarantoolはすべての適切な値を返します。



  6. 範囲範囲

    ほとんどのキー値ストレージとは異なり、Tarantoolには値の範囲を取得する機能があります(整数キーの場合のみ、TREEなどのインデックスを使用する場合のみ)

    ところで、これはストアド関数によって行われます(以下を参照)



  7. Luaのストアド関数

    Tarantoolでは、ストアド関数をLuaで作成できます。 LuaはJITコンパイルをサポートする非常にシンプルな言語です。 要するに、彼らは非常に高速です。 ストアドファンクションを使用すると、かなり複雑な構造のデータスキームを実装できます。 たとえば、fifoまたはいくつかのリングバッファ。



  8. データベース内のバックグラウンドプロセス

    Luaでは、個々のリクエストを処理できるだけでなく、バ​​ックグラウンドハンドラーも実装できます(協調マルチタスクモード)。



  9. シンプルなSQLクライアント

    まず、開発中の実験や内省のために使用する価値があります。 SELECT * FROM t0 WHERE k0 = 42



    などの単純なSQLクエリがサポートされています。





今すぐTarantoolの使用を開始する方法

  1. TarantoolにはシンプルなSQLクライアントがあります

    これを使用すると、1行のコードを記述することなく、要求を作成して実験することができます。
  2. TarantoolはMemcachedプロトコルをサポートしています

    Tarantoolを最適なMemcachedとして使用します(ディスク上のスナップショットとトランザクションログを使用)。
  3. python、ruby、perl、php、java、CにTarantoolのクライアントライブラリがあります

    プロジェクトでTarantool機能を使用する方法を考えてください。




どうすればあなたを助けることができますか?



Tarantoolは、長い間実際に使用されてきた成熟したシステムです。



しかし、オープンプロジェクトとして、比較的最近存在します。 したがって、インターネット上の情報はほとんどなく、コミュニティは小さく、ドキュメントは完璧ではなく、O'Rellyは本を出版していません...



そしてこれはいいです! 実際、すでに広く知られているプロジェクトでは、何か重要なことを行うのは困難です。すべてが私たちの前で行われます。 しかし、ここで-いいえ!



したがって、この有望なプロジェクトの開発に大きく貢献することができます。

初期のフォロワーが常に勝ちます。 このプロジェクトは、たとえばNginxとして顕著になります。



今すぐ参加すると、栄光の光線があなたに触れます:)





参照資料



All Articles