:sparkles: PWA :sparkles:
Twarz autora bloga

Piotr Kowalski

Organizator WarsawJS Trener YouTuber

DevMeetings: noSQL Databases [Relacja Live]


Pierwszy raz DevMeetings w całości został poświęcony noSQL'owym bazom danych. Poprawnie mówiąc storage-om dokumentów JSON.

Baner reklamujący artykuł

Jest to kontynuacja spotkań DevMeetings-owych bezpośrednio po DevCapmie. Kampania wrześniowa devcampa opiera się o 3 Mocne DevMeetings-y:

Miejsce: Millenium Plaza (milleniumplaza.pl/)
Prowadzący: David de Rosier
Skład: 22 programistów piszących na co dzień w językach takich jak:

  • Java
  • Python
  • Ruby
  • JavaScript

Cel: Stworzenie aplikacji na kształt prostego Twittera

Zaczynamy od migracji danych z bazy MySQL'owej w celu przebadania wydajności migracji z bazy relacyjnej do bazy dokumentowej.

Wykorzystywane architektur NoSQL:

  • MongoDB
  • CouchDB
  • Redis
  • Cassandra

Do napisania:

  • Migrator w Node.js z mysql do dowolnej platformy NoSQL-owej
  • Interfejs www, dzięki któremu użytkownicy będą mogli korzystać z aplikacji
  • Połączenie z kodem Adama Jodłowskiego z poprzedniego DevMeetingu w Poznaniu
  • Zaprezentowanie działającej aplikacji Twitter'o podobnej

Realizacja

9:25

  • Zaczynamy! Czyli czas start: 12 godzin!
  • Na sali są ludzie, którzy posiadają olbrzymią wiedzę nt. związany z NoSQL-em
  • Jak i (begginerzy) tacy, którzy posiadają wiedzę o JS, Java, Python, Ruby, a chcą się dowiedzieć "czegoś" o bazach danych NoSQL'owych i zastosować w praktyce

10:13

  • Pytania (już kilkanaście) - istny flame się rozpoczął. Dobrze jeśli już od początku u uczestników szkolenia wyczuwa się zapał i chęci do współpracy.
  • David omawia widoki tymczasowe w CouchDB (wołamy funkcje na wszystkich dokumentach ), czyli tzw. persistent view

10:24

  • Krótkie przedstawienie najbardziej popularnej architektury NoSQL - MongoDB
  • "MongoDB - try it" - ciekawa aplikacja webowa dzięki której piszemy w MongoDB bez konieczności posiadania dodatkowego oprogramowania, kod pisany w polu uruchamia się online'owo w locie

10:36

  • Nowy temat wzbudzający srogą ciszę na sali - Apache Cassandra. Jak się później okazało, nikt, absolutnie nikt, poza David'em nie miał styczności z tą technologią.
  • Założenia Cassandry - Gromadzenie ogromnej ilości danych
  • Główne pytanie: jak definiuje się czas "t" ? Odpowiedź: w dniach
  • Cassandra w swojej naturze posiada oddzielny protokół do komunikacji pomiędzy węzłami

10:40

  • Slajdy się skończyły
  • What next?

10:43

  • Witamy nowego prowadzącego z sali
  • David na chwilę usiadł na krzesełku oddając głos uczestnikowi który podobno miał już doświadczenie w Redis'ie - jako jedyny pracował na tego rodzaju bazie danych ze wszystkich biorących udział w DevMeetings'ie

10:48

  • Burza mózgów dot. Redis'a
  • Po przedstawieniu pokrótce wszelkich głównych właściwości Redis'a można stwierdzić, że prelegent dość mocno wykorzystywał w praktyce tę bazę w swoich aplikacjach

11:04 - 11:24:

  • Przerwa. A po przerwie... kodowanie

12:13

  • Nasz projekt:
    • mysql
    • cassandra
    • Node.js
    • express
    • Node.js razem z bazą: cassandra - node_cassandra
    • Node.js razem z bazą: mysql - node-mysql
    • CoffeeScript
  • Doszedłem do porozumienia z kolegą z teamu, że CoffeeScript jest milion razy szybszy!
  • Pierwsze zadanie - migracja danych z bazy mysql do cassandra

13:12

  • Szybki re-search sterowników - pewnie będzie trudno coś znaleźć
  • Po kilku minutach znalazłem 3 różne implementacje sterowników. Zaczynamy od node-thrift!
  • Kompilacja thrift'a - sterownik do łączenia do cassandra

13:54

  • CONNECTED! - i think so :smile:
  • Po testach kilku sterowników, wreszcie udało się połączyć z Cassandrą przez NodeJS

14:08

  • Czas na przerwę obiadową.
  • Nie wiem, czy pizza jest dobrym pomysłem na obiad ale idziemy kolokwialnie "wrzucić coś na ząb"

15:18

  • Powoli wszyscy się schodzą.
  • Planowany czas rozpoczęcia drugiej części to 15:45

17:47

  • Node + Cassandra - sterowniki jak i dokumentacja są blee! :mrgreen:
  • Teraz widzę, jak bardzo potrzebna jest dobra dokumentacja do projektu!
  • Będę musiał pomyśleć nad lepszą dokumentacją do pklib'a

19:00

  • Niestety nie udało się, polegliśmy na sterowniku Node.js do cassandry
  • Na koniec David zaprezentował przykład ostatniego brainfuck'a

Analizujcie (bez uruchomienia w Firebugu) jaki będzie rezultat tego jednolinijkowego skryptu.

39595885326972..toString(2<<-~-~2);

Podsumowanie i wnioski

Kolejne szkolenie z serii DevMeetings, dzięki któremu nasz poziom umiejętności radykalnie się powiększył. Dzisiejsza odsłona miała na celu zaprezentowanie plusów i minusów konkretnych środowisk bazodanowych.

  • Sterownik dla NodeJS do Cassandry zawiódł
  • Prawdopodobnie najlepsze sterowniki są napisane w Javie
  • Najszybciej do zaimplementowania dzisiejszej aplikacji przyszło zespołowi, który używał jako bazy NoSQL'owej systemu Redis