Más contenido relacionado
La actualidad más candente (20)
Similar a Firebaseの新しいデータベース (20)
Firebaseの新しいデータベース
- 3. Firebase
•Remote Config
•App Indexing
•Dynamic Links
•Invites
•AdWords
•AdMob
•Analytics
Develop Grow
Earn
•Cloud Messaging
•Authentication
•Realtime Database
•Cloud Firestore (beta)
•Storage
•Hosting
•Test Lab
•Crash Reporting
Oct.4, 2017
- 4. 機能の比較
• リアルタイム
• オフライン
• サーバーレス
• 複数DBプラン有り
• 柔軟なデータ構造
• 表現力の高いクエリ
• スケール可能な設計
RTDB CFS
RTDB
CFS
= Realtime Database
= Cloud Firestore
RTDB CFS
RTDB CFS
RTDB
CFS
CFS
CFS
https://firebase.google.com/docs/database/#key_capabilities
https://firebase.google.com/docs/firestore/#key_capabilities
- 5. 機能の比較
• リアルタイム
• オフライン
• サーバーレス
• 複数DBプラン有り
• 柔軟なデータ構造
• 表現力の高いクエリ
• スケール可能な設計
RTDB CFS
RTDB
CFS
= Realtime Database
= Cloud Firestore
RTDB CFS
RTDB CFS
RTDB
CFS
CFS
CFS
https://firebase.google.com/docs/database/#key_capabilities
https://firebase.google.com/docs/firestore/#key_capabilities
- 8. JSON Realtime Database
{
"users": {
"nvGvwR5": {
"name": "Nobita",
"skill": "Hirune"
},
"zzD7UAv": {
"name": "Suneo",
"skill": "Jiman"
}
}
}
データの取得イメージ
/users/nvGvwR5/name
➡ "Nobita"
/users/nvGvwR5
➡ {
"name": "Nobita",
"skill": "Hirune"
} ,
- 9. • 指定した位置以下の子孫がすべて取得される
Realtime Database
注意点
{
"channels": {
"-CSP36ah": {
"name": "general",
"messages": {
"-MV5ahcO": {"from": "AAd7UZv", "message": "何してますか?忙しいですか..."},
"-MV5yaC0": {"from": "nvGvwR5", "message": "昼寝してた"},
"-MV6Almn": {"from": "AAd7UZv", "message": "近くのコンビニエンスストアで..."},
"-MV6L38V": {"from": "nvGvwR5", "message": "まかせといてよ"},
...
}
},
"-CSP4CQz": {
"name": "random",
"messages": { ... }
},
"-CSP4mAr": {
"name": "oops",
"messages": { ... }
},
...
}
}
😇「チャンネル一覧を取
得しようとしたら、チャ
ンネル内のメッセージも
含めてすべてを取得し
ちゃった☆」
- 10. • なるべくデータのネストを避ける工夫が必要
• アプリの挙動を考慮に入れて設計
Realtime Database
注意点
{
"channels": {
"-CSP36ah": { "name": "general" },
"-CSP4CQz": { "name": "random" },
"-CSP4mAr": { "name": "oops" },
...
},
"messages": {
"-CSP36ah": {
"-MV5ahcO": {"from": "AAd7UZv", "message": "何してますか?忙しいですか..."},
"-MV5yaC0": {"from": "nvGvwR5", "message": "昼寝してた"},
"-MV6Almn": {"from": "AAd7UZv", "message": "近くのコンビニエンスストアで..."},
"-MV6L38V": {"from": "nvGvwR5", "message": "まかせといてよ"},
...
},
"-CSP4CQz": { ... },
"-CSP4mAr": { ... },
...
}
}
- 16. サブコレクション
{
"name": "general"
}
CSP36ah
channels
messages
{ "from": "AAd7UZv", "message": "何してますか?忙しいですか..." }
MV5ahcO
{ "from": "nvGvwR5", "message": "昼寝してた" }
MV5yaC0
{ "from": "AAd7UZv", "message": "近くのコンビニエンスストアで..." }
MV6Almn
{ "from": "nvGvwR5", "message": "まかせといてよ" }
MV6L38V
collection("channels").document("CSP36ah").collection("messages")
Cloud Firestore
- 18. サンプルデータ
• "shiitake":
生しいたけの生産量(トン)
• "konamon":
人口10万人あたりのお好み焼き・
焼きそば・たこ焼き店の事業所数
Realtime Database
"shiitake":
「平成28年特用林産物生産統計調査」(農林水産省) (http://www.maff.go.jp/j/tokei/kouhyou/
tokuyo_rinsan/)
"konamon":
「人口推計」(総務省統計局)(http://www.e-stat.go.jp/SG1/estat/
List.do?bid=000001039703&cycode=0)より「都道府県別人口」の平成26年、
「平成26年経済センサス‐基礎調査結果」(総務省統計局)(http://www.e-stat.go.jp/SG1/
estat/List.do?bid=000001064598&cycode=0)より「産業(小分類)、経営組織(5区分)別全事
業所数、男女別従業者数及び1事業所当たり従業者数-全国、都道府県」
から算出
- 19. ソート Realtime Database
Database.database().reference(withPath: "pref")
.queryOrdered(byChild: "shiitake")
.observe(.childAdded) { snapshot in
// ...
}
しいたけは、どこが多く生産してる?
"shiitake"の値でソートしてみよう!
<結果>
沖縄 | 26.1
佐賀 | 101.8
大阪 | 107.4
山梨 | 156.8
京都 | 167.6
東京 | 202.3
福井 | 213.8
山口 | 220.1
鳥取 | 232.1
青森 | 239.9
...
Database.database().reference(withPath: "pref")
.queryOrdered(byChild: "shiitake")
.observeSingleEvent(of: .value) { snapshot in
// ...
}
……これ、昇順じゃね?
→降順ソートはできない 😩
- 24. ソート
降順ソートが可能! 😀
Cloud Firestore
<結果>
徳島 | 8289.0
北海道 | 7613.5
岩手 | 4826.6
秋田 | 4223.6
群馬 | 3990.8
長崎 | 3432.6
栃木 | 2451.1
福島 | 2444.4
新潟 | 2437.7
宮崎 | 2384.5
...
Firestore.firestore().collection("pref")
.order(by: "shiitake", descending: true)
.getDocuments { snapshot, error in
// ...
}
- 30. 複数のフィールドでソート
Firestore.firestore().collection("pref")
.order(by: "chiho", descending: false)
.order(by: "konamon", descending: true)
.getDocuments { snapshot, error in
// ...
}
地方でソートし、その中は、
人口あたりの粉もん屋の数でソート
Cloud Firestore
<結果>
...
四国 | 徳島 | 29.9354838709677
四国 | 高知 | 27.9627163781625
四国 | 愛媛 | 21.4134275618375
四国 | 香川 | 17.896865520728
東北 | 青森 | 3.55555555555556
東北 | 福島 | 2.96371997956055
東北 | 宮城 | 2.91970802919708
東北 | 秋田 | 2.91627469426152
東北 | 山形 | 2.68863833477884
東北 | 岩手 | 2.60336906584992
近畿 | 兵庫 | 34.9237668161435
近畿 | 大阪 | 32.1634127073694
近畿 | 京都 | 23.1735159817352
近畿 | 和歌山 | 21.3562753036437
近畿 | 奈良 | 18.6599423631124
近畿 | 三重 | 14.7202607278653
近畿 | 滋賀 | 11.032531824611
...