*Hibariの特徴 [#z755673e] #contents **High Performance(高性能) [#k19af30e] Hibariは、並列処理に向いているとして最近注目を集めている[[Erlang>http://ja.wikipedia.org/wiki/Erlang]]という言語によって開発されており、プロセス自体が非常に軽量である事が特徴として挙げられます。~ また高性能化へのアプローチとしてRAMストレージへの対応や、「コンシステント・ハッシング・アルゴリズム」というデータを分散配置アルゴリズムを採用し、データリード時に複数ノードからの同時データ読み出しを可能としている点などが挙げられるでしょう。 -Hibariのメモリ使用量 実際にメモリ使用量を調査したところ、キーが全く無い状態で以下の通りでした。 avahi-daemon: running [hibari-sv01.local] 1248kb /usr/local/hibari/gdss/1.0.0/bin/watcher-gdssd 328kb /bin/sh /usr/local/hibari/gdss/1.0.0/bin/gdssd 1172kb /bin/sh /usr/local/hibari/gdss/1.0.0/bin/gdssd 704kb /usr/local/lib/erlang/erts-5.7.5/bin/beam.smp 33712kb 概算で約37Mbyteが使用されているようです。 今後、キー値やプロセスの増加によりどう変動するか追加調査を行う予定です。 **High Scalability(高拡張性) [#f3613e7c] Hibariには、自動でのデータレプリケーション機能やデータ分散機能が存在しており、システムを停止する事なくデータノード(Hibariではブリックと呼ばれます)の拡張や変更に対応しています。~ このため、非常に高い拡張性を持っていると言えます。 **High Availability(高可用性) [#i967c8af] データ分散アルゴリズムにより、Hibariはハードウェア障害発生時にも動的にノードを切り離し、単一故障点を即座に切り離す事が可能です。~ この場合においても、登録されたキーやデータについては2重化以上の冗長構成を利用する事が可能であるため、システムダウンを引き起こす事なくサービスの継続利用が可能となっています。 **High Reliability(高信頼性) [#hb23d5ae] Hibariシステムについては、書き込み処理が完了した最新のデータのみを提供することを保証します。(書き込みが完了し、各ノードそれぞれで同一の読み出しが可能となるまでは対象データへのアクセスを行わないようです/未検証)~ このため強い一貫性を持ち、各データに関しては完全に同期が行われている事が保証されているようです。~ また、ストレージオプションにてRAMディスクを選択した際にも、実際にはディスクに対象データは書き込まれており、データロスト時について信頼性の確保が考慮されているようです。 **Economical(経済性) [#ja10b3d3] Hibariは汎用ハードウェアを使用して構築する事が可能であり、専門的なハードウェアを用意する場合と比べて導入コストを低下させる事ができます。~ また、スケールアウト([[参照>http://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%A9%E3%83%93%E3%83%AA%E3%83%86%E3%82%A3]])を基本とする柔軟な拡張性を持つために、システムやデータの規模に合わせ柔軟な対応が可能であり、高いハードウェアスペックが必ずしも必要ではないという点で、コストパフォーマンスを高める事に成功しているようです。