Tarantoolは、柔軟なデータスキーマを備えたインメモリコンピューティングプラットフォームであり、高性能アプリケーションの作成に最適です。主な構成要素は、インメモリデータベースとLuaアプリケーションサーバーです。
Tarantoolはデータをメモリに保持し、先読みログとスナップショット機能によってクラッシュ耐性を確保します。Luaインタープリタと対話型コンソールを備えていますが、他の複数の言語で記述されたプログラムからの接続も受け付けます。
ロシア最大のインターネット企業の1つであるMail.Ruは、ソーシャルネットワーク「Moy Mir(私の世界)」の開発の一環として、2008年にこのプロジェクトを開始しました。2010年には、プロジェクト責任者としてMySQLの元テクニカルリードを採用しました。オープンソースの貢献者は、特にC、Golang、Perl、PHP、Python、Ruby、node.jsなどの外部言語コネクタの分野で活発に活動しています。
Tarantool は Mail.Ru のバックボーンの一部となり、ユーザー セッション、未送信のインスタント メッセージ、タスク キューなどの動的コンテンツや、MySQL や PostgreSQL などの従来のリレーショナル データベースのキャッシュ レイヤーに使用されました。[ 1 ] [ 2 ]
2014年までに、TarantoolはソーシャルネットワークサービスのBadooとOdnoklassniki(後者は2010年からMail.Ruと提携している)にも採用された。[ 3 ] [ 4 ]
すべてのデータはメモリ(RAM)に保持され、データの永続性はライトアヘッドロギングとスナップショットによって保証されるため、一部の業界関係者はTarantoolをMembaseと比較している。[ 5 ]
レプリケーションは非同期で行われ、フェイルオーバー(あるTarantoolサーバーが別のサーバーから引き継ぐこと)は、レプリカサーバーまたは「ホットスタンバイ」サーバーのいずれかから実行可能です。
ロックは使用されていません。TarantoolはLuaスタイルのコルーチンと非同期I/Oを使用します。そのため、アプリケーションプログラムやストアドプロシージャは、より一般的なプリエンプティブマルチタスクではなく、協調マルチタスクを念頭に置いて記述する必要があります。
データベースのストレージにおける基本単位はタプルです。タプルセット内のタプルは、リレーショナルデータベースのテーブルにおける行と同じ役割を果たします。タプルは任意の数のフィールドを持ち、フィールドに名前は必要ありません。データベース内のすべてのタプルには、1つの(一意でNULLでない)主キーと、インデックスによる即時検索が可能な1つ以上の副キーがあります。サポートされているインデックスの種類は、Bツリー、ハッシュ、ビットマップ、およびRツリー(空間)です。
タプル内のフィールドは型に依存しないか、特定の数値型または文字列型を持つことができます。適切な権限が付与されている場合、ユーザーは挿入、更新、削除、または選択を行うことができます。[ 6 ]
2017年にTarantoolは、メモリサイズよりも大きなデータベースを可能にするオプションのディスクストレージエンジンを導入しました。 [ 7 ]
2019年、Tarantoolは公式SQL標準の必須機能のほとんどに準拠したオプションのSQLインターフェースを導入しました。 [ 8 ]
Tarantool は、 Debian、Fedora、Ubuntuなどの一部の Linux ディストリビューションの公式ディストリビューションの一部として提供されます。[ 9 ] [ 10 ] [ 11 ] Tarantool 組織は、他の Linux ディストリビューション、OS X、および FreeBSD 用のダウンロードも提供しています。Tarantool はLuaRocks を使用してインストールされたモジュールで拡張でき、独自の拡張ロックも含まれています。[ 12 ]