8. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
データ活用例
主要データは集計し、社内ツール上で公開しています。
8
9. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
データ活用例
主要データは集計し、社内ツール上で公開しています。
9
このツールとN1QLを連携
10. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
N1QLの導入目的
開発時に蓄積されたクラッシュ情報をエンジニアが自由に抽
出できるようにし、品質向上に役立てる。
10
11. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
N1QL DP4版の導入手順
エンジンをCouchbase Serverに接続した後、PRIMARY
INDEXを作成する。その後はREST API経由でアクセス。
$ cbq-engine -datastore=http://HOSTNAME:8091/
$ cbq -engine=http://HOSTNAME:8093/
cbq> CREATE PRIMARY INDEX ON `bucket-name`;
11
12. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
4.0 beta版では
エンジンは本体に内蔵されている。グローバルセカンダリイン
デックス(GSI)を指定できるようになった。
$ cbq -engine=http://HOSTNAME:8093/
cbq> CREATE PRIMARY INDEX ON `bucket-name` USING GSI;
12
18. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
ANY/EVERY - SATISFIES
配列の各要素を走査し、
条件を満たすドキュメントのみ返す。
SELECT * FROM tutorial
WHERE ANY child IN tutorial.children
SATISFIES child.age > 10 END
ANY - 配列のいずれかの要素
EVERY - 配列のすべての要素
18
"children": [
{
"age": 17,
"fname": "Aiden",
"gender": "m"
},
{
"age": 2,
"fname": "Bill",
"gender": "f"
}
]
19. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
ANY/EVERY - SATISFIES
Viewとの比較。
SELECT * FROM tutorial
WHERE ANY child IN tutorial.children SATISFIES child.age > 10 END
function (doc, meta) {
if (meta.type === 'json' && doc.children){
for (i = 0; i < doc.children.length; i++) {
if (doc.children[i].age > 10) {
emit(meta.id, doc);
}
}
}
}
19
20. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
JOIN
複数ドキュメントをJOINする。
以前は不可能だったBucketをまたいだJOINも可能。
SELECT * FROM users_with_orders usr
JOIN orders_with_users orders ON KEYS ARRAY s.order_id
FOR s IN usr.shipped_order_history END
20
"shipped_order_history": [
{
"order_id": "T103929516925"
},
{
"order_id": "T573145204032"
}
]
order_idがorders_with_usersのKey
21. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
UNNEST
ネストした要素のネストを解除し、
親要素と結合する。
SELECT tutorial.fname AS pfname,
children.age, children.fname, children.gender
FROM tutorial
UNNEST children
WHERE tutorial.fname = 'Dave'
childrenを単独ドキュメントのように操作できる。
21
{
"fname": "Dave",
"children": [
{
"age": 17,
"fname": "Aiden",
"gender": "m"
},
{
"age": 2,
"fname": "Bill",
"gender": "f"
}
]
}