Ruby
KVS
groonga
nosql
roma
More than 3 years have passed since last update.


ROMAとは

ROMA(Ruby/Rakuten On-Memory Architecture)とは、RIT(楽天技術研究所)がまつもとゆきひろ氏(matz)と共同開発したRuby製分散型KVS(NOSQL)であり、現在はOSSとして公開されている。

https://github.com/roma/roma

logo.png


特徴


Pure P2P architecture


  • 通信方式にPure P2Pを採用しており、いわゆるmaster/slaveに分かれていないので耐障害性に優れる

  • アクセスが集中する時など、任意のタイミングでスケールアウトすることが容易である

    p2p.png


consistent Hashing and Virtual Nodes


  • コンシステントハッシュ法とvirtual nodesを用いてデータ分散を行っている

    consistencth.png


Data replication


  • 冗長度は通常2で、任意で変更可能

  • 複数サーバで構成していて、かつ1サーバ内に複数nodeが立ち上がっている際には他サーバへのデータ振り分けを優先する

  • 万一クラスター内のサーバが1台落ちたとしても、データの読み書きを問題なく行うことが出来る


Auto recovering system


  • 障害時に生き残ったサーバ群でデータの再複製を自動で行い冗長性を保つ機能を持つ
    AUTO_RECOVERY.png


cluster replication system(hot standby)


  • 上記のrecovering systemとは別にclusterのreplicationを用意してhot stanby状態で待機させておくことが可能

  • 障害時にAPIのアクセス先を切り替えるだけで復旧が可能になる

    cluster_replication.png


plug-in Architecture


  • コマンドや各種機能をplugin化することで本体のコアの処理と切り分けているため、仮にいらない機能があれば外したり、欲しい機能がればRubyのソースを少し書いてプラグインとして読み込むことで簡単に機能を追加することが可能である


memcached compatible protocol


  • 導入や移行のコストを減らすためにmemcachedプロトコルとの互換性を持つ


multi storage

storageを要件にあわせて選択することが可能

物理ファイルに保存しておくことも、memcachedのようにメモリのみを選択することも可能

storage.png


データタイプ

ROMAは分類的にはP2P型のKVSとなります

 
マスタ型
P2P型
イネーブラ型

オンメモリタイプ
オンディスクタイプ

KVS型
Hibari
Dynamo
Voldemort
Riak
ROMA

Memcashed
Redis
Scalaris 


TokyoCabinet/
Tyrant 

カラム型
Bigtable
HBase
HyperTable
Cassandra
 
 

グラフ型
Neo4j
InfiniteGraph
 
 

ドキュメント型
MongoDB
CouchDB 
 
 
 


その他の関連Tool

mainのUnitとは別に各種クライアントやGUI toolを持つ

gla1.png


関連URL

HP : http://roma-kvs.org/

Github : https://github.com/roma