Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
DP4版と侮るなかれ!

現時点でもN1QLは実用に耐えうる
株式会社サイバード ビジネス戦略統括本部
小池 大地 (Daichi KOI...
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
自己紹介
{

"名前" : "小池 大地",

"入社" : "2013年新卒入社",

"仕事" : [

"共通システム開発",

...
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
はじめに
N1QLの Developer Preview 4

時点での内容です。
3
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
N1QL(ニッケル)
• SQLライクなクエリ言語
• JSONドキュメントに対してSQLを使用して検索できる
• Couchbase S...
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
N1QLへの期待
• 欠点であるクエリの改善になるか?
• SQLと同じ感覚で使えるか?
• パフォーマンスは?



etc…
5
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
Couchbaseの利用
様々なログデータをCouchbase Serverに集約し、アプリの
品質向上やビジネスの改善に活用しています。...
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
サーバ構成
7
表側
裏側
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
データ活用例
主要データは集計し、社内ツール上で公開しています。
8
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
データ活用例
主要データは集計し、社内ツール上で公開しています。
9
このツールとN1QLを連携
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
N1QLの導入目的
開発時に蓄積されたクラッシュ情報をエンジニアが自由に抽
出できるようにし、品質向上に役立てる。
10
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
N1QL DP4版の導入手順
エンジンをCouchbase Serverに接続した後、PRIMARY
INDEXを作成する。その後はRES...
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
4.0 beta版では
エンジンは本体に内蔵されている。グローバルセカンダリイン
デックス(GSI)を指定できるようになった。
$ cbq...
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
13
DEMO
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
運用してみて
• トラブルは、検索が完了せずひたすら検索し続けるとい
う現象が一度発生したのみで、ちゃんと動く
• 数千ドキュメントをSE...
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
N1QLの可能性
データの蓄積から集計まで

Couchbaseに一元化できるかも?
15
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
N1QLの可能性
JDBC/ODBCドライバの提供もされる
ため、既存ツールとの連携が容易
16
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
N1QLの構文
面白そうな構文紹介
17
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
ANY/EVERY - SATISFIES
配列の各要素を走査し、

条件を満たすドキュメントのみ返す。
SELECT * FROM tu...
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
ANY/EVERY - SATISFIES
Viewとの比較。
SELECT * FROM tutorial 

WHERE ANY ch...
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
JOIN
複数ドキュメントをJOINする。

以前は不可能だったBucketをまたいだJOINも可能。
SELECT * FROM use...
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
UNNEST
ネストした要素のネストを解除し、

親要素と結合する。
SELECT tutorial.fname AS pfname,

...
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
UNNEST
22
{

"fname": "Dave",
"children": [
{
"age": 17,
"fname": "Ai...
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
UNNEST
Daveには2人の子供がいるので、

2個のドキュメントが実行結果として返される。
SELECT tutorial.fnam...
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
EXPLAIN
クエリの実行計画も確認できる。
EXPLAIN SELECT * FROM tutorial WHERE children...
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
EXPLAIN
{
"#operator": "Sequence",
"~children": [
{
"#operator": "Pri...
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
クエリの高機能化
従来のViewではできない(難しい)ことができるようになった。
26
N1QL
View
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
最後に
• Couchbase Liteでも使えるようになるか?
• 面白いので是非みなさん使ってみてください
27
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
告知1
Couchbase Mobile Workshop Tokyo
日程: 9/1(火) 10:00 ~ 17:00

場所: The...
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
告知2
Couchbase Administrator Workshop Tokyo
日程: 9/30(水) 10:00 ~ 17:00
...
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
30
ご清聴ありがとうございました
Upcoming SlideShare
Loading in …5
×

Couchbase Live Tokyo 2015 - DP4版と侮るなかれ!現時点でもN1QLは実用に耐えうる

772 views

Published on

Couchbase Live Tokyo 2015での講演資料です。

Published in: Technology
  • Be the first to comment

Couchbase Live Tokyo 2015 - DP4版と侮るなかれ!現時点でもN1QLは実用に耐えうる

  1. 1. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. DP4版と侮るなかれ!
 現時点でもN1QLは実用に耐えうる 株式会社サイバード ビジネス戦略統括本部 小池 大地 (Daichi KOIKE) 2015年8月31日 1 Couchbase Live Tokyo
  2. 2. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. 自己紹介 {
 "名前" : "小池 大地",
 "入社" : "2013年新卒入社",
 "仕事" : [
 "共通システム開発",
 "だいたいiOS",
 "ときどきサーバ"
 ],
 "連絡先" : "daichi.koike@gmail.com"
 } 2
  3. 3. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. はじめに N1QLの Developer Preview 4
 時点での内容です。 3
  4. 4. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. N1QL(ニッケル) • SQLライクなクエリ言語 • JSONドキュメントに対してSQLを使用して検索できる • Couchbase Server 4.0に搭載 • JDBC/ODBCドライバも開発中 4
  5. 5. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. N1QLへの期待 • 欠点であるクエリの改善になるか? • SQLと同じ感覚で使えるか? • パフォーマンスは?
 
 etc… 5
  6. 6. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. Couchbaseの利用 様々なログデータをCouchbase Serverに集約し、アプリの 品質向上やビジネスの改善に活用しています。 6
  7. 7. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. サーバ構成 7 表側 裏側
  8. 8. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. データ活用例 主要データは集計し、社内ツール上で公開しています。 8
  9. 9. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. データ活用例 主要データは集計し、社内ツール上で公開しています。 9 このツールとN1QLを連携
  10. 10. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. N1QLの導入目的 開発時に蓄積されたクラッシュ情報をエンジニアが自由に抽 出できるようにし、品質向上に役立てる。 10
  11. 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. 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
  13. 13. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. 13 DEMO
  14. 14. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. 運用してみて • トラブルは、検索が完了せずひたすら検索し続けるとい う現象が一度発生したのみで、ちゃんと動く • 数千ドキュメントをSELECTするぐらいなら1~2秒でレス ポンスが返る(長くて5秒ぐらい) • 正式版でのパフォーマンスに期待 14
  15. 15. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. N1QLの可能性 データの蓄積から集計まで
 Couchbaseに一元化できるかも? 15
  16. 16. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. N1QLの可能性 JDBC/ODBCドライバの提供もされる ため、既存ツールとの連携が容易 16
  17. 17. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. N1QLの構文 面白そうな構文紹介 17
  18. 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. 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. 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. 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" } ] }
  22. 22. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. UNNEST 22 {
 "fname": "Dave", "children": [ { "age": 17, "fname": "Aiden", "gender": "m" }, { "age": 2, "fname": "Bill", "gender": "f" } ] } { "age": 17, "fname": "Aiden", "gender": "m" } {
 "age": 2,
 "fname": "Bill",
 "gender": "f"
 } {
 "fname": "Dave", "children": [ 省略 ] } {
 "fname": "Dave", "children": [ 省略 ] } + +
  23. 23. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. UNNEST Daveには2人の子供がいるので、
 2個のドキュメントが実行結果として返される。 SELECT tutorial.fname AS pfname, 
 children.age, children.fname, children.gender
 FROM tutorial
 UNNEST children
 WHERE tutorial.fname = 'Dave' 23 { "results": [ { "age": 17, "fname": "Aiden", "gender": "m", "pfname": "Dave" }, { "age": 2, "fname": "Bill", "gender": "f", "pfname": "Dave" } ] }
  24. 24. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. EXPLAIN クエリの実行計画も確認できる。 EXPLAIN SELECT * FROM tutorial WHERE children IS NULL 24
  25. 25. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. EXPLAIN { "#operator": "Sequence", "~children": [ { "#operator": "PrimaryScan", "index": "#primary", "keyspace": "tutorial", "namespace": "default", "using": "default" }, { "#operator": "Parallel", "~child": { "#operator": "Sequence", "~children": [ { "#operator": "Fetch", "keyspace": "tutorial", "namespace": "default" }, 25 { "#operator": "Filter", "condition": "((`tutorial`.`children`) is null)" }, { "#operator": "InitialProject", "result_terms": [ { "star": true } ] }, { "#operator": "FinalProject" } ] } } ] }
  26. 26. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. クエリの高機能化 従来のViewではできない(難しい)ことができるようになった。 26 N1QL View
  27. 27. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. 最後に • Couchbase Liteでも使えるようになるか? • 面白いので是非みなさん使ってみてください 27
  28. 28. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. 告知1 Couchbase Mobile Workshop Tokyo 日程: 9/1(火) 10:00 ~ 17:00
 場所: Theatre CYBIRD
 軽食も出るらしいですよ。 28
  29. 29. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. 告知2 Couchbase Administrator Workshop Tokyo 日程: 9/30(水) 10:00 ~ 17:00
 場所: Theatre CYBIRD
 軽食も出るらしいですよ。 29
  30. 30. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. 30 ご清聴ありがとうございました

×