BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Rich Hickey氏のDatomic、クラウドやインテリジェントアプリケーション、一貫性といった考えを取り入れる

Rich Hickey氏のDatomic、クラウドやインテリジェントアプリケーション、一貫性といった考えを取り入れる

ブックマーク

原文(投稿日:2012/04/03)へのリンク

3月初め、Rich Hickey氏とStuart Halloway氏を中心とするRelevanceチームは、2010年から取り組んでいる新しいデータベースプラットフォームDatomicを発表した

Datomicは最近の分散コンピューティング、特にStorage as a Service、好きなだけアプリケーションサーバが利用できること、ライトよりもリードのスケールが要求されることを利用している。そのほかDatomicの重要なポイントを以下にあげる。

  • リードとライトの関心の分離
  • ライトにおける強力なトランザクション保証
  • イミュータブルでアペンドオンリーなデータベースという概念
  • クエリ可能な値としての時間的データベーススナップショット
  • コアとなるデータ構造として時刻(トランザクション)を導入。Datomは (エンティティ, 属性, 値, トランザクション) で構成される。
  • 論理に基づく構造化クエリ言語としてのDatalog。暗黙のjoinを含む複雑なクエリを可能にする。

 

	Datalog Example (shipping costs exceeding product price)
	[:find ?customer ?product
	 :where [?customer :shipAddress ?addr]
	        [?addr :zip ?zip]
	        [?product :product/weight ?weight]
	        [?product :product/price ?price]
            // function call into application code
	        [(Shipping/estimate ?zip ?weight) ?shipCost]
	        [(<= ?price ?shipCost)]]	

Datomicアーキテクチャは以下の重要な構成要素から成っている。

  • 分散した高速なストレージサービス(SSD上のAWS Dynamo DB)
  • 単一のTransactorサービス。ライトを一貫性のあるデータストリームにシリアライズすることだけに責任をもつ。
  • Peerライブラリ。アプリケーションの一部として、クエリやインデックス/データのフェッチを処理する。


 

Rich氏はInfoQのWerner Schuster氏との今度のインタビューでもDatomicについて語り、Clojure/Westのキーノートでもそれについて語った。

DatomicアーキテクチャとDatalogに関するビデオプレゼンテーションが発表されて以降、さまざまな興味深い議論があった。

Sergio Bossa氏Daniel Spiewak氏はDatomicの設計判断についていくつか質問した。

ひとつは、ライトスループット削減と単一障害点および主たるボトルネックとして単一のTransactorを選択したことだ。

もうひとつは、ほかのアプローチ(MapReduceなど)が現在やっているようなコードをデータに移すのではなく、大量のデータをコードに移すという判断だ。

Rich Hickey氏はこうした質問について、Alexandru PopescuのブログMichael Fogusのブログで答えた。

Transactorは高可用性コンポーネントとして構築でき、クロスクエリが可能な、複数並行共有されるDatomicデータベース群が作れる可能性があると彼は指摘した。また、Datomicのスイートスポットは極めて高いライトスループットにあるのではなく、リードのスケーリング、リッチなクエリ、一貫性のあるトランザクションシステムにあると説明した。

データをアプリケーションに移すことに対しては、クエリ処理、ライト処理、シャーディング、最適化、ロギング、モニタリングなどなど、あまりに多くのことをケアしている現在のデータベースサーバの負荷を考慮したという。Datomicではこれらの関心の分離を試みている。アプリケーションはデータベースサーバよりもずっと容易にスケールアウトでき、それぞれのクエリ特性やデータニーズ(ホットデータセット)に適したクエリ責務、ユースケース責務を扱える。

もうひとつ興味深いポイントは、Datomicがグローバルに分散したインデックスとして見えることだ。これはストレージ内で定期的にアップデートされる。さらにインデックス差分はTransactorと各アプリケーションでたえず計算され、メインインデックスに仮想的にマージされる。キャッシュされたイミュータブルなインデックスセグメントによって、クエリエンジンはデータベースの巨大な部分をクライアントに転送することなく、データベースの対象とする箇所の値を直接取得することができる。

現在、Datomicは以下を提供している。

  • (開発用に)Transactorとストレージサービスのインメモリ実装も備えたPeerライブラリ
  • (テストもしくは小規模アプリ用に)Transactorインスタンスと永続的データストレージサービスを含むVirtualBoxアプライアンス
  • Amazon Dynamo DBを利用した無料ティア(1000時間)付きのパブリックなAWS上の商用サービス

 

この記事に星をつける

おすすめ度
スタイル

BT