Skip to content

Commit 1d7efb1

Browse files
committed
cloud firestore added
1 parent 2b5850f commit 1d7efb1

File tree

5 files changed

+74
-0
lines changed

5 files changed

+74
-0
lines changed

_drafts/2019-04-01-cloud_storage.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ override fun onSaveInstanceState(outState: Bundle) {
146146
super.onSaveInstanceState(outState)
147147
//save the reference to upload task if is in progress
148148
fileRef?.let { outState.putString("reference", it.toString()) }
149+
//remove passed listeners
149150
}
150151

151152
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
---
2+
layout: post
3+
title: "Cloud Firestore"
4+
date: 2019-04-08
5+
categories: ["Firebase"]
6+
image: firebase/cloud_firestore
7+
github: firebase/tree/master/cloud_firestore
8+
description: "Firebase"
9+
version: Firebase-Firestore 18.0
10+
keywords: "firebase, chmura, dane, baza, cloud, storage, database, nosql, android, programowanie, programming"
11+
---
12+
13+
## Wprowadzenie
14+
`Cloud Firestore` jest elastyczną, skalowalną, hierarchiczną bazą danych `NoSQL` w chmurze służącą do przechowywania i synchronizowania w czasie rzeczywistym danych między klientami i serwerem. Oferuje wsparcie w trybie `offline` co ułatwia budowania responsywnych aplikacji działających niezależnie od jakości połączenia sieciowego. Umożliwia integracje z `Google Cloud Platform` i funkcjonalnościami `Firebase` jak np. `Cloud Functions` czy `Authentication` oraz innymi zewnętrznymi usługami. Dostęp i modyfikacja danych odbywa się zgodnie z zasadami zachowania bezpieczeństwa i prywatności, które mogą być dodatkowo definiowane za pomocą reguł w konsoli Firebase.
15+
16+
## Model
17+
Dane reprezentowane są w postaci dokumentów (zbliżonych w stukurze do formatu `JSON`) przechowywanych w zorganizowanej kolekcji w hierarchicznej strukturze bazy danych `NoSQL` (w przeciwieństwie do `SQL` nie ma tabel ani wierszy). Każdy `dokument` składa się z nazwy, zbioru par `klucz - wartość` (prymityw lub obiekt złożony) i może posiadać obiekty zagnieżdzone i podkolekcje. `Kolekcje` pełnią rolę kontenera dla różnych dokumentów i nie mogą posiadać innych kolekcji, a w doborze ich zawartości warto zachować logiczny porządek dzieląc dokumenty ze względu na kategorie i przeznaczenie co upraszcza poruszanie się po strukturze w kodzie klienta. `Podkolekcja` jest kolekcją w dokumencie i służy do budowania zagnieżdzonej struktury folderów.
18+
19+
//TODO rysunek
20+
21+
Ze względu na optymalizacje wydajności dostępu do bazy danych wprowadzony został mechanizm indeksowania, który wyróżnia dwa rodzaje indeksów: `single-field` (przechowuje posortowaną mapę wszystkich dokumentów zawierających dane pole) i `composite` (przechowuje posortowaną mapę wszystkich dokumentów zawierających wiele danych pól). Cloud Firestore jest zaprojektowany przede wszystkim z myślą o dużych kolekcjach małych dokumentów. Aby uzyskać dostęp do dokumentu lub kolekcji należy uzyskać `referencje`.
22+
23+
{% highlight kotlin %}
24+
private fun createReferences() {
25+
val database = FirebaseFirestore.getInstance()
26+
val collectionRef = database.collection("collection")
27+
val documentRef = collectionRef.document("document")
28+
val documentRef2 = database.document("collection/document") //or use direct path instead
29+
val nestedDocumentRef = documentRef.collection("subcollection").document("nested")
30+
}
31+
{% endhighlight %}
32+
33+
## Typy
34+
Dokumenty mogą przechowywać wartości `prymitywów` (numeryczne, logiczne, tekstowe), `obiekty złożone` (koordynaty geograficzne, data i czas), `tablice`, `mapy` i `referencje` do innych dokumentów.
35+
36+
{% highlight kotlin %}
37+
private fun createExampleData() {
38+
val document = HashMap<String, Any?>()
39+
document["text"] = "value"
40+
document["logic"] = true
41+
document["number"] = 9.99
42+
document["date"] = Timestamp(Date())
43+
document["list"] = arrayListOf(1,2,3)
44+
document["null"] = null
45+
}
46+
47+
private fun createSimilarData() {
48+
val person = HashMap<String, Any>()
49+
person["name"] = "John"
50+
person["surname"] = "Walker"
51+
person["born"] = 1805
52+
53+
//structure of data in the same collection don't have to be exactly the same
54+
val person2 = HashMap<String, Any>()
55+
person["name"] = "Jasper"
56+
person["second"] = "Newton"
57+
person["surname"] = "Daniel"
58+
person["born"] = 1850
59+
60+
//add to database by passing those objects
61+
}
62+
63+
private fun createDataByObject() {
64+
val person = Person("William", "Grant", 1839)
65+
//add to database by passing object
66+
}
67+
{% endhighlight %}
68+
69+
## Operacje
70+
//TODO
71+
72+
## Transakcje
73+
//TODO
424 KB
Loading
18.5 KB
Loading
47.8 KB
Loading

0 commit comments

Comments
 (0)