Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Linux C bazy danych - Prosta baza danych dostępna w C pod Linuxem

arturromarr 17 Cze 2016 15:41 2241 7
  • #1 17 Cze 2016 15:41
    arturromarr
    Poziom 17  

    Witam,
    Programuję trochę w C pod linuxem (gtk). Coraz bardziej brakuje mi jakiejś bazy danych ale do tej pory jeszcze nie obsługiwałem żadnej.
    Jestem raczej amatorem więc nie poznam kilku baz tylko skoncentruje się na jednej stąd moja prośba do osób mających doświadczenie w temacie.
    Wiem, że nie ma idealnych i uniwersalnych rozwiązań ale proszę o wszelką pomoc w wyborze najodpowiedniejszej dla mnie bazy danych.
    -Po pierwsze chcę aby baza była dostępna na Linux-sie (chyba większość popularnych jest).
    -Najlepiej jakby dopuszczała również komercyjne zastosowania (ze wstępnego rozeznania tematu z popularnych zaliczają się: PostgreSQL, Firebird, SQLite )
    -Piszę pod zwykłym C więc powinna mieć mechanizmy (biblioteki) pozwalające na dostęp z poziomu tego języka.
    -Fajnie jakby była dobrze opisana w necie (poradniki, tutoriale, przykłady).

    Starczy koncertu życzeń. :) czy jest coś co się chociaż ociera o te wytyczne? Proszę o wszelkie podpowiedzi czym się różnią w praktyce pomiędzy sobą bazy.

    Pozdrawiam

    0 7
  • #2 17 Cze 2016 16:03
    marcinj12
    Poziom 40  

    Z popularnych i bez ograniczeń pod Linuxem masz jeszcze MySql.
    SQLite to plikowa baza danych, więc inna klasa niż te, co wymieniasz - cała baza dostępna w postaci jednego pliku, działa bez instalacji, więc łatwo przenoszona, ale mniej wydajna, zwłaszcza przy wielodostępie.
    Pozostałe wymagają instalacji systemu bazodanowego, za to są wydajniejsze.
    Co do dostępności bibliotek do obsługi w C/Linux to się nie wypowiem, ale sądzę, że pod każdą jakieś się znajdą.

    0
  • #3 17 Cze 2016 17:23
    JacekCz
    Poziom 35  

    Słowo "baza" nie musi oznaczać jakiegoś SQL. Jest wiele szybkich *), prostych do uruchomienia baz typu "klucz-wartość", b-tree, network model itd.

    Nie są to bazy relacyjne (jak wiele baz do finansów-handlu), nic nie piszesz dlaczego chcesz użyć baz danych, ale do wielu zastosowań przewydajne.

    *) o rzędy wielkości.

    0
  • #4 21 Cze 2016 15:14
    arturromarr
    Poziom 17  

    MySql z tego co wyczytałem jest płatna w rozwiązaniach komercyjnych, a nie chciałbym w przyszłości blokować sobie takiej możliwości skoro są bazy całkowicie darmowe.

    Teraz mam podpięty sterownik do akwarium pod komputer i chcę rejestrować co sekundę kilka wartości.
    W przyszłości chcę zrobić wykresy z określonego wycinka czasu.

    Nie potrzebuję dostępu z różnych lokalizacji.

    Zależy mi chyba najbardziej na łatwości obsługi niż wydajności bo raczej proste rzeczy będę robił.

    0
  • #5 21 Cze 2016 15:29
    JacekCz
    Poziom 35  

    arturromarr napisał:
    MySql z tego co wyczytałem jest płatna w rozwiązaniach komercyjnych, a nie chciałbym w przyszłości blokować sobie takiej możliwości skoro są bazy całkowicie darmowe.


    Nie tyle płatna, ale związana GPL (lub płatna) O ile byś ją rozwijał lub zlinkował z własnym produktem.
    Używanie jako oddzielny serwer nie jest płatne.

    Natomiast ... to była baza przez wiele, wiele lat nakierowana na szybkość kosztem np transakcyjności, była zorientowana np na web gdzie jak przepadnie jeden wpis na milion, świat się nie zawali. Od kilku już ma transakcyjność, ale nie wzbudza mojego 200% zaufania jako baza pod biznesowe.
    Ale poważniejszy mój (subiektywny) zarzut, że jest NIESAMOWICIE dialektowa, daje typy, konstrukcje zupełnie nieprzenośne na inne bazy, przez co "przyspawa" do siebie użytkownika.

    Np Postgresql ma w zamyśle znaczną kompatybilność (nie 100%) i chciałby być testowany/porównywany z Oraclem.

    Firebird jakby odpadł z głównego nurtu aktywności.... takie mam wrażenie. Ale całkiem rzetelna baza.

    Ważne pytanie dla Ciebie, może ważniejsze niż użyty serwer, jest biblioteka/driver przez jaki zbudujesz dostęp do bazy. Choć będą cię kusić funkcje pg_* do Postgresa, my_* do MySQL-a, nie daj się skusić, użyj czegoś uniwersalnego. Nie jestem dobry w gtk, nie wiem co tam jest na bieżąco, a raczej w tym towarzystwie by trzeba szukać wskazówek. Np czy ma listę/grida z "wirtualnym" podawaniem danych, a jeśli tak, to co preferuje.

    PS. jak odnajdziesz zainteresowanie ku nierelacyjnym bazom danych, dam kilka wskazówek

    0
  • #6 22 Cze 2016 10:24
    arturromarr
    Poziom 17  

    JacekCz napisał:

    Nie tyle płatna, ale związana GPL (lub płatna) O ile byś ją rozwijał lub zlinkował z własnym produktem.
    Używanie jako oddzielny serwer nie jest płatne.

    Czyli płatna, chyba, że ktoś by chciał komercyjne oprogramowanie dystrybuować z kodem źródłowym. Daje się to obejść w językach interpretowanych jak PHP (dlatego jest tu powszechnie stosowana) gzie kod nie jest linkowany z bazą tylko sterownik interpretera.Licencja GPL jest bardzo restrykcyjna, dlatego powstała LGPL która nie budzi już takich wątpliwości. W necie jest wiele dyskusji na ten temat, nie jestem prawnikiem więc wolałbym użyć bazy na elastyczniejszej licencji skoro takie są.

    JacekCz napisał:
    Ważne pytanie dla Ciebie, może ważniejsze niż użyty serwer, jest biblioteka/driver przez jaki zbudujesz dostęp do bazy. Choć będą cię kusić funkcje pg_* do Postgresa, my_* do MySQL-a, nie daj się skusić, użyj czegoś uniwersalnego. Nie jestem dobry w gtk, nie wiem co tam jest na bieżąco, a raczej w tym towarzystwie by trzeba szukać wskazówek.

    Właśnie chyba to jest najważniejsze. Czy to musi mieć związek z interfejsem gtk, a nie porostu biblioteka dla C ?
    Jakie to są uniwersalne biblioteki, jak ich szukać, rozpoznawać?

    0
  • #7 22 Cze 2016 10:48
    JacekCz
    Poziom 35  

    arturromarr napisał:
    JacekCz napisał:

    Nie tyle płatna, ale związana GPL (lub płatna) O ile byś ją rozwijał lub zlinkował z własnym produktem.
    Używanie jako oddzielny serwer nie jest płatne.

    Czyli płatna, chyba, że ktoś by chciał komercyjne oprogramowanie dystrybuować z kodem źródłowym. Daje się to obejść w językach interpretowanych jak PHP (dlatego jest tu powszechnie stosowana) gzie kod nie jest linkowany z bazą tylko sterownik interpretera.Licencja GPL jest bardzo restrykcyjna, dlatego powstała LGPL która nie budzi już takich wątpliwości. W necie jest wiele dyskusji na ten temat, nie jestem prawnikiem więc wolałbym użyć bazy na elastyczniejszej licencji skoro takie są.


    No właśnie łącząc się po sockecie z bazą bezpłatna, ale ja osobiście sympatyzuję z twoją decyzją (odsunąć nieco na bok MySQL)

    arturromarr napisał:

    Właśnie chyba to jest najważniejsze. Czy to musi mieć związek z interfejsem gtk, a nie porostu biblioteka dla C ?
    Jakie to są uniwersalne biblioteki, jak ich szukać, rozpoznawać?


    Ja mam cokolwiek wspólnego z GUI, to ułatwia milion spraw. Zrobienie zupełnie od postaw listy (grida) bazodanowego wcale nie jest banalne. Dobre "bindowanie" kontrolek do bazy znakomicie ułatwia kodowanie. Konkurencyjna Qt ma takowe.

    Oczywiście jest ODBC/Linux, choć zaczyna się robić archaiczna, a rzadko była na linuksach popularna.

    Przejrzyj te kwerendy, nie zalecam żadnego (wiele dla Ciebie nieprzydatnych), daję jako "start reading"
    Uniwersalna to będzie ta, która nie ma silnych związków tylko z jednym środowiskiem C (chyba że z Gtk), ani tylko z jedną bazą danych. W C++ mam pewne sympatie.

    https://en.wikipedia.org/wiki/GNOME-DB

    https://www.postgresql.org/download/products/2-drivers-and-interfaces/

    https://www.google.pl/search?q=c+sql+driver+l...IDQ#q=c+universal+sql+driver+library&start=10

    0
  • #8 05 Sie 2016 08:00
    upanie
    Poziom 21  

    Cytat:
    Teraz mam podpięty sterownik do akwarium pod komputer i chcę rejestrować co sekundę kilka wartości.

    No to do tego bazy danych nie potrzebujesz. W sensie relacyjnej bazy danych. Wystarczy zwyczajny plik, nawet w formacie GPT (G*wniany Plik Tekstowy :D )

    0