とりあえず動かすして遊べるようにする.
ノード名 | 説明 |
---|---|
Zero | Dgraph Zero controls the Dgraph cluster, assigns servers to a group, and re-balances data between server groups. |
Alpha | Dgraph Alpha hosts predicates and indexes. |
Ratel | Ratel serves the UI to run queries, mutations & altering schema. |
ついでにpredicateとindexの説明.
用語 | 説明 |
---|---|
Predicate | Predicates are either the properties associated with a node or the relationship between two nodes. |
Index | Indexes are the tokenizers that can be associated with the predicates to enable filtering using appropriate functions. |
Get Started - Quickstart Guideから引用
少し補足するとPredicateとはノードのプロパティやノードを繋ぐエッジのことです. Indexは他のデータベースと大体同じ意味で索引付けのことで検索するときに指定します.
とりあえずお試しで動かすならdgraph/standaloneというイメージを使います.
docker pull dgraph/standalone:v20.03.0
起動は以下のようにします.
docker run --name first-dgraph --rm -it -p 8080:8080 -p 9080:9080 -p 8000:8000 -v my-vol:/dgraph dgraph/standalone:v20.03.0
とりあえ
オプション | 説明 |
---|---|
name | 実行されるコンテナのインスタンスに付けられる名前です |
rm | 停止するときにコンテナが削除されます |
it | interactive ttyでttyを通じてコンテナとやり取りできます. 今回はひたすらログが流れてきます. |
0 | ポート・フォーワーディングといってホストとクライアントの間でポートの対応を付けを行います |
v | ボリュームをマウントします. my-volはdockerが管理するボリュームで/dgraphがコンテナ側のマウントポイントです |
注意点はボリュームのマウント・ポイントは/dgraphに指定する必要があります. しないとrmオプションの効果でコンテナを停止するとデータごと消えてしまいます(お試しだから良いのかもしれませんが).
実行後以下のコマンドでmy-volボリュームが作られていることを確認しましょう.
docker volume ls
http://localhost:8000/にアクセスします.
真ん中のLatestを選びます.
スキーマの設定やデータの投入, クエリなどを実行できます.
スキーマの設定方法は2つあります.
基本的にノードを投入すると自動的にスキーマが定義されます. そのため一度スキーマを定義しても新しいプレディケートがあると勝手にスキーマが更新されます.
例えばConsoleのMutationタブに以下をコピペします.
{
"set":[
{
"name": "Michael",
"age": 40
}
]
}
Runをクリックするとスキーマが生成されます. 左のSchemaタブを選ぶとプレディケートとタイプが表示されます.
次にアドレスというプレディケートを加えて新しいデータを投入します.
{
"set":[
{
"name": "Michael",
"age": 40,
"e-mail" : "example.com"
}
]
}
するとe-mailというプレディケートが追加されました.
このため導入するデータのバリデーションはアプリケーション側で行うのが良さそうです.
ではスキーマが無駄なのかというと, そうでもないようです. Ratel UIでQueryを入力する際に補完されるようになるようです. ただ階層とかは考慮してくれないようです.
ボリュームにはもう一つマウント・ボリュームというのがあります. こちらもホスト側のフォルダをコンテナ側にマウントする点は同じですが, フォルダを自分で指定する必要があります. DockerはWindows, macOS, そして各Linuxディストリビューションで提供されマルティ・プラットフォームでコンテナを動かすことができます. しかしこのマウント・ポイントを指定してしまうと互換性がなくなってしまう可能性があります. そこで後からDocker側がボリュームを管理するような仕組みが導入されたようです. 領域はDockerの管理下にあるので, プラットフォームごとの際はDockerが吸収してくれます.
docker volume create my-vol
などで作ることができます. 例えばデータの投入は以下のようにします.
Androidアプリ開発者を目指しています. 興味あることリスト: https://t.co/ew3bb6grdJ Github: https://t.co/9btqysHqWr Qiita: https://t.co/ZVRhjouauX
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント