Relacyjne bazy królują od wielu lat na rynku. Ich zalet nie trzeba wymieniać, stały się powszechnym w użytku narzędziem. Mają jednak swoje wady. Czy okażą się gwoździem do trumny? Raczej takiego scenariusza bym nie przewidywał, sporą część rynku odbiorą im jednak pewnie tzw. bazy „NoSQL”. Znajdą one zastosowanie zwłaszcza w celach specjalistycznych i dedykowanych. Co sprawiło, że pozycja relacyjnych baz danych jest zagrożona, skąd wzięło się aktualnie bardzo modne określenie „NoSQL” i czy aby na pewno jest trafne – o tym przeczytasz w niniejszym artykule. Zapraszam wszystkich do świata, w którym relacje przestają mieć znaczenie.
Odkąd zaczęto tworzyć biznesowe oprogramowanie (ale nie tylko), relacyjne bazy danych były narzędziem, które w naturalny sposób implementowało się w takich rozwiązaniach jako podstawowy magazyn danych. Jako programista, przy budowaniu nowego projektu zastanawiam się raczej, którą z dostępnych baz danych wybrać, jakie narzędzia będą mi potrzebne, który producent dostarcza najlepsze mechanizmy niezbędne dla mnie w danym momencie, i kluczowy aspekt – na które mnie stać. Mamy do wyboru bazy danych MySql, PostgreSql, Oracle, Microsoft SQL, które mają największy udział w rynku, ale istnieją też inne, o których teraz nie będę wspominał. W czasie studiów usłyszałem o czymś nowym – obiektowych bazach danych. Chociaż idea tej technologii wywodzi się jeszcze z lat 90. i przedstawia dość ciekawą koncepcję, nie zagroziła silnemu rynkowi relacyjnych baz danych. To właśnie w czasie stadiów zacząłem zgłębiać tematykę baz danych określanych jako strumieniowe i NoSQL.
Odpowiedź wbrew pozorom jest bardzo prosta – ponieważ reprezentują sobą wartości, które naprawdę trzeba docenić. Jakie cechy są najważniejsze?
Zalety relacyjnego modelu baz danych są nieocenione, jednak bazy transakcyjne mają również swoje słabe strony.
Negatywne cechy:
Są to dwie kluczowe sprawy, które należy wziąć pod uwagę przy wyborze odpowiedniej bazy danych dla rozwiązania, które projektujemy.
Jaki mamy wybór w przypadku NoSQL?
Do przechowania obiektów w bazie danych db4o użyta została metoda store klasy ObjectContainer. Przykładowy kod:
ObjectContainer container = Db4oEmbedded.openFile("db4objectsPodstawy.db4o"); try { Kierowca kierowca = new Kierowca("Xinski",19); container.store(kierowca); } finally { container.close(); }
Przykładowy kod, który można wykorzystać w kontrolerze, jeżeli korzystamy z REDIS:
$redis = Redis::connection(); $redis->set('company', 'Grupa Tense'); $company= $redis->get('company'); echo $company;
Redis głównie jest stosowany podczas optymalizacji i skalowaniu
– dane które nie zmieniają się przy każdym odświeżeniu strony jak np. tytuł strony www
– skrypty które długo się wykonują
Przykład struktury danych:
{ imie: "Jan", nazwisko: "Nowak", nr_indeksu: 1174145, oceny: [5, 3, 4.5, 3.5, 4] dzienny: true }
Przykładem bazy danych kluczem wartość jest np. MongoDB, RavenDB.
Czy NoSQL ma w ogóle sens? Wydaje mi się, że tak, ponieważ jest to zespół technologii oferujący konkretne rozwiązania. Nie zastąpią one tradycyjnych relacyjnych baz danych, bo te mają swoje dedykowane zastosowania – tak samo jest z zaprezentowanymi przeze mnie wcześniej przykładami. Ogólnie definicja skrótu NoSQL nie jest jednoznaczna i nie opisuje idealnie samego zjawiska. Nie ma żadnej przesłanki, która by mówiła, że bazy NoSQL nie mogą wykorzystywać języka zapytań SQL. Niektóre z baz przypisywanych do określenia „NoSQL” posiadają język zapytań, i logiczne jest to, że będzie on dosyć podobny do SQL – dzięki takiemu zabiegowi ich nauka staje się łatwiejsza. Co zatem może oznaczać i do czego odnosić się ten termin? Według wyjaśnienia spotykanego często w literaturze jest to „Not Only SQL”, ale w tym wypadku, czy do definicji „nie tylko SQL” nie pasowałaby również baza danych Oracle? Nasz dowód jest błędny, a postawione hipotezy nieprawdziwe, gdyż wyjaśniając definicję sami byśmy jej przeczyli. Co w związku z tym zrobić? Określenie jest dość nieścisłe, więc próba jego dokładnego wyjaśnienia może być bardzo trudna. Najlepiej przyjąć, że „NoSQL” to określony zestaw baz, zazwyczaj open source, które przeważnie nie wykorzystują języka zapytań SQL i zostały stworzone na przestrzeni kilku ostatnich lat.
Bazy danych są tematem, który można drążyć bez końca, niestety podróż do tego fascynującego świata musimy już zakończyć. Artykuł jest tylko małym skrawkiem ogromnej góry lodowej technologii przetwarzania danych, który jedynie przybliżył podstawowe aspekty takich systemów informatycznych.
Dodatkowo otrzymasz bezpłatnie dostęp do kursów z marketingu internetowego.