SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
DP4版と侮るなかれ!

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

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

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

"仕事" : [

"共通システム開発",

"だいたいiOS",

"ときどきサーバ"

],

"連絡先" : "daichi.koike@gmail.com"

}
2
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 Server 4.0に搭載
• JDBC/ODBCドライバも開発中
4
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
N1QLへの期待
• 欠点であるクエリの改善になるか?
• SQLと同じ感覚で使えるか?
• パフォーマンスは?



etc…
5
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
Couchbaseの利用
様々なログデータをCouchbase Serverに集約し、アプリの
品質向上やビジネスの改善に活用しています。
6
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を作成する。その後はREST API経由でアクセス。
$ cbq-engine -datastore=http://HOSTNAME:8091/
$ cbq -engine=http://HOSTNAME:8093/
cbq> CREATE PRIMARY INDEX ON `bucket-name`;
11
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
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
13
DEMO
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
運用してみて
• トラブルは、検索が完了せずひたすら検索し続けるとい
う現象が一度発生したのみで、ちゃんと動く
• 数千ドキュメントをSELECTするぐらいなら1~2秒でレス
ポンスが返る(長くて5秒ぐらい)
• 正式版でのパフォーマンスに期待
14
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 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"
}
]
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
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
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"
}
]
}
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": [
省略
]
}
+
+
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"
}
]
}
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
EXPLAIN
クエリの実行計画も確認できる。
EXPLAIN SELECT * FROM tutorial WHERE children IS NULL
24
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"
}
]
}
}
]
}
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

場所: Theatre CYBIRD

軽食も出るらしいですよ。
28
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
告知2
Couchbase Administrator Workshop Tokyo
日程: 9/30(水) 10:00 ~ 17:00

場所: Theatre CYBIRD

軽食も出るらしいですよ。
29
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
30
ご清聴ありがとうございました

Mais conteúdo relacionado

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

Couchbase MeetUP Tokyo - #16
Couchbase MeetUP Tokyo - #16Couchbase MeetUP Tokyo - #16
Couchbase MeetUP Tokyo - #16kitsugi
 
DevOps on azure 高品質クラウドデザインを求めて
DevOps on azure 高品質クラウドデザインを求めてDevOps on azure 高品質クラウドデザインを求めて
DevOps on azure 高品質クラウドデザインを求めてAtsushi Kojima
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbixsoftlayerjp
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
 
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介Yuki Takahashi
 
[Track1-1] AIの売上予測を発注システムに組み込んだリンガーハットのデータ活用戦略
[Track1-1] AIの売上予測を発注システムに組み込んだリンガーハットのデータ活用戦略[Track1-1] AIの売上予測を発注システムに組み込んだリンガーハットのデータ活用戦略
[Track1-1] AIの売上予測を発注システムに組み込んだリンガーハットのデータ活用戦略Deep Learning Lab(ディープラーニング・ラボ)
 
IoTとServerlessの世界 Jawsfesta_1103
IoTとServerlessの世界 Jawsfesta_1103IoTとServerlessの世界 Jawsfesta_1103
IoTとServerlessの世界 Jawsfesta_1103Ryosuke Izumi
 
IoTあるじゃん北海道#1 by poggimo
IoTあるじゃん北海道#1 by poggimoIoTあるじゃん北海道#1 by poggimo
IoTあるじゃん北海道#1 by poggimoNorikatsu Oishi
 
【A-4】kintone API、JavaScript APIの実力
【A-4】kintone API、JavaScript APIの実力【A-4】kintone API、JavaScript APIの実力
【A-4】kintone API、JavaScript APIの実力Cybozucommunity
 
db tech showcase2016 - MySQLドキュメントストア
db tech showcase2016 - MySQLドキュメントストアdb tech showcase2016 - MySQLドキュメントストア
db tech showcase2016 - MySQLドキュメントストアShinya Sugiyama
 
Jaws serverless 1026_kyoso
Jaws serverless 1026_kyosoJaws serverless 1026_kyoso
Jaws serverless 1026_kyosoRyosuke Izumi
 
Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016Godai Nakamura
 
クラウド鎖国からクラウド維新へ
クラウド鎖国からクラウド維新へクラウド鎖国からクラウド維新へ
クラウド鎖国からクラウド維新へCybozucommunity
 
クラウド座談会資料
クラウド座談会資料クラウド座談会資料
クラウド座談会資料知礼 八子
 
Azureクラウドのネイティブアプリ、IoTとエッジAIの管理ソリューション
Azureクラウドのネイティブアプリ、IoTとエッジAIの管理ソリューションAzureクラウドのネイティブアプリ、IoTとエッジAIの管理ソリューション
Azureクラウドのネイティブアプリ、IoTとエッジAIの管理ソリューションJingun Jung
 
IDaaSにSign in with Appleをつないでみた
IDaaSにSign in with AppleをつないでみたIDaaSにSign in with Appleをつないでみた
IDaaSにSign in with AppleをつないでみたNaohiro Fujie
 
IoT×Blockchain活用事例 ~トイレに学ぶHyperledger Fabricシステム開発の勘所~
IoT×Blockchain活用事例 ~トイレに学ぶHyperledger Fabricシステム開発の勘所~IoT×Blockchain活用事例 ~トイレに学ぶHyperledger Fabricシステム開発の勘所~
IoT×Blockchain活用事例 ~トイレに学ぶHyperledger Fabricシステム開発の勘所~Hyperleger Tokyo Meetup
 
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)NTT DATA OSS Professional Services
 

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

Couchbase MeetUP Tokyo - #16
Couchbase MeetUP Tokyo - #16Couchbase MeetUP Tokyo - #16
Couchbase MeetUP Tokyo - #16
 
DevOps on azure 高品質クラウドデザインを求めて
DevOps on azure 高品質クラウドデザインを求めてDevOps on azure 高品質クラウドデザインを求めて
DevOps on azure 高品質クラウドデザインを求めて
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
 
[Track1-1] AIの売上予測を発注システムに組み込んだリンガーハットのデータ活用戦略
[Track1-1] AIの売上予測を発注システムに組み込んだリンガーハットのデータ活用戦略[Track1-1] AIの売上予測を発注システムに組み込んだリンガーハットのデータ活用戦略
[Track1-1] AIの売上予測を発注システムに組み込んだリンガーハットのデータ活用戦略
 
IoTとServerlessの世界 Jawsfesta_1103
IoTとServerlessの世界 Jawsfesta_1103IoTとServerlessの世界 Jawsfesta_1103
IoTとServerlessの世界 Jawsfesta_1103
 
10大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon201510大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon2015
 
IoTあるじゃん北海道#1 by poggimo
IoTあるじゃん北海道#1 by poggimoIoTあるじゃん北海道#1 by poggimo
IoTあるじゃん北海道#1 by poggimo
 
[Japan Tech summit 2017] CLD 022
[Japan Tech summit 2017]  CLD 022[Japan Tech summit 2017]  CLD 022
[Japan Tech summit 2017] CLD 022
 
【A-4】kintone API、JavaScript APIの実力
【A-4】kintone API、JavaScript APIの実力【A-4】kintone API、JavaScript APIの実力
【A-4】kintone API、JavaScript APIの実力
 
db tech showcase2016 - MySQLドキュメントストア
db tech showcase2016 - MySQLドキュメントストアdb tech showcase2016 - MySQLドキュメントストア
db tech showcase2016 - MySQLドキュメントストア
 
Jaws serverless 1026_kyoso
Jaws serverless 1026_kyosoJaws serverless 1026_kyoso
Jaws serverless 1026_kyoso
 
Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016
 
クラウド鎖国からクラウド維新へ
クラウド鎖国からクラウド維新へクラウド鎖国からクラウド維新へ
クラウド鎖国からクラウド維新へ
 
クラウド座談会資料
クラウド座談会資料クラウド座談会資料
クラウド座談会資料
 
Azureクラウドのネイティブアプリ、IoTとエッジAIの管理ソリューション
Azureクラウドのネイティブアプリ、IoTとエッジAIの管理ソリューションAzureクラウドのネイティブアプリ、IoTとエッジAIの管理ソリューション
Azureクラウドのネイティブアプリ、IoTとエッジAIの管理ソリューション
 
IDaaSにSign in with Appleをつないでみた
IDaaSにSign in with AppleをつないでみたIDaaSにSign in with Appleをつないでみた
IDaaSにSign in with Appleをつないでみた
 
IoT×Blockchain活用事例 ~トイレに学ぶHyperledger Fabricシステム開発の勘所~
IoT×Blockchain活用事例 ~トイレに学ぶHyperledger Fabricシステム開発の勘所~IoT×Blockchain活用事例 ~トイレに学ぶHyperledger Fabricシステム開発の勘所~
IoT×Blockchain活用事例 ~トイレに学ぶHyperledger Fabricシステム開発の勘所~
 
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
 

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

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