Baza danych na plikach czy mysql

0

Witam

Doradźcie która baza danych będzie szybciej działać, zrobiona na plikach txt czy mysql.
Zależy mi na szybkim działaniu. Program który to będzie obsługiwał będzie napisany w C++.
Serwer z bazą mysql mam już postawiony na swoim kompie bo wcześniej zajmowałem się PHP.

2

Zależy mi na szybkim działaniu.

mozesz doprecyzowac?

Nie wiedzac, z czym i dlaczego to napisze ze tak mysql wystarczy, postgres tez, na plikach bym nie robil samodzielnie

1

Jest wiele ultraszybkich baz, np key-value dedykowanych do C/C++.
https://en.wikipedia.org/wiki/Key%E2%80%93value_database (z tabelki odsiej typowo cloudowe)
W sensie systemu operacyjnego to "plik", bo baza lokalna dla programu.

https://www.google.com/search?client=firefox-b-d&q=key-value+database+c%2B%2B
Jakieś Tokyo czy Berkeley połyka w przedbiegach SQLe. Ze współczesnych projektów zaciekawił bym się RocksDB (nie używałem)

Ale może źle Ci radzę ;)
Na Twoje pytanie nie da się odpowiedzieć bez szczegółów:
co w niej będzie, ile zróżnicowanych typów danych, w jakich maksymalnych ilościach, w jakiej dynamice (przyrosty średnie i szczytowe) i pewnie kilka innych liczb.

Nie wiem czego użycie zakładasz w C++, ale będzie na pewno w więcej linii niż w PHP. Update 10mc temu miałeś podstawowe problemy z językiem. Chyba i dziś łatwo nie będzie.

3

Jeśli to program desktopowy a nie serwerowy to najlepsza będzie baza danych embedded w rodzaju SQLite. Zalety:

  • Podczas instalacji programu nie musisz instalować żadnego dodatkowego oprogramowania, cała baza to jedna biblioteka wkompilowywana w program.
  • Wszystkie dane są trzymane w jednym pliku. Jest szybkość pracy jak w przypadku pracy na plikach, ale nie musisz plikami samodzielnie zarządzać.

Jeśli jest to aplikacja serwerowa to weź normalną bazę dany (przy czym ja preferuję PostgreSQLa nad MySQLa ponieważ jest bliższy standardu SQL). Jeśli boisz się że baza SQL będzie za wolna to możesz wziąć jakąś bazę Key-Value jak wspomniał @AnyKtokolwiek . Ja pracowałem tylko z Redisem (ale to do końca baza nie jest tylko cache lub broker wiadomości). Redis wszystkie dane trzyma w RAMie więc szybciej się już nie da

2

Baza danych potrafi działać na dużych zbiorach danych dzięki temu, że:

  • dane są podzielone na pliki,
  • wyszukiwać można po indeksach,
  • można ograniczyć wyniki szukania wybierając kolumny do porównania.,
  • zapytania mogą być optymalizowane bez ingerencji pytającego.

Okazuje się, że sporo z tego można zrobić samemu:

  • podzielić dane na pliki,
  • użyć tablic mieszających,
  • wybrać pola struktur do porównania.

Kiedy danych jest mało i są w miarę proste, to nie ma sensu bawić się w bazę danych typu Oracle. Ile to jest mało? Ciężko powiedzieć. grep przemieli plik 2 GB w parę sekund na średnim procesorze z rodziny Sandy Bridge (rok 2010). Ja jako użytkownik aplikacji okienkowej mógłbym wytrzymać trzy sekund raz na jakiś czas.

Pisząc zupełnie precyzyjnie, wspomniany SQLite świetnie radzi sobie małymi bazami.

1 użytkowników online, w tym zalogowanych: 0, gości: 1