LoginSignup
17
13

More than 5 years have passed since last update.

ROMAとは

Last updated at Posted at 2015-12-02

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

17
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
13