CouchDB. Michał Nowikowski



Podobne dokumenty
NoSQL Not Only SQL, CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Igor Wojnicki

NoSQL & relax with CouchDB

(Apache) CouchDB. Krzysztof Kulewski 2008

NoSQL Not Only SQL: CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Przetwarzanie dokumentów i widoków.

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

Przetwarzanie danych z wykorzystaniem technologii NoSQL na przykładzie serwisu Serp24

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

Specyfikacja techniczna. mprofi Interfejs API

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia

Front-end: solidne podstawy. Wszystko, co warto wiedzieć o HTML, CSS, JavaScript i Bootstrap.

Referat Pracy Dyplomowej

PROJEKT Z BAZ DANYCH

Tabela wewnętrzna - definicja

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

NoSQL: Riak. dr inż. Sebastian Ernst Katedra Informatyki Stosowanej

System kontroli wersji git

Aplikacje webowe z wykorzystaniem Node.js oraz Express

Oracle11g: Wprowadzenie do SQL

API transakcyjne BitMarket.pl

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Wybrane działy Informatyki Stosowanej

REFERAT O PRACY DYPLOMOWEJ

Podstawy wzorca MVC MODEL KON- TROLER WIDOK. Odpowiada za wyświetlenie danych użytkownikowi. Zawiera dane aplikacji oraz jej logikę.

Indeksowanie full text search w chmurze

MongoDB. wprowadzenie. dr inż. Paweł Boiński, Politechnika Poznańska

Bazy danych i ich aplikacje

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

REFERAT PRACY DYPLOMOWEJ

Część I Tworzenie baz danych SQL Server na potrzeby przechowywania danych

Programowanie Komponentowe WebAPI

Hurtownie danych wykład 5

Hbase, Hive i BigSQL

Tematy prac dyplomowych inżynierskich

OMNITRACKER Wersja testowa. Szybki przewodnik instalacji

Laboratorium nr 3 Podstawy Ruby on Rails

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Wspólna Platforma Intranetowa dla pracowników administracji rządowej. Projekt współfinansowany z Europejskiego Funduszu Społecznego

Zestawy zagadnień na egzamin dyplomowy (inżynierski) dla kierunku INFORMATYKA (studia I stopnia)

Budowanie interfejsów do baz danych

Szkolenie autoryzowane. MS Zaawansowany użytkownik programu SharePoint 2016

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

TOPWEB SPSall Budowanie portalu intranetowego

Tester oprogramowania 2014/15 Tematy prac dyplomowych


Obiektowość BD Powtórka Czas odpowiedzi. Bazy Danych i Systemy informacyjne Wykład 14. Piotr Syga

Wybrane działy Informatyki Stosowanej

PHP: bloki kodu, tablice, obiekty i formularze

E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL.

GIT. System Kontroli wersji GIT. Rafał Kalinowski

Programowanie w Ruby

Tytuł szkolenia: Angular 4 - budowanie nowoczesnych i wydajnych aplikacji przeglądarkowych

Usługi analityczne budowa kostki analitycznej Część pierwsza.

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

Kurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Dokumentacja imapliteapi

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Spis wzorców. Działania użytkownika Strona 147 Obsługa większości Działań użytkownika za pomocą kodu JavaScript przy użyciu metod obsługi zdarzeń.

Relacyjne bazy danych. Podstawy SQL

Informatyka (10) dr inż. Katarzyna Palikowska Katedra Transportu Szynowego i Mostów p. 4 Hydro

Monitoring procesów z wykorzystaniem systemu ADONIS

I. Opis przedmiotu zamówienia

Szkolenie. IBM Lotus - Podstawy projektowania aplikacji w Domino Designer 8.5. Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

STROJENIE BAZ DANYCH: INDEKSY. Cezary Ołtuszyk coltuszyk.wordpress.com

Oracle11g: Programowanie w PL/SQL

Projekt Fstorage. Łukasz Podkalicki Bartosz Kropiewnicki

Projektowanie i implementacja wysokowydajnych aplikacji w języku

Zacznij Tu! Poznaj Microsoft Visual Basic. Michael Halvorson. Przekład: Joanna Zatorska

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Wybrane działy Informatyki Stosowanej

Zestawy zagadnień na egzamin dyplomowy (inżynierski) dla kierunku INFORMATYKA (studia I stopnia)

Podstawy analizy danych numerycznych w języku Python

Szkolenie autoryzowane. MS 6232 Wdrażanie bazy danych Microsoft SQL Server 2008 R2

Tuning SQL Server dla serwerów WWW

Programowanie w Ruby

Specyfikacja interfejsów usług Jednolitego Pliku Kontrolnego

Podstawy technologii WWW

Programowanie obiektowe

Marlena Plebańska. Nowoczesny e-podręcznik

Opracowywanie map w ArcGIS Online i MS Office. Urszula Kwiecień Esri Polska

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

Edukacja Informacja statystyczna o szkołach i placówkach

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

Pakiety podprogramów Dynamiczny SQL

Słowa kluczowe jak góry lodowe

Bazy danych - wykład wstępny

Specyfikacja implementacyjna aplikacji serwerowej

Przesłanki powstania książki... xvi Dla kogo przeznaczona jest ta książka?... xvi Co znajdziemy wewnątrz książki?... xvii

OMNITRACKER Wersja testowa. Szybki przewodnik instalacji

Kowalski Marcin Wrocław, dn Jaśkiewicz Kamil Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami

Transkrypt:

CouchDB Michał Nowikowski

Agenda Wprowadzenie do CouchDB Mój przypadek Wyniki i wnioski

Dokumenty CouchDB Format JSON Pary nazwa wartość Możliwe tablice i struktury Załączniki Brak limitów na liczbę i rozmiar Mogą zawierać dowolnąć treść: text, html, wideo, etc.

Przykład dokumentu { } _id: 2DA92AAA628CB4156134F36927CF48, _rev: 75AA3DA9, typ: ksiażka, tytuł: Podróże Guliwera, autor: { imię: Jonathan, nazwisko: Swift }

Funkcjonalność CouchDB Baza danych dokumentów API HTTP Zapytania w języku Javascript Poprzez podejście map/reduce Replikacja Itp

Dlaczego CouchDB Brak z góry obranego schematu Łatwy interfejs HTTP Istnieje wiele bibliotek w wielu językach Przyjazny format dokumentów JSON

Typy aplikacji Takie które są zorientowane na dokumenty Email, TODOs, notatki, wiki, forum, CMS, CRM, katalogi, zarządzanie wydatkami, zarządzanie zasobami, zarządzanie projektami, śledzenie błędów Czyli spora część aplikacji webowych

Widoki Koncepcja podobna do widoków SQL Tylko do odczytu, istnieją niezależnie od danych Statyczne zapytania dla dynamicznych danych Model map/reduce Index uaktualniany inkrementalnie Operacje na widoku: Wybranie po kluczu, wybranie po zakresie, limit

Przykładowy widok function (doc) { if (doc.type == książka ) emit(doc.autor.nazwisko, doc.tytuł); } Kluczem jest nazwisko, wartością tytuł Funkcje widoku przechowywane są w dokumentach projektowych ( design document ) Zawartość widoku pobierana poprzez HTTP GET

Przykładowy dokument projektowy { } _id: "_design/książki", _rev: "4 94e22927f021d464a4f2573ae", views: { po_autorze: { map: function (doc) { if (doc.type == 'książka') emit(doc.autor.nazwisko, doc.tytuł);} } }

Wyciąganie danych z widoku GET /db/_design/ksiażki/_view/po_autorze?key='swift' { } Wynik total_rows: 1, rows:[{ id: "2DA92AAA628CB4156134F36927", key: "Swift", value: "Przygody Guliwera"}]

Porównanie z SQL SQL Predefiniowany schemat Normalizacja: dane rozproszone po tabelach Schemat musi być znany aby wydać zapytanie Dynamiczne zapytania na statycznym schemacie CouchDB Dynamiczny schemat Denormalizacja: dane zagnieżdżone, duplikacje Musi być znana tylko nazwa dokumentu Statyczne zapytania na dynamicznym schemacie

Dynamiczny SQL Tablice klucz wartość Traktowane jako anty wzorzec Ciężko budowania zapytania; nie skaluje się Przechowywanie struktury jako blob Zserializowany obiekt Javy albo Pythona Nie można wykonać na takiej kolumnie zapytań SQL

CouchDB w produkcji DesktopCouch / Ubuntu One https://launchpad.net/desktopcouch http://www.freedesktop.org/wiki/specifications/desktopcouch CouchDB in the Wild http://wiki.apache.org/couchdb/couchdb_in_the_wild

Mój przypadek Raportowanie wyników testów Mnóstwo testów (ok 10.000) Jeszcze więcej wyników per dzień (2 5x)

Schemat rekordów

Przykładowe dane (1) var test_tool = { type: 'tool', name: 'tool1' }; var test_scenario = { type: 'scenario', tool: <tool_id>, name: 'scen 1' };

Przykładowe dane (2) var build = { type: 'build', name: 'build_001' }; var test_job = { type: 'job', build: <build_id>, scenario: <scenario_id>, results: { tc_1: 1, tc_2: 0 } };

Moje widoki Lista narzędzi i scenariuszów testowych Lista buildów Detaliczne rezultaty testów buildu Statystyka rezultatów testów dla scenariusza: liczba passed i total

Strony WWW Takie jak widoki, plus: Porównanie rezultatów dwóch wskazanych buildów Analiza statystyczna rezultatów scenariuszów dla zakresu buildów (średni wynik)

Przykład strony

Implementacja 3 wieczory Inicjacja bazy, dokumenty projektowe, zapytania: python couchdb Widoki i strona WWW: CouchApp http://github.com/couchapp/couchapp Widgety na stronie WWW: ExtJs http://extjs.com

Źródła i uruchomienie Requirements: CouchDB (on Ubuntu 9.10 already present) python virtualenv git clone http://github.com/godfryd/checking couchdb make visit http://localhost:5984/tests reporting/_design/tr/index.html

Pomiary 9 scenariuszy, 10 buildów 18 000 przypadków testowych (dla 9 scenariuszy razem) 500kB logów per każdy scenariusz ok. 50MB zajętości bazy Czas załadowania widoków grubo poniżej 100ms Czas przetwarzania po stronie przeglądarki zależny od rozmiaru danych: do kilkudziesięciu sekund

Wnioski Fajna baza jako back end Wydajna Fajnie, że nie narzuca schematu Trochę pracy wymagają dokumenty projektowe Nie praktyczne jest tworzenie dynamicznych zapytania: bardzo wolno działa

Links Ta prezentacja http://godfryd.wordpress.com/2010/01/06/checking couchdb/ Repo na GitHub http://github.com/godfryd/checking couchdb CouchDB wiki http://wiki.apache.org/couchdb CouchDB book http://books.couchdb.org/relax/ CouchDB internals http://horicky.blogspot.com/2008/10/couchdb implementation.html

Links c.d. CouchApp http://github.com/couchapp/couchapp Python CouchDB http://code.google.com/p/couchdb python/