NoSQL Hackathon 25.10.2014, Wrocław Tutorial

Transkrypt

NoSQL Hackathon 25.10.2014, Wrocław Tutorial
NoSQL Hackathon 25.10.2014, Wrocław
Tutorial
Na początek
1. Do pobrania – binarki serwera bazy danych: http://1drv.ms/1nYhoiq
 więcej info tutaj:
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools
.DynamoDBLocal.html
2. Należy upewnić się że maszyna wirtualna Java jest zainstalowana i program java.exe
jest dostępny z linii komend
3. Uruchomienie usługi DDB na porcie 12345, dane będą składowane w folderze
./DB12345 : java -Djava.library.path=./DynamoDBLocal_lib -jar
DynamoDBLocal.jar -port 12345 -dbPath ./DB12345
4. Konsolę zostawiamy otwartą (w trakcie komunikacji z bazą powinny być w niej
wyświetlane komunikaty diagnostyczne)
5. Należy pobrać SDK AWS i dodać odpowiednie referencje do projektu (dla .NET
wystarczy AWSSDK.dll):
 http://aws.amazon.com/sdk-for-net/
 http://aws.amazon.com/sdk-for-java/
 http://aws.amazon.com/sdk-for-python/
 http://aws.amazon.com/sdk-for-ruby/
Aplikacja demonstracyjna
Możemy zacząć tworzyć aplikację kliencką. Na potrzeby treningowe spróbujemy napisać
prosty czat, w którym wszyscy użytkownicy mogą ze sobą prowadzić konwersacje.
Model danych:
 Tabele:
o User
o chat
o userChat
www.pgs-soft.com
PGS Software S.A.
ul. Klecinska 123
54-413 Wroclaw, Poland
Phone: +48 71 79 82 692
E-mail: [email protected]

o message
Klucze i atrybuty
o user:
 HK = userName – ten klucz umożliwi nam po prostu pobranie
użytkownika po jego ID
 Atrybuty: lastActivity
o chat:
 HK = chatID – podobnie jak tabela user
 Atrybuty: ownerUserName, participants (lista wartości userName)
o userChat:
 HK = userName
 RK = mostRecentMessageTimestamp
 Ten złożony klucz (HK+RK) pozowli na pobranie listy czatów
dostępnych dla danego użytkownika (HK) i posortowanie tej
listy po dacie ostatniej wiadomości w czacie (RK). Jednocześnie
można filtrować tą tabelę po RK ale tylko w ramach stałego HK.
Tzn. dla użytkownika X możemy pobrać N czatów, posortowane
po dacie ostatniej wiadomości (rosnąco lub malejąco).
 Atrybuty: chatId
o message – zadanie domowe
Kod (C#):
W projekcie VS (http://1drv.ms/1rv3ic6) znajdują się 2 istotne dla nas klasy:
DataModel.cs
Przechowuje ona definicje tabel w postaci klas (wykorzystujących jednocześnie atrybuty
mapujące klasy na tabele – jest to ORM wbudowany w SDK) oraz logikę tworzenia tych tabel
za pomocą „low level API” (IamazonDynamoDB).
Zadanie domowe


dopisać logikę tworzenia brakującej tabeli „message”
stworzyć obiektowy model danych tabeli „message”
www.pgs-soft.com
PGS Software S.A.
ul. Klecińska 123
54-413 Wrocław
TEL: +48 71 79 82 692
EMAIL: [email protected]
KRS: 0000304562
NIP: 897-17-19-181
Sąd Rejonowy dla Wrocławia Fabrycznej
VI Wydział Gospodarczy
Kapitał zakładowy: 557 658,10 zł
Kapitał wpłacony: 557 658,10 zł
Gdy pracujemy z tabelami (tworzenie, kasowanie) musimy korzystać z „low level API”:
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LowLevelDotNetTab
leOperationsExample.html
Gdy pracujemy z danymi (CRUD) możemy korzystać z ORMa wbudowanego w SDK (using
Amazon.DynamoDBv2.DataModel;):
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DotNetSDKHighLeve
l.html
ChatService.cs
Realizuje następujące operacje:
 zalogowanie/stworzenie użytkownika: GetUser(string userName)
 stworzenie nowego czatu: CreateChat(string userName, List<string> participants)
 pobranie listy czatów dostępnych dla użytkownika (w pierwszej kolejności te z
najnowszymi wiadomościami, pobieramy tylko czaty z ostatnich 3 dni):
GetChats(string userName)
Zadanie domowe – implementacja brakujących metod:
 stworzenie nowej wiadomości: WriteMessage
 pobranie listy wiadomości dla danego czatu: GetMessages
Test
Przykładowa aplikcja konsolowa (Program.cs) zawarta w projekcie DDB pozwala na
wykonanie kilku poleceń w linii komend, pozwalających na interakcję ze stworzoną bazą
danych:
 login <username>
 logout
 addchat
 getchats
Zadanie domowe – implementacja obsługi komend:
 post <message>
 getchatmessages <chatId>
www.pgs-soft.com
PGS Software S.A.
ul. Klecińska 123
54-413 Wrocław
TEL: +48 71 79 82 692
EMAIL: [email protected]
KRS: 0000304562
NIP: 897-17-19-181
Sąd Rejonowy dla Wrocławia Fabrycznej
VI Wydział Gospodarczy
Kapitał zakładowy: 557 658,10 zł
Kapitał wpłacony: 557 658,10 zł
Dodatkowe informacje
Dla Visual Studio oraz Eclipse dostępne są pluginy pozwalające na łatwe uruchomienie usługi
lokalnej DDB oraz podgląd i edycję danych:
 http://aws.amazon.com/visualstudio/
 http://aws.amazon.com/eclipse/
www.pgs-soft.com
PGS Software S.A.
ul. Klecińska 123
54-413 Wrocław
TEL: +48 71 79 82 692
EMAIL: [email protected]
KRS: 0000304562
NIP: 897-17-19-181
Sąd Rejonowy dla Wrocławia Fabrycznej
VI Wydział Gospodarczy
Kapitał zakładowy: 557 658,10 zł
Kapitał wpłacony: 557 658,10 zł