トップ OSS紹介 RethinkDB

RethinkDB

NRIのOpenStandiaが提供するRethinkDB最新情報

バージョンアップ情報

RethinkDB情報

RethinkDBとは

RethinkDBはリアルタイムWebアプリケーション向けにゼロベースで設計されたオープンソースのドキュメント指向(JSON)データベースです。
当初RethinkDB社が開発およびサポートを行っていましたが、同社が2016年10月に業務継続が困難な状況に陥ったため、Cloud Native Computing Foundationがソースコードなどの権利を買い取った上で、Linux Foundationに寄贈されることになりました。現在は、同コミュニティにより開発が継続されています。

RethinkDB では既存のデータベースのようにデータの変更をアプリケーションから polling するのとは異なり、Webアプリケーションに更新された検索結果をリアルタイムにかつ、連続的にpushすることが可能です。リアルタイムアプリケーション向けに設計されていることに加え、RethinkDBは柔軟なクエリー言語や直感的な操作、モニタリングAPIを提供します。

主な特徴

管理機能

管理ツールとして、Webインターフェース、ReQL管理コマンドが利用できます。

拡張構成

スケールアウト、シャーディング、レプリケーションに対応します。設定はWeb管理コンソールや、ReQL管理コマンドから簡単に制御できます。

冗長構成

マルチサーバ構成をとる事により、サーバ障害発生時でも自動フェイル オーバーが可能です。
ただし、自動フェイルオーバーを利用する場合にはいくつかの前提要件を満たしている必要があります。

アクセス制御

ユーザ、パーミッション、スコープに基づいて、細やかなアクセスコントロールを実施できます。

バックアップ

RethinkDBではdump、restoreサブコマンドによりクラスタ上で簡単にホットバックアップを取得することが可能です。

データインポート

JSONファイルもしくは、CSVファイルからのインポートが可能で す。

ReQLによるデータ操作

RethinkDB query language(ReQL)により、強力かつ柔軟なJSON操作を提供します。
具体的には、プログラム言語内にReQLを組み込むことや、複数のReQLをチェーンとして連結することや、サーバ側での遅延実行や並列実行を指定するこ とが可能です。

複数の2次インデックスをサポート

  • 単一フィールド値に基づくシンプルインデックス
  • 複数フィールド値に基づく複合インデックス
  • 配列の値に基づくマルチインデックス
  • 任意表現によるインデックス

の4つのインデックスの利用が可能です。

テーブルJOINのサポート

多くのRDBのように、RethinkDBでは、プライマリキーやサブ クエリー、または2次インデックスによる複数テーブルのJOINをサポートします。

Map-reduce 機能

大規模データセットのサマリーや、集約を実現する Map-reduce 用のクエリーをサポートします。

Changefeeds機能

Changefeeds は、RethinkDBのリアルタイム機能の核となる機能です。
テーブル全体の単純な変更フィードに加え、単一ドキュメントのフィードや、各種フィルタリング、集約クエリーなどが利用可能です

非同期接続機能

RethinkDBドライバによっては、非同期ライブラリとの統合によ り非同期接続をサポートします。Changefeedsやリアルタイムアプリケーションで利用されます。
現状では、JavaScriptと、Ruby、Pythonでの利用が可能です。

外部APIへのアクセス

RethinkDBでは、r.httpコマンドにより、データベースか ら外部APIに直接アクセスする機能を提供します。

類似プロダクト

オープンソースのドキュメント指向データベースとして有名な製品として、MongoDB、Apache CouchDBがあります。RethinkDBはこれらのNoSQL製品に比べ後発であったため、先進的なクエリー言語や管理インターフェース、分散構成に関して既存製品の長所を多く組み込んだ製品になっています。

その中でも、RethinkDBではリアルタイムアプリケーションとの親和性に関して大きな特徴があるといえます。たとえば、RethinkDBでも、従来のポーリング方式でアプリケーションを開発することは可能です。その後、アプリケーションにリアルタイム機能が加わった段階でリアルタイムフィードを組み込むといった対応が可能です。

その他、MongoDBとの比較に関しましては、以下のRethinkDBの公式ページに複数の観点でまとめられているため、こちらが参考になります。

ユースケース

RethinkDBのリアルタイム push アーキテクチャの恩恵を受けるのは以下のようなユースケースです。

  • 共同設計のWebアプリやモバイルアプリ
  • ストリーミング分析アプリ
  • マルチプレイヤーのゲーム
  • リアルタイムの市場
  • ネットワーク接続デバイス

RethinkDBはスタートアップ企業やコンサルティング企業、ゲーム会社など、500を超える企業によって、プロダクション環境で利用されています。主な企業としては、Jive Softwareや NASA、Narrative、Wise.ioなどがあります。

動作環境

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のライセンス

RethinkDBのライセンスは、「Apacheライセンスバージョン2」(Apache License version2)というライセンスに基づいて公開され、営利、非営利を問わず、誰でも自由かつ無償で利用・改変・再配布できるようになっています。

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • PostgreSQL
    サポート対象

    PostgreSQL

    ポストグレエスキューエル。多くのOS・プラットフォームで稼動するオープンソースのリレーションナルデータベース管理システムです。

  • MongoDB
    サポート対象

    MongoDB

    モンゴデービー。高可用性、スケーラビリティ、スキーマレスに注目が集まる、NoSQLデータベースです。

  • MariaDB
    サポート対象

    MariaDB

    マリアデービー。MySQLから派生したオープンソースのリレーショナルデータベース管理システム(RDBMS)です。

  • MySQL
    サポート対象

    MySQL

    マイエスキューエル。多くのOS・プラットフォームで稼動するオープンソースのリレーションナルデータベース管理システム

オープンソースに関するさまざまな課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。