Duże bazy danych

0

Witam...

Piszę grę paragrafową i nie wiem, jakiego rodzaju plików używać do przechowywania dużej ilości danych. Wcześniej, podczas pisania gry, roboczo używałem plików INI (konstrukcja idealna jeśli chodzi o paragrafówki), jednak przy dużej ilości danych odczyt jest bardzo powolny i wszystko można bez problemów odczytać z takiego pliku chociażby notatnikiem. Potrzebowałbym informacji o bazach danych lub ew. innych rodzajach plików (zastanawiałem się nad plikami typowanymi, jednak mają duże ograniczenia co do długości stringów a nie chcę robić z tym wielkich kombinacji, bo się jeszcze pogubię ;-P). Zupełnie nic nie wiem o bazach danych, czytałem coś niecoś na 4p, ale niewiele się dowiedziałem... :-|

Konstrukcja powinna być podobna do plików INI, podam przykład jednego paragrafu:

[nr paragrafu]
opis=Możesz isc w prawo i lewo
krok1=Ide w prawo
krok2=Ide w lewo
par1=1
par2=2

Po wybraniu opcji "Ide w lewo" program przechodziłby do paragrafu 2 itd. Cały mechanizm odczytu już mam gotowy, dlatego baza danych o budowie jak pliki INI byłaby wskazana.

Największym ograniczeniem są ilości danych: przy plikach INI o wielkości ok 64kb odczyt spowalnia, pliki typowane mają ograniczenia co do długości stringa, a moja gra paragrafowa ma więcej niż 1000 paragrafów, a opisy dochodzą czasem do paru tysięcy znaków... Jeszcze trzeba pamiętać o skryptach, które mogą mieć dziesiątki linijek i być podczepione do każdego paragrafu...

Prosiłbym o informacje o bazach danych, które byście polecili...
Z góry dziękuję ;-) </url>

0

Obsługuję bazę danych, która ma 8x12x31x200x4 pola. Używam pliku amorficznego i struktur danych. Odczyt i zapis przez BlockRead/BlockWrite. Można czytać duże porcje z pliku.

0

A prościej się nie da? Takie kombinacje to nie dla mnie ;)

0

To nie będzie takie trudne, popatrz:
Deklarujesz strukturę:

type
 PParagraf = ^TParagraf;
 TParagraf = record
   Opis :string[20];
   Krok1 :string[20];
   Krok2 :string[20];
   Par1 :Word; // numer paragrafu, do kturego sie udajemy
   Par2 :Word;
  end; 

var
Paragraf :TParagraf; // w przypadku tablic paragrafów użyj wskaźnika
F :file;

begin
// znajdowanie właściwego paragrafu
// odczyt
AssignFile(F, 'XXX.YYY');
Reset(F, 1);
Seek(F, Nr * SizeOf(TParagraf))
BlockRead(F, Paragraf, SizeOf(TParagraf));
CloseFile(F);
if Paragraf.Par1 then // cos tam

// zapis
Rewrite(F, 1);
Seek(F, Nr * SizeOf(TParagraf))
BlockWrite(F, Paragraf, SizeOf(TParagraf));
CloseFile(F);
end;

Wiem, że to nie do końca Ci wyjaśnia, musiałbym widzieć chociaż fragment programu. Ja tak robię w moim i działa. 

0

Chesz naprawdę szybka obsługę bazy danych? Postudiuj zagadnienia typu tablice hashowane. Ogólnie algorytmy i struktury danych.

0

Oleksy Adam, a co z ograniczeniami długości stringa? Jeśli się nie mylę, w rekordzie string moze miec <=255 znaków, a to mi nie wystarcza :\

0
array [0..1000] of char; // na przykład

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