Skocz do zawartości

duża baza danych


Nubosabuk

Rekomendowane odpowiedzi

w mojej grze (https://forum.gmclan.org/index.php?showtopic=27269 ) mam mnóstwo obiektów- jest kilkadziesiąt tysięcy obiektów gwiazd, każda z nich zawiera dane na temat samej gwiazdy jak i tablice z danymi na temat planet krążących wokół niej. Za każdym razem gdy odwiedzany jest układ planetarny, obiekt gwiazda generuje układ planet na podstawie tych danych. Póki co, są one w większości statyczne, lecz wprowadzając interakcje z planetą- wydobycie surowców, budowanie infrastruktury itp będę pewnie potrzebował wydajniejszego systemu zarządzania danymi, bo chyba bez sensu za każdym razem ładować do obiektu gwiazdy setki różnych informacji- przy tysiącach gwiazd zapchał bym pamięć lub za wolno by to działało. Jak się zabrać do zrobienia ogromnej bazy danych w pliku? tak jak grid jest dwuwymiarową tablicą to chyba potrzebował bym więcej wymiarów, ze względu na zagnieżdżenie danych (gwiazda->planeta->info o planecie-> i może coś jeszcze dalej). Co radzicie?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

ds_list, ds_grid, ds_map - każde z nich tworząc się zwraca referencję, więc można je zagłębiać:

 

GML
var a;

 

a = ds_map_create();

ds_map_add(a,'nazwaPlanety','Saturn');

 

global.planety = ds_map_create();

ds_map_add(global.planety, 'pierwszaPlaneta', a);

 

//odczyt

var m;

m = ds_map_find_value(global.planety, 'pierwszaPlaneta');

/* w zmiennjej m mamy teraz ds_mapę którą stworzyliśmy wcześniej jako tymczasowe a

warto pamiętać, że pomimo, iż zmienna a była tymczasowa (var), to nie przetrzymywała ona

ds mapy, a jedynie jej id (referencję / wskaźnik) - zatem zmienna zniknęła, ale mapa zostaje w pamięci

- trzeba pamiętać, aby zwalniać niepotrzebne ds_mapy, inaczej prowadzi to do wycieków pamięci */

 

var nazwa;

nazwa = ds_map_find_value(m, 'nazwaPlanety');

show_message(nazwa); // pokaże: Saturn

/*zamiast stringów nazwaPlanety, dla ułatwienia można uzywać stałych (constans) - wtedy zaoszczędzamy pamieć,

bo zamiast długiego stringa, mamy liczbę, np.:

nazwaPlanety - 1

srednicaPlanety - 2

iloscSatelit - 3

itd.*/

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...