RethinkDBの概要
RethinkDBはリアルタイムWebアプリケーション向けにゼロベースで設計されたオープンソースのドキュメント指向(JSON)データベースです。
当初RethinkDB社が開発およびサポートを行っていましたが、同社が2016年10月に業務継続が困難な状況に陥ったため、Cloud Native Computing Foundationがソースコードなどの権利を買い取った上で、Linux Foundationに寄贈されることになりました。現在は、同コミュニティにより開発が継続されています。
RethinkDB では既存のデータベースのようにデータの変更をアプリケーションから polling するのとは異なり、Webアプリケーションに更新された検索結果をリアルタイムにかつ、連続的にpushすることが可能です。リアルタイムアプリケーション向けに設計されていることに加え、RethinkDBは柔軟なクエリー言語や直感的な操作、モニタリングAPIを提供します。
RethinkDBのユースケース
RethinkDBのリアルタイム push アーキテクチャの恩恵を受けるのは以下のようなユースケースです。
- 共同設計のWebアプリやモバイルアプリ
- ストリーミング分析アプリ
- マルチプレイヤーのゲーム
- リアルタイムの市場
- ネットワーク接続デバイス
RethinkDBはスタートアップ企業やコンサルティング企業、ゲーム会社など、500を超える企業によって、プロダクション環境で利用されています。主な企業としては、Jive Softwareや NASA、Narrative、Wise.ioなどがあります。
RethinkDBの主な特徴
管理機能 | 管理ツールとして、Webインターフェース、ReQL管理コマンドが利
用できます。 |
---|---|
拡張構成 |
スケールアウト、シャーディング、レプリケーションに対応します。設定はWeb管理コンソールや、ReQL管理コマンドから簡単に制御できます。 |
冗長構成 |
マルチサーバ構成をとる事により、サーバ障害発生時でも自動フェイル
オーバーが可能です。 ただし、自動フェイルオーバーを利用する場合にはいくつかの前提要件を満たしている必要があります。 |
アクセス制御 |
ユーザ、パーミッション、スコープに基づいて、細やかなアクセスコント
ロールを実施できます。 |
バックアップ |
RethinkDBではdump、restoreサブコマンドによりク
ラスタ上で簡単にホットバックアップを取得することが可能です。 |
データインポート |
JSONファイルもしくは、CSVファイルからのインポートが可能で
す。 |
ReQLによるデータ操作 |
RethinkDB query
language(ReQL)により、強力かつ柔軟なJSON操作を提供します。 具体的には、プログラム言語内にReQLを組み込むことや、複数のReQLをチェーンとして連結することや、サーバ側での遅延実行や並列実行を指定するこ とが可能です。 |
複数の2次インデックスをサポート |
|
テーブルJOINのサポート | 多くのRDBのように、RethinkDBでは、プライマリキーやサブ
クエリー、または2次インデックスによる複数テーブルのJOINをサポートします。 |
Map-reduce 機能 |
大規模データセットのサマリーや、集約を実現する
Map-reduce 用のクエリーをサポートします。 |
Changefeeds機能 |
Changefeeds
は、RethinkDBのリアルタイム機能の核となる機能です。 テーブル全体の単純な変更フィードに加え、単一ドキュメントのフィードや、各種フィルタリング、集約クエリーなどが利用可能です |
非同期接続機能 |
RethinkDBドライバによっては、非同期ライブラリとの統合によ
り非同期接続をサポートします。Changefeedsやリアルタイムアプリケーションで利用されます。 現状では、JavaScriptと、Ruby、Pythonでの利用が可能です。 |
外部APIへのアクセス |
RethinkDBでは、r.httpコマンドにより、データベースか
ら外部APIに直接アクセスする機能を提供します。 |
RethinkDBの動作環境
RethinkDBのサーバ
公式パッケージとして、以下のOSのパッケージが提供されています。
- Ubuntu
- OS X
- CentOS
- Debian
- DigitalOcean
コミュニティによるパッケージとして、以下のOSのパッケージが提供されています。
- Arch Linux
- openSUSE
- Fedora
- Linux Mint
- Raspbian
- Gentoo
Docker はDocker Hubに公式のRetinkDBリポジトリを提供しています。
RethinkDBのクライアントドライバ
公式のクライアントドライバとして、以下が提供されています。
- JavaScript(npmパッケージ)
- Ruby(gemパッケージ)
- Python(pin パッケージ)
- Java(Maven、Gradle、Ant に対応)
コミュニティがサポートするクライアントドライバとして、以下が提供されています。
- C#
- C++
- Clojure
- Common Lisp
- Dart
- Delphi
- Elixir
- Erlang
- Go
- Haskell
- JS
- Lua
- Nim
- Perl
- PHP
- R
- Rust
- Swift
RethinkDBの類似ソフトウェア
オープンソースのドキュメント指向データベースとして有名な製品として、MongoDB、Apache CouchDBがあります。RethinkDBはこれらのNoSQL製品に比べ後発であったため、先進的なクエリー言語や管理インターフェース、分散構成に関して既存製品の長所を多く組み込んだ製品になっています。
その中でも、RethinkDBではリアルタイムアプリケーションとの親和性に関して大きな特徴があるといえます。たとえば、RethinkDBでも、従来のポーリング方式でアプリケーションを開発することは可能です。その後、アプリケーションにリアルタイム機能が加わった段階でリアルタイムフィードを組み込むといった対応が可能です。
その他、MongoDBとの比較に関しましては、以下のRethinkDBの公式ページに複数の観点でまとめられているため、こちらが参考になります。
https://www.rethinkdb.com/docs/rethinkdb-vs-mongodb/
https://www.rethinkdb.com/docs/comparison-tables/
RethinkDBのライセンス
RethinkDBは、Apache License v2.0のライセンス下での利用が可能です。
RethinkDBのダウンロード
https://www.rethinkdb.com/docs/install/
上記、URLより動作環境の OSに応じたバイナリパッケージもしくは、ソースコードのダウンロードが可能です。
RethinkDBの公式サイト
RethinkDBのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。