ROMAとは
ROMA(Ruby/Rakuten On-Memory Architecture)とは、RIT(楽天技術研究所)がまつもとゆきひろ氏(matz)と共同開発したRuby製分散型KVS(NOSQL)であり、現在はOSSとして公開されている。
https://github.com/roma/roma
特徴
Pure P2P architecture
consistent Hashing and Virtual Nodes
Data replication
- 冗長度は通常2で、任意で変更可能
- 複数サーバで構成していて、かつ1サーバ内に複数nodeが立ち上がっている際には他サーバへのデータ振り分けを優先する
- 万一クラスター内のサーバが1台落ちたとしても、データの読み書きを問題なく行うことが出来る
Auto recovering system
cluster replication system(hot standby)
- 上記のrecovering systemとは別にclusterのreplicationを用意してhot stanby状態で待機させておくことが可能
- 障害時にAPIのアクセス先を切り替えるだけで復旧が可能になる
plug-in Architecture
- コマンドや各種機能をplugin化することで本体のコアの処理と切り分けているため、仮にいらない機能があれば外したり、欲しい機能がればRubyのソースを少し書いてプラグインとして読み込むことで簡単に機能を追加することが可能である
memcached compatible protocol
- 導入や移行のコストを減らすためにmemcachedプロトコルとの互換性を持つ
multi storage
storageを要件にあわせて選択することが可能
物理ファイルに保存しておくことも、memcachedのようにメモリのみを選択することも可能
データタイプ
ROMAは分類的にはP2P型のKVSとなります
マスタ型 | P2P型 | イネーブラ型 | ||
---|---|---|---|---|
オンメモリタイプ | オンディスクタイプ | |||
KVS型 | Hibari | Dynamo Voldemort Riak ROMA |
Memcashed |
TokyoCabinet/ Tyrant |
カラム型 | Bigtable HBase HyperTable |
Cassandra | ||
グラフ型 | Neo4j | InfiniteGraph | ||
ドキュメント型 | MongoDB CouchDB |
その他の関連Tool
mainのUnitとは別に各種クライアントやGUI toolを持つ
関連URL
HP : http://roma-kvs.org/
Github : https://github.com/roma