tiedot?
Goで書かれたNoSQL DB。
触ってみるメモを書いとく。
環境
- Golangをインストール済みであること
- git, mercurialがインストール済みであること
- $GOPATH, $GOROOTが設定済みであること
インストール方法
> go get github.com/HouzuoGuo/tiedot
tiedotの立ち上げ
> tiedot -mode=httpd -dir=/tmp/MyDatabase -port=8080
tiedot Web UI
Web UIが用意されている。admin画面を開いてみる
> open http://localhost:8080/admin
Web UIから操作をする
コレクションとやらを作ってみよう。
"New Collection"ボタンをクリックして、
Modalの中にコレクション名を入れ、作成してみた。
ドキュメントを作成
- "New Doc"を押してドキュメントを作る
- JSON形式でドキュメントを書いていく
- 新しいドキュメントがhogehogeコレクションに追加された。
- コレクションのindex一覧画面にも、追加したドキュメントが表示されている
検索するためにindexを設定
クエリを投げるためにはindexを設定しなければいけないので、
indexを設定する。
- index追加
"New Index"ボタンを押す。
- modalにてindexに指定するキー名を入力する
ドキュメントとして保存した時に利用したキー名である
age, name, gadgetsを入力。
ドキュメントに保存した値をGUIで取得
name=Keiji Matsuzaki となるドキュメントがないか検索を行うクエリをGUIにて発行する
- ドキュメントの画面で"Query"ボタンを押す
- 検索するクエリを書く
検索対象となるドキュメントは1件しか保存していないが、
クエリを書いてみることにする
{ "eq": "Keiji Matsuzaki", "in": ["name"]}
- クエリの実行
"Execute" ボタンを押して、検索クエリに合うドキュメントがあれば、
ドキュメントが表示される。
- 無効なクエリを実行
検索に引っかからないクエリを発行した場合は、ドキュメントは出てこない。
CLIから操作
tiedotにはCLIからも操作が可能になるようにAPIが用意されている。
詳しくは、API reference and embedded usageを参考のこと。
コレクションの作成
> curl "http://localhost:8080/create?col=hogehoge"
コレクションが作られたか確認する
> curl "http://localhost:8080/all"
["hogehoge"]
ドキュメントをコレクションに対して作成する
> curl --data-ascii \
doc='{"name": "Keiji Matsuzaki", "age": 32, "gadgets": ["iPhone 6 Plus", "Nexus 7", "Mac Book Pro Retina Late 2012"]} \
'http://localhost:8080/insert?col=hogehoge'
1652584854220917731
帰ってきたIDを元にドキュメントを検索
一意なIDが生成されるので、検索が容易。
> curl "http://localhost:8080/get?col=hogheoge&id=1652584854220917731"
{"age":32,"gadgets":["iPhone 6 Plus","Nexus 7","Mac Book Pro Retina Late 2012"],"name":"Keiji Matsuzaki"}
検索クエリを投げる
indexを作成する
indexを作成しなければクエリを投げることができない。
age, name, gadgetsのindexを作成する
> curl "http://localhost:8080/index?col=hogehoge&path=age"
> curl "http://localhost:8080/index?col=hogehoge&path=name"
> curl "http://localhost:8080/index?col=hogehoge&path=gadgets"
クエリを投げる
- "name" = "Keiji Matsuzaki" なドキュメントを検索する
> curl --data-ascii \
doc='{"name": "Keiji Matsuzaki", "in": ["name"]}' \
http://localhost:8080/query?col=hogehoge'
{"1652584854220917731":{"age":32,"gadgets":["iPhone 6 Plus","Nexus 7","Mac Book Pro Retina Late 2012"],"name":"Keiji Matsuzaki"}}
サーバのシャットダウンを行う
- /shutdown APIにアクセスすれば良い
> curl "http://localhost:8080/shutdown"
curl: (52) Empty reply from server
触ってみて
CouchDBの代わりになるのだろうか、とふと思ったり...
開発時のJSONでレスポンスを返すAPI サーバのモックアップとして利用できるんじゃないかなあ。