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ł