Pierwszy raz DevMeetings w całości został poświęcony noSQL'owym bazom danych. Poprawnie mówiąc storage-om dokumentów JSON.
Jest to kontynuacja spotkań DevMeetings-owych bezpośrednio po DevCapmie. Kampania wrześniowa devcampa opiera się o 3 Mocne DevMeetings-y:
- Wydajność Node.JS kontra reszta świata
- Bazy NoSQL'owe - naturalny storage aplikacji JS'owych
- Middle-End w oparciu w Server-side JS
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 😄
- 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!
- 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.
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