Scott Tiger Tech Blog

Blog technologiczny firmy Scott Tiger S.A.

Archiwum dla Sierpień, 2011

SQLite

Autor: Piotr Karpiuk o 9. sierpnia 2011

SQLite to zapoczątkowana w 2000 r. przez Richarda Hippa i dostępna na licencji public domain niewielka biblioteka zawierająca interpreter języka SQL obsługujący dane relacyjne zawarte w pliku o strukturze niezależnej od systemu operacyjnego. Z racji użytego języka do implementacji (ANSI C) biblioteka jest przenośna (Windows, Linux, Mac OS X) a z racji niewielkich rozmiarów (ok. 300KB) i niewielkich wymagań (np. stos 4KB, sterta 100KB) jest używana powszechnie w urządzeniach przenośnych (Android, iOS, Symbian). Bardzo łatwo łączyć ją z kodem własnej aplikacji w C, a także posiada wiązania do innych języków, m.in. Common Lisp, C#, Haskell, Java, Lua, Objective-C, OCaml, Perl, REBOL, Ruby, Scheme, Smalltalk, Tcl, Visual Basic, JavaScript. SQLite jest wbudowany w języki programowania PHP i Python.

W efekcie, SQLite to najpowszechniej używany silnik baz danych, wykorzystują go takie firmy jak Adobe (AIR, Acrobat Reader, Lightroom), Apple, Mozilla, Google, Skype, Sun (np. zarządzanie usługami w Solarisie), Dropbox, Nokia. Powszechna praktyka osadzania biblioteki w przeglądarkach doprowadziła do powstania specyfikacji WebSimpleDB API w HTML5, co w praktyce oznacza dostęp z JavaScriptu w przeglądarce do SQLowej bazy danych po stronie klienta.

Biblioteka zawiera klienta wiersza poleceń: sqlite3 a niezależne projekty oferują wiele klientów GUI, m.in. SQLite Manager jako rozszerzenie do Firefoksa.

Przydatne łącza
Składnia SQL
    Pragmy
    Funkcje SQL
    Funkcje daty i czasu
    Funkcje agregujące
Shell
Tutorial

Zastosowania

  • Format pliku alternatwyny np. dla XML. Zamiast zapisywać dane w XMLu lub innym wymyślonym przez siebie formacie, a potem pisać parsery które ładują go do struktur danych aplikacji, można użyć przenośnego pliku danych SQLite. Dostęp do niego jest deklaratywny (SQL) a modyfikacje transakcyjne. Twórcy zachęcają: „Think of SQLite not as a replacement for Oracle but as a replacement for fopen().
  • Baza danych w urządzeniach przenośnych.
  • Alternatywa dla RDBMS takich jak MySQL, PostgreSQL czy Oracle. Jest o tyle ciekawa, że projekt na początku może korzystać z SQLite, aby wraz ze wzrostem wymagań można było łatwo przerzucić się na poważniejszy RDBMS. Ale nawet w dużych systemach SQLite przydaje się dla celów demonstracyjnych lub testowych.

Czytaj więcej »

Napisany w Bazy danych | Brak komentarzy »

TERYT, kody pocztowe i lokalizacje GPS

Autor: Piotr Karpiuk o 3. sierpnia 2011


Formatka do przeglądania i przeszukiwania bazy TERYTu z kodami pocztowymi i współrzędnymi GPS
Kliknij obrazek aby otworzyć formatkę
(Google Chrome, Safari lub Firefox).

TERYT (Krajowy Rejestr Urzędowy Podziału Terytorialnego Kraju) to baza danych prowadzona przez GUS. Patrząc na to okiem informatyka, możemy mówić o drzewie, w którym na kolejnych poziomach są województwa, powiaty, gminy, miejscowości, ulice, budynki i mieszkania.
Informacje obejmują unikalny identyfikator, nazwę, datę ostatniej modyfikacji, dodatkowo rodzaj (np. dla gminy miejska/wiejska/dzielnica itd., dla miejscowości: miasto/wieś/kolonia/przysiółek/tartak itd.).
Nazwy ulic podzielono na 3 pola: cecha, nazwa_1 i nazwa_2, dzięki czemu są łatwiejsze w automatycznej obróbce, np. pl. hetmana Stefana Czarneckiego będzie miał zapis „pl., Czarneckiego, hetmana Stefana”.

Baza TERYT dzieli się na części:

Zakres podstawowy (jawny, publicznie dostępne pliki do pobrania w XMLu):

  • TERC (ok. 4.000 rekordów) – identyfikatory i nazwy jednostek podziału terytorialnego (województwa, powiaty i gminy),
  • SIMC (ok. 103.000 rekordów) – identyfikatory i nazwy miejscowości,
  • ULIC (ok. 237.000 rekordów) – centralny katalog ulic.

Zakres rozszerzony (dostęp płatny, trzeba złożyć zamówienie):

  • BREC – rejony statystyczne i obwody spisowe,
  • NOBC – identyfikacja adresowa ulic, nieruchomości, budynków i mieszkań.

GUS udostępnia również bazę TERYT-ADR, czyli „uproszczoną wersję krajowego rejestru urzędowego, służącą do kodowania adresów” (więcej na temat różnic).

Czego w TERYTcie nie ma, a co by się przydało? Na pewno współrzędne GPS do pokazania obiektu na mapie i integracja z kodami pocztowymi. Udało mi się to osiągnąć, a dodatkowo zrobiłem formatkę (patrz rysunek obok, kliknij bo aby się pobawić), która pozwala taką bazę przeglądać (w drzewku), przeszukiwać (podajemy kawałek adresu, np. „Kwiatowa, Poznań” lub kod pocztowy) i oglądać lokalizacje obiektów na mapie (Google Maps, ale mogłoby to równie dobrze być np. OpenStreetMap).

Czytaj więcej »

Tags: , ,
Napisany w Bazy danych, WWW | 5 Komentarzy »

Google Geocoding API

Autor: Piotr Karpiuk o 1. sierpnia 2011

Chciałbyś dla zbioru adresów pocztowych uzyskać ich współrzędne GPS? Nic prostszego. Google udostępnia usługę Google Geocoding API. Np. dla adresu „Kolektorska 15, Warszawa” konstruujemy URLa:

http://maps.googleapis.com/maps/api/geocode/xml?address=Kolektorska%2015,%20Warszawa&sensor=true

a przeglądarka zwraca dla niego XMLa:
Czytaj więcej »

Napisany w WWW | 3 Komentarzy »