Tarantoolは非常に興味深いデータベースです。
その考えは、コンスタンチン・オシポフ・タランツールの報告書から得ることができます:1日あたり15億件のリクエストを処理する方法は?
このメモでは、Tarantoolを他の同様のソリューションと区別するユニークな機能に注目し、便利なツールにしたいと思います。
さらに、このオープンソースプロジェクトをどのように支援できるのか、なぜそれがクールなのかを説明します:)
タランツールとは
直接脳ローディングのキーワード
nosql、key-value、メモリ内、永続的、先行書き込みログ、スナップショット、マスター/スレーブレプリケーション
- これは非常に高速なメモリ内データベースです。
- キー構造化された値データモデル
各値は、任意の数のフィールドのタプルです。
例:
(101, "johnsmith", "25Ezk62$i2Z12QYY", "USA")
(102, "ivankuznetsov", "35Fal73$y3x23KZZ", "RUS")
- タプルの最初の要素は、タプル全体にアクセスするために使用される主キーです
- 読書は常に記憶から
- メモリ内のデータは、ディスク上のトランザクションログとスナップショットによって保護されます
Tarantoolは成熟したプロジェクトです
TarantoolはMail.ruで開発され、そこで積極的に使用されています。
ある意味では、TarantoolはRamblerで開発されたNginxと比較することができ、しばらくしてオープンプロジェクトとしての名声とコミュニティからの評価を得ました。
Tarantoolの主な機能
まず、TarantoolはRedisのクローンではなく、特にMemcachedではないことを強調したいと思います。
Redisの場合、彼は精神的には似ていますが、機能はあまり似ていません。 Redisは一部のタスクに適していますが、Tarantoolは他のタスクに適しています。
- キースペース
スペースはオブジェクトのコレクションです。 スペースは個別のテーブルと考えることができます。 同じコレクションには、原則として、同じタイプのエンティティがあるため、これは便利です。 エンティティの分離に関する同じRedisでは、キーにプレフィックスを追加することを提案しています( "user:1001"、 "session:9994513" )。 Tarantoolの各スペースには、独自のインデックスセットを設定できます。
- 整数キー
文字列キーに加えて、Tarantoolは整数キー(32および64ビット)をサポートしています
まず、32ビットまたは64ビットキーへのアクセスは、任意の長さのキーよりも高速であることは明らかです。 第二に、たとえば、従来の(SQL)データベースで数値IDを使用する場合に便利です。
- 二次インデックス
ほとんどのキーバリューストアは、プライマリキーアクセスに制限されています。 Tarantoolでは、タプルの個々の属性を選択できます(このためには、フィールドにインデックスを付ける必要があります)。
- セカンダリインデックスは一意ではない場合があります
これは、一意でないフィールドのクエリが多くの値を返す可能性があることを意味します。 例:「国コードRUSを持つすべてのユーザーを返す」
- 複合インデックス
単一のセカンダリインデックスに複数のタプルフィールドを含めることができます。 これは、「従来の」(SQL)データベースの複合インデックスの完全な類似物です。 複合インデックスを使用すると、部分一致(ワイルドカード)でクエリを作成できます。 インデックスの最初の部分のみがわかっている場合、Tarantoolはすべての適切な値を返します。
- 範囲範囲
ほとんどのキー値ストレージとは異なり、Tarantoolには値の範囲を取得する機能があります(整数キーの場合のみ、TREEなどのインデックスを使用する場合のみ)
ところで、これはストアド関数によって行われます(以下を参照)
- Luaのストアド関数
Tarantoolでは、ストアド関数をLuaで作成できます。 LuaはJITコンパイルをサポートする非常にシンプルな言語です。 要するに、彼らは非常に高速です。 ストアドファンクションを使用すると、かなり複雑な構造のデータスキームを実装できます。 たとえば、fifoまたはいくつかのリングバッファ。
- データベース内のバックグラウンドプロセス
Luaでは、個々のリクエストを処理できるだけでなく、バックグラウンドハンドラーも実装できます(協調マルチタスクモード)。
- シンプルなSQLクライアント
まず、開発中の実験や内省のために使用する価値があります。SELECT * FROM t0 WHERE k0 = 42
などの単純なSQLクエリがサポートされています。
今すぐTarantoolの使用を開始する方法
- TarantoolにはシンプルなSQLクライアントがあります
これを使用すると、1行のコードを記述することなく、要求を作成して実験することができます。 - TarantoolはMemcachedプロトコルをサポートしています
Tarantoolを最適なMemcachedとして使用します(ディスク上のスナップショットとトランザクションログを使用)。 - python、ruby、perl、php、java、CにTarantoolのクライアントライブラリがあります
プロジェクトでTarantool機能を使用する方法を考えてください。
どうすればあなたを助けることができますか?
Tarantoolは、長い間実際に使用されてきた成熟したシステムです。
しかし、オープンプロジェクトとして、比較的最近存在します。 したがって、インターネット上の情報はほとんどなく、コミュニティは小さく、ドキュメントは完璧ではなく、O'Rellyは本を出版していません...
そしてこれはいいです! 実際、すでに広く知られているプロジェクトでは、何か重要なことを行うのは困難です。すべてが私たちの前で行われます。 しかし、ここで-いいえ!
したがって、この有望なプロジェクトの開発に大きく貢献することができます。
初期のフォロワーが常に勝ちます。 このプロジェクトは、たとえばNginxとして顕著になります。
今すぐ参加すると、栄光の光線があなたに触れます:)
- 試してみてください! ニュースレターで質問してください。 ブログ投稿を書いて
- プロジェクトで使用する(memcachedを置き換えるだけで開始できます)
- ディストリビューション用のパッケージを作成する
- クライアントライブラリをビルドおよび変更します。
- サーバーにパッチを送信します。 または、分岐して独自の操作を行います!