Tags Posts tagged with "baza danych"

baza danych

przez -
3 796
MySQL

Firma Oracle poinformowała o wydaniu serwera baz danych MySQL 5.6 GA. Skupiono się głównie na zwiększeniu skalowalności, wydajności i elastyczności swojego produktu. Zaktualizowano silnik składowania danych InnoDB. Otrzymał on pełne wsparcie dla przeszukiwania pełnotekstowego. Możliwe jest również tworzenie indeksów pełnotekstowych oraz przeszukiwanie treści w tabelach InnoDB.

Nowa wersja serwera przynosi ulepszenia w optymalizatorze zapytań, poprawiono sortowania.

Ulepszona replikacja MySQL

Do tej pory po stronie serwera Slave działał jeden wątek, który wykonywał zapytania na bazie danych, co powodowało czasem bardzo duże opóźniania pomiędzy serwerem Master, a Slave. Od wersji 5.6 pojawiła się możliwość równoległego wykonywania zapytań na bazie danych. Zwiększa to zdecydowanie wydajność całej replikacji oraz redukuje czas opóźniania pomiędzy serwerami.

Poprawiono również wznawianie replikacji po jej uszkodzeniu. Serwer slave potrafi automatycznie wznowić replikację DML po awarii.

Sumy kontrolne w replikacji

Dzięki wprowadzeniu sum kontrolnych do replikacji zwiększona została ich integralność. Pozwala to na wykrycie błędów w replikowaniu danych w przypadku problemów sieciowych, uszkodzenia dysków lub pamięci.

Time-Delayed Replication

Dodano możliwość definiowania opóźnień w replikacji od kilku milisekund aż do 68 lat. Opóźnienia definiowane są na poziomie każdego serwera slave. Mogą one pomóc w opóźnieniu replikowaniu przypadkowych zapytań typu DROP TABLE.

Interfejs do baz NoSQL

Dzięki interfejsowi memcached pojawił się dostęp do danych InnoDB bez konieczności tworzenia zapytań SQL, co zapewnia niskie opóźnienia oraz wysoką wydajność zapisu oraz odczytu danych. Eliminowane są operacje parsowania zapytań SQL.

Pojawiły się nowe tabele INFORMATION_SCHEMA, które udostępniają nam nowe dane statystyczne na temat silnika bazy danych. Pozwala to na lepszy monitoring całego serwera.

W silniku InnoDB dodano wsparcie dla ICP, MRR oraz file sort. Pozostałe nowości opisaliśmy w newsie Jakie nowości czekają nas w MySQL 5.6?.

przez -
7 3526
Bazy danych, baza danych

Z nazwą SQLite każdy zainteresowany wolnym oprogramowaniem prawdopodobnie już się zetknął. Jeśli nie to wyjaśniamy: SQLite to biblioteka umożliwiające stworzenie relacyjnej bazy danych tam gdzie wymagana jest szybkość instalacji i prostota konfiguracji. Przedstawiamy narzędzie, które pozwoli dokładniej przyjrzeć się tabelom i danym w naszej bazie. To rodzima aplikacja SQLiteStudio, autorstwa Pawła Salawy.

Trochę o SQLite

SQLite w przeciwieństwie do innych znanych baz danych, takich jak MySQL czy PostgreSQL nie działa w architekturze serwer-klient, przez co nie wymaga praktycznie żadnej konfiguracji. Ułatwia to operacje typu backup, czy powielenie bazy, bo sprowadzają się one jedynie do skopiowania pliku z danymi do nowej lokalizacji. W skrócie: instalujemy i działa, a że prostota nie musi świadczyć o banalnych zastosowaniach mówią nazwy firm, produktów i projektów, które korzystają z sqlite, między innymi przeglądarka Firefox, firma Adobe czy Apple iPhone.

Sqlitestudio - okno główne

Jak można zatem SQLite używać? Albo poprzez nasz ulubiony język programowania, który oferuje możliwość dostępu do funkcji SQLite (a oferuje to każdy liczący się język) albo poprzez manualny tryb komend, bowiem SQLite wyposażono w minimalny interfejs do manipulowania bazami i danymi. Na przykładzie wygląda to tak:

  • tworzenie pliku bazy o nazwie test: sqlite3 test
  • wywołanie pomocy z opisem możliwych komend: sqlite> .help (lub samo .h)
  • wczytanie danych z pliku SQL: sqlite> .read nazwa_pliku
  • wydanie zapytania: sqlite> SELECT * FROM tabela WHERE…..
  • wyjście z programu: sqlite> .quit (lub samo .q)

Do prostych zastosowań taki interfejs wystarczy, ale od czasu do czasu przychodzi moment, w którym chciałoby się szybko wyszukać, zmienić czy skasować większą liczbę tabel i danych. Sięgnijmy wówczas po tytułową aplikację.

Instalacja SQLiteStudio

Instalacja jest bardzo prosta, gdyż sprowadza się do pobrania pliku wykonywalnego ze strony projektu i uruchomienia go. Program działa na platformie Windows, Linux, MacOS X, Solaris oraz FreeBSD. Źródła w języku Tcl są dostępne do pobrania dla zainteresowanych. Aktualnie w fazie testów jest SQLiteStudio 2.1.0 Beta, która lada dzień powinna uzyskać status oficjalnej wersji stabilnej.

Sqlitestudio - konfiguracja Sqlitestudio - edytor tabel

Program oferuje wygodny spolonizowany interfejs, który umożliwia między innymi tworzenie tabel i przeszukiwanie danych. Sortowanie danych w tabeli odbywa się po kliknięciu w nazwę kolumny.  Mamy także możliwość:

  • tworzenia wyzwalaczy oraz indeksów
  • eksportu bazy danych do pliku SQL, XML czy HTML
  • wydawania zapytań SQL
  • kolorowania składni oraz formatowania kodu SQL

Bogate opcje konfiguracji pozwalają dostosować wygląd i zachowanie programu do naszych potrzeb i na pewno każdy kto chce wykorzystywać bazę danych SQLite, powinien spróbować pracy z SQLiteStudio.

przez -
16 3150
Bazy danych, baza danych

Kilka miesięcy temu na rynku pojawił się nowy produkt w kategorii baz danych – MemSQL. Stworzony przez dwóch byłych deweloperów Facebooka, zaprojektowany ze znacznym naciskiem na wykorzystanie pamięci RAM, oraz konwertujący zapytania SQL do kodu C++. To wszystko przy deklarowanej 30-krotnie większej wydajności w porównaniu z bazą MySQL. Sprawdziliśmy czy faktycznie różnica jest tak ogromna oraz jak MemSQL sprawdza się w praktyce.

O MemSQL

MemSQL to baza danych, której głównymi atutami są minimalne wykorzystanie tradycyjnego dysku twardego kładąc przy tym duży nacisk na wykorzystanie pamięci RAM oraz konwersja (a później kompilacja) zapytań SQL do języka C++.  Jest dostępna w dwóch wersjach – darmowej deweloperskiej której ograniczenia to 10GB maksymalnej pojemności bazy danych oraz płatnej dla firm (dostępnej w 30 dniowej wersji trial). Aby ją pobrać należy wygenerować klucz licencyjny na stronie memsql.com oraz ściągnąć binarną paczkę dla 64 bitowych systemów GNU/Linux. Zalecana konfiguracja sprzętowa to wielordzeniowy CPU oraz co najmniej 8GB pamięci RAM.

MemSQL jest kompatybilny z aplikacjami wykorzystującymi MySQL, co oznacza że można bezproblemowo zaimportować dane z jednej bazy danych do drugiej, zmieniając jedynie port po którym łączy się aplikacja (domyślnie 3307). Twórcy zapewniają że MemSQL w pełni wspiera ACID (właściwości gwarantujące poprawne przeprowadzanie transakcji), oraz te same silniki bazodanowe co MySQL – InnoDB oraz MyISAM. Nie oznacza to jednak że MemSQL wspiera ten sam, pełny zestaw poleceń SQL co baza MySQL.

Jednym z czynników wpływających na deklarowaną wydajność jest przetrzymywanie wszystkich danych w ulotnej pamięci RAM. Narzuca to wymagania w postaci odpowiednio dużej ilości wolnej pamięci, co najmniej tak dużej co sama baza danych. Wszystkie zmiany zapisywane są w logu transakcji który znajduje się fizycznie na dysku. W przypadku awarii – dane są z niego odtwarzane, zapytanie po zapytaniu.

Kolejnym czynnikiem jest translacja zapytań SQL do C++ która odbywa się dla każdego nowopoznanego zapytania skierowanego do bazy. Polega to na wyłuskaniu z zapytania SQL jedynie głównej jego części z pominięciem wszelkich statycznych wartości.

Przykładowo zapytanie:

SELECT * FROM users WHERE col = 1;

zostanie zinterpretowane jako

SELECT * FROM users WHERE col = @;

a następnie skonwertowane do kodu C++ i skompilowane do postaci biblioteki współdzielonej (pliku .so). Efektem takiej operacji jest dłuższy czas wykonywania dla nowych zapytań, ale dużo szybszy dla następnych o podobnej konstrukcji.

Tyle teorii, w następnym kroku sprawdzimy jak te ulepszenia przekładają się na praktyczne rezultaty poddając je seriom testów.

Testy były wykonywane na serwerze opartym o system CentOS 6.3 w wersji 64 bitowej. Maszyna posiadała ośmiordzeniowy procesor Intel Core i7 930 taktowany 2.80 GHz oraz 8GB pamięci RAM. Użyte wersje oprogramowania to:

  • MySQL w wersji 5.5.25 (domyślna konfiguracja)
  • MySQL 5.5.25 z (zwiększona ilość pamięci dla MySQL, bufforów oraz cache)
  • MemSQL w wersji 1b (domyślna konfiguracja)

Do testów wykorzystano benchmark Sysbench (http://sysbench.sourceforge.net/) w wersji 0.3.1. Pierwszym etapem było zapełnienie bazy danych 1 000 000 (milionem) przykładowych rekordów. Wykorzystano w tym celu polecenie:

sysbench --test=oltp --db-driver=mysql --mysql-user=root --mysql-password=mysql --mysql-db=test --oltp-table-size=1000000 --myisam-max-rows=1000000 --mysql-table-engine=innodb --oltp-table-name=innodb prepare

dla bazy MySQL oraz polecenie

sysbench --test=oltp --db-driver=mysql --mysql-user=root --mysql-host=127.0.0.1 --mysql-db=test --oltp-table-size=1000000 --myisam-max-rows=1000000 --mysql-table-engine=myisam --oltp-table-name=myisam  --oltp-dist-type=uniform prepare

dla bazy MemSQL (oba w wersji dla InnoDB oraz MyISAM)

Do testów użyto dwóch trybów pracy Sysbench

  • Simple/read only  który polegał na wykonaniu 1 000 000 zapytań typu SELECT o różnym poziomie skomplikowania, nie modyfikując przy tym żadnych danych
  • Complex – będący złożonym trybem symulującym serię transakcji na które składało się 1 400 000 zapytań typu SELECT, 500 000 zapytań UPDATE/INSERT modyfikujących dane oraz 200 000 zapytań DELETE.

W przypadku silnika InnoDB transakcyjność osiągnięto przy użyciu standardowych poleceń BEGIN/COMMIT, dla MyISAM natomiast do symulowania transakcji Sysbench wykorzystuje polecenia LOCK TABLES/UNLOCK TABLES (co dość pokaźnie wpłynęło na wynik końcowy).

Poniżej wyniki testów w postaci wykresów oraz parametry użyte przy uruchomieniu każdego benchmarku. (prezentowany wynik to czas, jaki potrzebowała baza danych na ukończenie testu).

InnoDB zapytania typu select

--test=oltp --db-driver=mysql  --mysql-table-engine=innodb --num-threads=128 --oltp-table-size=1000000 --max-requests=1000000 --myisam-max-rows=1000000 --oltp-read-only=on  --oltp-test-mode=simple --oltp-dist-type=uniform --db-ps-mode=disable

InnoDB transakcje

--test=oltp --db-driver=mysql  --mysql-table-engine=innodb --num-threads=128 --oltp-table-size=100000 --max-requests=100000 --myisam-max-rows=1000000 --oltp-read-only=off  --oltp-test-mode=complex --oltp-dist-type=uniform --db-ps-mode=disable

MyISAM - zapytania typu SELECT

--test=oltp  --db-driver=mysql --mysql-table-engine=myisam --num-threads=128 --oltp-table-size=1000000 --max-requests=1000000 --myisam-max-rows=1000000 --oltp-read-only=on --oltp-test-mode=simple --oltp-dist-type=uniform --db-ps-mode=disable

MyISAM - Transakcje

--test=oltp  --db-driver=mysql --mysql-table-engine=myisam --num-threads=128 --oltp-table-size=100000 --max-requests=100000 --myisam-max-rows=1000000 --oltp-read-only=off --oltp-test-mode=complex --oltp-dist-type=uniform --db-ps-mode=disable

Jak widać, różnica w szybkości wykonywania zapytań jest znacząca. Nie jest to co prawda obiecywana 30-krotna różnica (w najlepszym wypadku kilkunastokrotna) ale mimo wszystko przewaga MemSQL jest ogromna. Jednak jako baza produkcyjna MemSQL jeszcze nie nadaje się według mnie do praktycznych zastosowań. Powodów ku temu jest kilka:

  1. Wciąż trwają prace nad ukończeniem pełnej specyfikacji SQL dla bazy danych MySQL. Wielu poleceń wciąż brakuje (np. TRUNCATE), brakuje obsługi widoków, triggerów czy kluczy obcych. Na obecną chwilę jedynym obsługiwanym zestawem znaków jest UTF-8.
  2. Nadal brakuje wparcia ze strony deweloperów dla bazy MemSQL. Próba instalacji oraz migracji aplikacji WordPress zakończyła się w naszym przypadku niepowodzeniem, czego powodem były zapewne niewspierane polecenia SQL wyeksportowane do pliku dump bazy danych. Na obecną chwilę istnieje oficjalny poradnik http://developers.memsql.com/docs/1c/guides/popular_tools.html o instalacji Django na MemSQL, lecz to wciąż zbyt mało, by można było mówić o pełnym wsparciu dla użytkowników.

Nie zmienia to faktu, iż MemSQL to produkt o ogromnym potencjale i ma sporą szansę aby zmienić obecną sytuację na rynku.

przez -
2 707
MySQL

Na blogu MariaDB możemy znaleźć informację, że testy jednostkowe, zawarte w MySQL zostały ukryte lub ich brakuje. Sergei Golubchik pisze, że były one częścią kodu źródłowego każdej nowej wersji i znajdowały się zawsze w katalogu mysql-test/. Aktualnie takowego nie ma, ale pojawił się internal/mysql-test/, w którym nic nie ma. Sugeruje to, że albo testy jednostkowe zostały zamknięte, albo nie są domyślnie dołączane do kodu. Na zadane pytanie, odnośnie zmian Oracle do tej pory nie odpowiedziało.

przez -
2 690
MySQL

BIKE to lekkie narzędzie dla administratorów, użytkowników i deweloperów, którzy potrzebują szybkiego podglądu swojej bazy danych, bez potrzeby instalacji skomplikowanych aplikacji. Aplikacja jest napisana w PHP i działa z systemami CMS: WordPress, Joomla oraz Drupal. Aby całość zadziałała, wystarczy skopiować odpowiednie pliki do katalogu, w którym działa nasza instalacja, a BIKE sam wykryje konfigurację naszej bazy danych.

Narzędzie łączy się z bazą danych, wysyła zapytania bezpośredni od MySQL i wyświetla wyniki w oknie przeglądarki. Domyślnie posiadamy 5 gotowych formułek, ale dzięki edytorowi możemy przygotować ich znacznie więcej i zapisać je w bibliotece. Prócz tego mamy dostępną historię 40 ostatnio wydanych zapytań, a także możliwość ich skopiowania do edytora lub wykonania.

Wersja jest uboga w funkcję uwierzytelniania, dlatego zalecane jest używanie serwera z własnym szyfrowaniem lub autoryzacją.

przez -
0 535
PostGIS

Ogłoszono wydanie PostGIS 2.0.0, wolne rozszerzenie relacyjno-obiektowej bazy danych PostgreSQL. Dodaje ono możliwość zapisywania danych geograficznych wprost do bazy danych zgodnie ze specyfikacją OpenGIS Simple Features dla profilu SQL. Specyfikacja została opracowana przez organizację OpenGIS Consortium OGC, do której należą producenci oprogramowania GIS, sprzętu CAD/CAM, uczelnie i jednostki naukowe.

Zmiany, jakie zaszły:

  • Dane rastrowe i analiza rasterów oraz wektorów przechowywana jest w bazie danych
  • W celu obsługi obiektów o wspólnych granicach dodano topologiczne modele
  • Dodano integrację typmod PostgreSQL, w celu automatycznego indeksowania tabeli geometry_columns 3D i 4D
  • Dodano wysokowydajne przeszukiwanie najbliższych obiektów, oparte o indeksowanie
  • Pojawiło się wiele nowych funkcji:
    • ST_Split
    • ST_Node
    • ST_MakeValid
    • ST_OffsetCurve
    • ST_ConcaveHull
    • ST_AsX3D
    • ST_GeomFromGeoJSON
    • ST_3DDistance
  • Dodano integrację z system rozszerzeń PostgreSQL 9.1
  • Udoskonalono ładowanie i zrzucanie plików z kształtami poprzez linię komend
  • Dodano wsparcie importu wielu plików dla interfejsu plików z kształtami
  • Dodano wsparcie eksportu wielu tabel dla interfejsu plików z kształtami
  • Pojawił się optymalizator geo-kodowania dla wolnych danych US Census TIGER (2010)

przez -
3 690
MySQL

Oracle ogłosiło wydanie MySQL 5.5.21, regularnej aktualizacji produkcyjnej wersji otwartoźródłowej bazy danych. Pojawiła się nowa opcja w CMake – MYSQL_PROJECT_NAME, którą możemy ustawić na Windows lub Mac OS X, w celu użycia w nazwie projektu. Naprawiono sporo błędów w InnoDB Storage Engine oraz replikacji. Ulepszona została wydajność InnoDB oraz zarządzanie pamięcią.

Polecane

Canonical Ubuntu

0 251
Najpierw może zacznijmy od najważniejszego, a mianowicie od daty wydania. Ubuntu 19.04 beta pojawi się już w marcu, a mianowicie 28 marca 2019 roku,...