To jest stara wersja strony!
Sebastian Nanek
snanek posiadający konto w domenie gmail.com
Wstępna wersja wstępu do projektu.
Praca z CouchDB
1. Instalacja pakietu CouchDB w systemie operacyjnym GNU/Linux Ubuntu:
$sudo aptitude install couchdb
2. Uruchomienie CouchDB z poziomu konta superużytkownika:
$ sudo couchdb
Apache CouchDB is running as process 31654. Time to relax.
Alternatywnie, można program uruchamiać z poziomu konta zwykłego użytkownika, wcześniej upewniając się, że użytkownik będzie miał dostęp do zapisu w katalogu /var/lib/couchdb/0.8.0 (lub innym, odpowiadającym ustawieniom CouchDB i lokalnemu środowisku systemowemu).
3. Sprawdzenie poprawności instalacji
3.a. Z konsoli
$curl -X PUT http://127.0.0.1:5984/albums
{„ok”:true}
3.b. Przy użyciu przeglądarki internetowej
Wejście na stronę www:
http://localhost:5984/
zwraca:
{„couchdb”:„Welcome”,„version”:„0.8.0-incubating”}
Podsumowanie
Zalety
wersjonowanie dokumentów dostępne „od ręki”
komunikacja poprzez łatwy w implementacji i wykorzystaniu protokół http (mechanizm REST [2])
dane przekazywane w „lekkiej” formie plików YAML
Wady
brak wbudowanych mechanizmów autoryzacji oraz list kontroli dostępu, konieczność wykorzystania zabezpieczeń na poziomie protokołów komunikacyjnych [3]
konieczność budowania własnych rozwiązań, które mają na celu zabezpieczanie nieautoryzowanego dostępu do bazy danych
trudności z łączeniem danych wielu rekordów (brak skutecznego odpowiednika operatorów typu JOIN)
Możliwości wykorzystania
aplikacje internetowe korzystające ze sporej ilości dokumentów o zmiennej strukturze (np. portale internetowe) [1]
oprogramowanie, które wymaga dostępności wszystkich wersji i historii zmian danego dokumentu lub rekordu
Kiedy stosować?
Struktura danych przechowywanych w aplikacji ma charakter „drzewiasty” - tj. nie ma, lub występują w ograniczonym stopniu relacje pomiędzy rekordami przechowywanymi w bazie danych. Przykładem typu wpisu, którego przechowywanie w formie, w jakiej odbywa się to w CouchDB, jest rekord pacjenta - zawiera on tablice z diagnozami, stosowanymi terapiami, ale nie ma powiązania z innymi rekordami w bazie danych.
W przypadku replikacji bazy danych, gdy ważniejsza jest wysoka dostępność danych (wysoki uptime) i łatwość ich replikacji od spójności informacji pomiędzy serwerami. Taka sytuacja ma często miejsce w przypadku witryn internetowych i ogólnie w oprogramowaniu, w którym przeważają operacje odczytu nad operacjami zapisu.
W przypadku, kiedy niezbędna jest wysoka wydajność aplikacji, a relacyjna baza danych okazuje się być wąskim gardłem w aplikacji, warto rozważyć przejście na system CouchDB, ze względu na możliwość automatycznej replikacji.
Projekt
Celem projektu jest napisanie prostej aplikacji w oparciu o zorientowany na dokumenty system zarządzania bazami danych CouchDB. Aplikacja będzie umożliwiała wzorców tworzenie serii dokumentów (formularzy), a następnie tworzenie samych dokumentów (rekordów) w formie podobnej, jak można to robić np. w programach do zarządzania dokumentami.
Całość zostanie zaimplementowana w języku Ruby, z wykorzystaniem mikroframeworka do tworzenia aplikacji internetowych SinatraRB[4]. W tym przypadku framework zapewni w zasadzie jedynie funkcjonalność dynamicznego serwera http i mapowania adresów na odpowiednie akcje. Do komunikacji zostanie wykorzystana przykładowa biblioteka klienta, pochodząca z wiki twórców CouchDB[4].
Aby uprościć tworzenie warstwy widoku aplikacji, zostaną wykorzystane następujące biblioteki:
BluePrintCSS
jQuery
jQueryUI
Bibliografia