Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
Check these out next
Apache Spark チュートリアル
K Yamaguchi
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
hamaken
リクルートテクノロジーズ における EMR の活用とコスト圧縮方法
Tetsutaro Watanabe
最近のストリーム処理事情振り返り
Sotaro Kimura
今こそクラウドへ!データの移行、連携、統合のコツ
株式会社クライム
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
Tetsutaro Watanabe
Apache Sparkのご紹介 (後半:技術トピック)
NTT DATA OSS Professional Services
[db tech showcase Tokyo 2017] E23: クラウド異種データベース(AWS)へのデータベース移行時の注意点 ~レプリケーション...
Insight Technology, Inc.
1
of
23
Top clipped slide
Datomic&datalog紹介
Sep. 27, 2013
•
0 likes
6 likes
×
Be the first to like this
Show More
•
3,050 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
あしたのオープンソース研究所
Follow
オープンソースソフトウェアの調査 at インフォサイエンス株式会社
Advertisement
Advertisement
Advertisement
Recommended
Datalogからsqlへの トランスレータを書いた話
Yuki Takeichi
2.3K views
•
11 slides
オライリーセミナー Hive入門 #oreilly0724
Cloudera Japan
5.7K views
•
30 slides
TokyoWebminig カジュアルなHadoop
Teruo Kawasaki
4.3K views
•
61 slides
Apache Hive 紹介
あしたのオープンソース研究所
8.9K views
•
26 slides
分散グラフデータベース DataStax Enterprise Graph
Yuki Morishita
2.1K views
•
36 slides
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
NTT DATA OSS Professional Services
7.3K views
•
40 slides
More Related Content
Slideshows for you
(20)
Apache Spark チュートリアル
K Yamaguchi
•
17.3K views
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
hamaken
•
100K views
リクルートテクノロジーズ における EMR の活用とコスト圧縮方法
Tetsutaro Watanabe
•
3.4K views
最近のストリーム処理事情振り返り
Sotaro Kimura
•
17.2K views
今こそクラウドへ!データの移行、連携、統合のコツ
株式会社クライム
•
798 views
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
Tetsutaro Watanabe
•
6.9K views
Apache Sparkのご紹介 (後半:技術トピック)
NTT DATA OSS Professional Services
•
26.1K views
[db tech showcase Tokyo 2017] E23: クラウド異種データベース(AWS)へのデータベース移行時の注意点 ~レプリケーション...
Insight Technology, Inc.
•
2K views
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)
Hadoop / Spark Conference Japan
•
2.7K views
データベース入門
拓 小林
•
3.7K views
Hadoopデータプラットフォーム #cwt2013
Cloudera Japan
•
4K views
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
Insight Technology, Inc.
•
1.6K views
ただいまHadoop勉強中
Satoshi Noto
•
5.7K views
Hadoopエコシステムのデータストア振り返り
NTT DATA OSS Professional Services
•
4.3K views
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
MapR Technologies Japan
•
4.6K views
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
Cloudera Japan
•
3.2K views
Hadoop Source Code Reading #17
Shingo Furuyama
•
6.8K views
Data Science on Hadoop
Yifeng Jiang
•
4.2K views
hscj2019_ishizaki_public
Kazuaki Ishizaki
•
4K views
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Hadoop / Spark Conference Japan
•
7.2K views
Similar to Datomic&datalog紹介
(20)
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか
Chihiro Ito
•
10K views
ochacafe#6 人にもマシンにもやさしいAPIのエコシステム
オラクルエンジニア通信
•
1.8K views
PHP開発者のためのNoSQL入門
じゅん なかざ
•
6.3K views
Tech Fielders 2009/9/18 LT
terurou
•
1.5K views
ビッグデータ活用支援フォーラム
Recruit Technologies
•
3.4K views
WebDB Forum 2012 基調講演資料
Recruit Technologies
•
4.3K views
flow による型のある世界入門
sairoutine
•
4.5K views
Lithium Labo #1
Yusuke Ando
•
2K views
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
David Buck
•
185 views
D22 目覚めよDBエンジニア 〜世界最速カラムナーデータベースは本物だ!〜 by Koji Shinkubo
Insight Technology, Inc.
•
4.3K views
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Treasure Data, Inc.
•
11.7K views
Nginx
Soichi Takamura
•
986 views
BPStudy20121221
Shinichiro Takezaki
•
2.6K views
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
Insight Technology, Inc.
•
741 views
Japan it week_アプリケーション開発に最適なクラウド
オラクルエンジニア通信
•
145 views
ドメインロジックの実装方法とドメイン駆動設計
Tadayoshi Sato
•
14.7K views
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
Shumpei Shiraishi
•
4.2K views
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
NilOne Ltd.
•
10.9K views
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
dstn
•
1.3K views
OSSラボ様講演 OpenStack最新情報セミナー 2014年6月
VirtualTech Japan Inc.
•
8K views
Advertisement
More from あしたのオープンソース研究所
(13)
Red5
あしたのオープンソース研究所
•
5.6K views
Friendica_28th_AshitanoKen
あしたのオープンソース研究所
•
7.7K views
Apache UIMA
あしたのオープンソース研究所
•
6K views
Flume
あしたのオープンソース研究所
•
4K views
Gephi Quick Start (Japanese)
あしたのオープンソース研究所
•
41.9K views
Gephi Tutorial Visualization (Japanese)
あしたのオープンソース研究所
•
12.4K views
Cassandra v0.6-siryou
あしたのオープンソース研究所
•
6.2K views
MongoDB
あしたのオープンソース研究所
•
8.2K views
Rails.20110405
あしたのオープンソース研究所
•
2.7K views
S4
あしたのオープンソース研究所
•
3.3K views
machine learning & apache mahout
あしたのオープンソース研究所
•
6.1K views
20100831.あしたの研第14回座談会moses.スライド
あしたのオープンソース研究所
•
3.2K views
Cassandra 分散データベース
あしたのオープンソース研究所
•
4.2K views
Datomic&datalog紹介
Copyright © Infoscience
Corporation. All rights reserved. Datomic と Datalog インフォサイエンス株式会社 永江 哲朗
Copyright © Infoscience Corporation.
All rights Datomic, Datalog Datomic はオープンソースではありませんが、技術的に面白そうでしたので今回取 り上げました。 また、 Datomic で使われている Datalog は Prolog の流れをくむクエリ言語です。
Copyright © Infoscience Corporation.
All rights Datomic とは ● Datomic の目標 ・堅牢な情報モデルの提供。 ・冗長でスケーラブルなストレージシステムの利用 ・ ACID トランザクションと一貫性の提供 ・アプリケーションでの宣言的なデータプログラミング 【比較】 従来の RDBMS (MySQL, PostgreSQL 等 ) → 関係モデルにある種の更新のセマンティックを組み合わせたモデルをサポー トする。 NoSQL (HBase, Amazon Dynamo DB, Cassandra 等 ) → 自らが扱う情報についてほとんど何も知らず、キーによって BLOB を保持す るだけで、結果の一貫性を保証する。
Copyright © Infoscience Corporation.
All rights Datomic とは 設計者: Rich Hickey さん Clojure(JVM 上で動く Lisp 系言語) の作者
Copyright © Infoscience Corporation.
All rights 設計のコンセプト ● Datomic の設計のコンセプト (1) 単純さと合成。 システムはひとつのことを行うサービスを複数組み合わせて構成するべきであり、サービスは 互いを知っているべきでない。ストレージやキャッシュのような領域には良く考えられたシンプ ルなコンポーネントがすでにあり、統合可能である。 (2) ストレージと問い合わせのスケーラビリティと弾力性。 事前の構成なしで動的にマシンを追加したり削除したりすることでストレージや問い合わせの能 力を大きくしたり小さくしたりできるべき。 (3) 配置場所の柔軟性。 あるコンポーネントは別のコンポーネントのある場所を気にしない。 (4) 全般的な不変性。 プログラミングで更新をするというのは時間が経過したということを表す。ほとんどのプログラ ミングは不変値を使って行われるべき。 (5) インターフェイスとしてのデータ。 システムはプログラミング可能であるべき。そのためには主要なインターフェイスはデータ駆動 であるべきで、複雑な構文であってはならない。
Copyright © Infoscience Corporation.
All rights Datomic の論理モデル ・ Datomic の論理モデル ・ストレージ ・トランザクション コーディネータはトランザクションをシリ アライズして、 ACID 特性を保証し、情報を ストレージに書き込みます。 ・インデキシング ・アプリケーションデータモデルと問い合わせ アプリケーションサーバ層から見ると Datomic はメモリ内の値のように見えます。 データベースはエンティティとその属性が形 成するグラフのように見えます。 ・キャッシュ Datomic 自体がキャッシュを管理してイン デックスセグメントをキャッシュして、イン デックスセグメントをストレージからメモリ やアプリケーションのプロセスに展開します。
Copyright © Infoscience Corporation.
All rights Datomic のアーキテクチャー ・ Datomic のアーキテクチャー ・ピア REST サーバー ・ピアライブラリ ・トランザクター ・ memchache (optional) ・ストレージサービス ストレージとトランザクション を分けているところ、インデッ クスとキャッシュをピアにもた せていることが面白いと思いま す。
Copyright © Infoscience Corporation.
All rights ストレージ ● Datomic で使えるストレージサービス (1) インプロセスのメモリ ( ストレージではない ) 。 Datomic は完全にメモリ 内で動かすことができます。 free 版はこれしか使えないので、 Datomic を 実質的に商用で使えるのは有料の Pro 版のみとなります。 (2) SQL 。 JDBC が使える SQL データベースであればストレージとして利用 できます。 ( Pro edition)※ PostgreSQL, MySQL, Oracle (3) キー / バリューストア。 DynamoDB のような次世代分散キー / バリュース トアは Datomic に向いています。 ( Pro edition)※ DynamoDB, Riak, couchbase (4) メモリグリッド。冗長メモリが十分丈夫であれば Infinispan のような分散 データグリッドで利用できます。 ( Pro edition)※ ( データグリッド : 複数サーバにまたがって存在するデータ・オブジェク トを単一物理メモリ上で効率的に処理するためのミドルウェア ( はてな キーワードより ) 。 Infinispan: JbossAS の内部で使用されるデータグリッドプラットフォー ムです )
Copyright © Infoscience Corporation.
All rights ピアライブラリ ● ピアライブラリ データベースの値を表すコードや接続のコード、メモリインデックスや問い合 ‘ ’わせエンジンは ピア と呼ばれる JVM のライブラリで提供されます。このライ ブラリが動作するアプリケーションサーバはデータベースサーバーと同等の機 能を持つようになるので、ピアと名付られました。 このライブラリは Java 、 Clojure 、 Scala 、 JRuby 、 Groovy など JVM 言語 で利用できる Java API を持ちます。ピアは直接 ( 読み取り専用で ) ストレージ にアクセスします。 また、インデックスセグメントのキャッシュを持ちます。このキャッシュの中 でインデックスセグメントは JVM オブジェクトに展開されています。
Copyright © Infoscience Corporation.
All rights トランザクター ● トランザクター トランザクターはトランザクションのコーディネーション専用のプロセスです。 アプリケーションサーバのピアから接続を受け付けます。 これらの接続からトランザクションを受け付け、シリアライズして、ストレー ジにログセグメントをコミットし、接続しているすべてのピアに新情報をブロ ードキャストします。
Copyright © Infoscience Corporation.
All rights 構造と表現 ・データベースは、リレーション、列とドキュメント等、そのモデルの下部に ある基本ユニットを持ちます。 Datomic のユニットは、 Datom と呼ばれます 。 Datom は以下のコンポーネントを持ちます。 ・ Entity ( エンティティ ; データの単位 ) ・ Attribute ( 属性 ) ・ Value ( 値 ) ・ Transaction ( データベース時間 ) ・ Add/Retract ( 追加 / 取り消し ) ※ RDF(Resource Description Framework ( リソース・ディスクリプション・ フレームワーク ) ステートメントの Subject/Predicate/Object データモデルと 明らかに似ています。ただし、時間の経過を表す概念や取り消しの表現が Datomic では追加になっています。
Copyright © Infoscience Corporation.
All rights エンティティと属性 Datomic ではエンティティに対して以下のような属性を与えます。 ・名前 ・値のデータ型 ・カーディナリティ ( 属性が 1 個 or 複数個の値を持つ ) ・一意性 ・インデックスプロパティ ・ドキュメンテーション など。。。
Copyright © Infoscience Corporation.
All rights ・エンティティ :person/name ・属性 : {:db/ident :person/name, :db/valueType :db.type/string, :db/cardinality :db.cardinality/one, :db/doc "A person's name"} エンティティと属性の例 エンティティの ID 値の型 カーディナリティ ( この場合は1 ) ドキュメンテーション
Copyright © Infoscience Corporation.
All rights スキーマの例 以下の 2 つの定義で neighborhood を定義します。 {:db/id #db/id[:db.part/db] :db/ident :neighborhood/name :db/valueType :db.type/string :db/cardinality :db.cardinality/one :db/unique :db.unique/identity :db/doc "A unique neighborhood name (upsertable)" :db.install/_attribute :db.part/db} {:db/id #db/id[:db.part/db] :db/ident :neighborhood/district :db/valueType :db.type/ref :db/cardinality :db.cardinality/one :db/doc "A neighborhood's district" :db.install/_attribute :db.part/db} パーティション名 neiborhood Name District Taro Shinjuku < イメージ >
Copyright © Infoscience Corporation.
All rights Datalog Datomic ピアライブラリには Datalog に基づくクエリエンジンが付属していま す。 ● Datalog の特徴 ・宣言的なクエリ言語 ・再帰的なクエリ ・暗黙的なジョイン
Copyright © Infoscience Corporation.
All rights Datalog の歴史 1977 年に考案されてから、 2000 年代になるまでほとんど日の目を見ることは ありませんでしたが、現在では以下のような分野で使えそうということで注目 を集めているようです。 ・ Data Integration ( データ統合 ) ・ Program Analysis ( プログラム解析 ) BDDBDDB, Semmle, Doop ・ Declarative Networking ( 宣言的ネットワーク )
Copyright © Infoscience Corporation.
All rights ;;who is 42? (42 歳の人は誰 ?) [:find ?e :where [?e :age 42]] ;;which 42-year-olds like what? (42 歳の人で、その人は何が好き ?) [:find ?e ?x :where [?e :age 42] [?e :likes ?x] :find → 値を返すことを指示します。 :where → 制約を示します。 :age, :likes → 属性を示します。 ?e, ?x → 変数を表します。 Datalog のクエリーの例 AND 条件になります。
Copyright © Infoscience Corporation.
All rights ルール [[(lang-anchor ?name ?url) [?language :lang/website ?url] [?language :lang/name ?name]]] [:find ?name ?url :where [lang-anchor ?name ?url]] ルールの head ルールの body ここに上で定義された lang-anchor のルールが入ります
Copyright © Infoscience Corporation.
All rights 再帰的なルール [[(direct-influence ?old ?new) [?old :influenced ?new]] [(remote-influence ?old ?new) (direct-influence ?old ?new)] [(remote-influence ?old ?new) (direct-influence ?old ?intermediate) (remote-influence ?intermediate ?new)]]
Copyright © Infoscience Corporation.
All rights 再帰的なクエリー [:find ?influence :where [?new :lang "Dart"] (remote-influence ?old ?new) [?old :lang ?influence]] ⇒ {["LISP"] ["Smalltalk"] ["Simula"]} Simula LISP Smalltalk Dart ルールが再帰的に適用されます [[(direct-influence ?old ?new) [?old :influenced ?new]] [(remote-influence ?old ?new) (direct-influence ?old ?new)] [(remote-influence ?old ?new) (direct-influence ?old ?intermediate) (remote-influence ?intermediate ?new)]]
Copyright © Infoscience Corporation.
All rights 時間の入ったクエリー (Datomic 拡張 ) ・ Datomic の Datalog では過去のある時点のデータに対してクエリーできます 。 例 . ( 以下の例はモデルです。 ) [john :favorite/food :pizza <last week>] ("2013-09-09T00:00:00.000-00:00“) [john :favorite/food :pho <now>] ("2013-09-16T00:00:00.000-00:00“) クエリ (q ‘[:find ?food :where [?person :person/name “John”] [?person :favorite/food ?food]] (d/as-of database #inst “2013-09-09T00:00:00.000-00:00“)) ⇒ [[:pizza]] を返します。 d/as-of はその時点を指します。
Copyright © Infoscience Corporation.
All rights まとめ ・ RDB, KVS, データグリッドから選択可能なストレージ ・トランザクターによるトランザクション。 ・ピアライブラリ ・過去のデータの履歴をすべて残していく。 ・ Datalog ・時間の入ったクエリー。 ・ RDB の関係性と、 KVS のストレージの柔軟性のいいとこどり ?
Copyright © Infoscience Corporation.
All rights 参考文献 ”・ The Reemergence of Datalog” by Michael Fogus, InfoQ (http://www.infoq.com/presentations/Datalog) ”・ Datomic ”情報モデル by Rich Hickey,InfoQ (http://www.infoq.com/jp/articles/Datomic-Information-Model) ”・ Datomic ”のアーキテクチャ by Rich Hickey,InfoQ (http://www.infoq.com/jp/articles/Architecture-Datomic) ・ Datomic Tutorial (http://docs.datomic.com/tutorial.html) ”・ Datalog and Emerging Applications: an Interactive Tutorial” by Shan Shan Huan, et al. (http://www.cs.ucdavis.edu/~green/papers/sigmod906t-huang-slides.pdf) ・ "Datomic" by Takahiro Hozumi (https://speakerdeck.com/t_hozumi/datomicnituite)
Advertisement