Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RethinkDB, czyli jak właściwy dobór narzędzi mo...

RethinkDB, czyli jak właściwy dobór narzędzi może uprzyjemnić pracę — Bazyli Brzóska @MeetJS

English title: RethinkDB, or how the right tools can turn your work into pleasure.

Slides are in Polish.
Video from the talk (subtitled in English): https://www.youtube.com/watch?v=yZsnu-D5JII
10th June 2015, Kraków, Poland

Attribution:
Some slides based on ones by Jorge Silva ‏(@thejsj), parts of the talk inspired by Slava Akhmechet's talks (@coffeemug).

Avatar for Bazyli Brzóska

Bazyli Brzóska

June 10, 2015

Other Decks in Programming

Transcript

  1. Czym jest RethinkDB? • Bezschematowa baza NoSQL przechowująca dokumenty JSON

    • Open source (GNU v3) • Rozproszona, zaprojektowana z myślą o skalowalności oraz zastosowaniami realtime
  2. Do zastosowań Realtime • Subskrybowanie zmian dla dowolnego zapytania (changefeeds)

    • Aktywny push zmian —> nigdy więcej — odpytywanie (polling) • Prostszy i przejrzystrzy kod
  3. Struktura RethinkDB Baza → Tabela → Dokument MySQL: Baza →

    Tabela → Rekord MongoDB: Baza→ Kolekcja → Dokument
  4. Przykładowy dokument { "name": "Will Riker", "position": "Commander", "height": 193,

    "birthdate": Mon Aug 19 2335, "ships": [ { "name": "USS Pegasus" }, { "name": "USS Potemkin" }, { "name": "USS Enterprise" }, ], ... }
  5. Wstęp do ReQL • ReQL to funkcjonalne rozszerzenie Twojego języka

    programowania • nie trzeba sklejać stringów z zapytaniami (jak w SQL) • nie trzeba ręcznie budować objektów JSON, czy używać specjalnych operatorów
 (jak w Mongo) • Zapytania ReQL tworzymy za pomocą łańcucha funkcji
  6. Anatomia zapytania ReQL let naszUzytkownik = r.table("users").get("12345"); let result =

    await naszUzytkownik
 .update(user => { "age": user("age").add(1) })
 .run();
  7. Inne, przyjemne możliwości • Join oraz podzapytania (brak w MongoDB)

    • Geoprzestrzenne indeksowanie — filtrowane zapytań “odległością” • Natywne funkcje daty oraz czasu • Przechowywanie obiektów binarnych • Przyjazny web-interface
  8. RethinkDB dziś i jutro • RethinkDB 2.0 • Integracja z

    Meteorem:
 https://github.com/Slava/meteor-rethinkdb • Emulator bazy client-side (reqlite):
 https://github.com/neumino/reqlite