Wątek przeniesiony 2023-01-16 14:39 z Nietuzinkowe tematy przez Riddle.

Jak w obiektowych bazach danych przechowuje się powiązania między obiektami?

0

Hej

W relacyjnej bazie danych, obiektom będą odpowiadały encje, a ich "zawieranie się" będzie odpowiadało odpowiednim relacjom, wyrażonym poprzez klucz główny i obcy.
A jak to jest w bazach obiektowych (OODBMS)? Tam już nie ma kluczy głównych ani obcych, nie ma też takich zasad jak przy tworzeniu baz relacyjnych (np. wiele-do-wiele to oddzielna tabela).

Czytałam coś o jakiś wskaźnikach ale kompletnie tego nie rozumiem :/

1

W bazach danych obiektowych (OODBMS) nie ma kluczy głównych ani obcych, ponieważ dane są przechowywane w postaci obiektów i relacje między nimi są reprezentowane przez odwołania do innych obiektów. Zamiast kluczy głównych i obcych, OODBMS używają wskaźników (ang. pointers) lub identyfikatorów obiektów do reprezentowania relacji między obiektami. Wskaźniki pozwalają na bezpośrednie odwoływanie się do innych obiektów za pośrednictwem ich adresów w pamięci. W ten sposób, OODBMS nie musi przeprowadzać operacji joinów, jak to ma miejsce w relacyjnych bazach danych.
Identyfikatory obiektów to unikalne identyfikatory przypisane do każdego obiektu w bazie danych, które pozwalają na odnalezienie obiektu poza jego adresem w pamięci. W ten sposób, OODBMS mogą przechowywać obiekty na dysku lub w innych systemach pamięci masowej, a nie tylko w pamięci operacyjnej. W bazach danych obiektowych, relacje między obiektami są reprezentowane przez odwołania do innych obiektów, a nie przez tabele. Dlatego też, relacje wiele-do-wiele są reprezentowane przez odpowiednie kolekcje obiektów.

1
Vanos napisał(a):

Wskaźniki pozwalają na bezpośrednie odwoływanie się do innych obiektów za pośrednictwem ich adresów w pamięci.

I co, OODBMS zapisuje sobie wskaźniki z jednego komputera, a potem gwarantuje, że po odczycie obiekty trafią w to samo miejsce pamięci na innym komputerze? :D

W ten sposób, OODBMS mogą przechowywać obiekty na dysku lub w innych systemach pamięci masowej, a nie tylko w pamięci operacyjnej.

To chyba oczywiste, że celem użycia bazy danych jest utrwalenie danych, a nie trzymanie ich w pamięci ulotnej.

Jesteś może botem?


HalinkaMałaDziewczynka napisał(a):

W relacyjnej bazie danych, obiektom będą odpowiadały encje, a ich "zawieranie się" będzie odpowiadało odpowiednim relacjom, wyrażonym poprzez klucz główny i obcy.
A jak to jest w bazach obiektowych (OODBMS)? Tam już nie ma kluczy głównych ani obcych, nie ma też takich zasad jak przy tworzeniu baz relacyjnych (np. wiele-do-wiele to oddzielna tabela).

Nie ma kluczy, bo nie są one potrzebne. Nie ma po co sztucznie rozbijać obiektu na relacje, jak to ma miejsce w przypadku baz relacyjnych. Po prostu zapisujesz/odczytujesz cały graf obiektów (np. faktura razem z jej pozycjami) np. jako jeden dokument json pod jakimś jednym identyfikatorem.

0

@Vanos dał odpowiedź bardzo podobną do tej z chatu GPT, też tam było o tych wskaźnikach, ale nie mogłam tego zweryfikować (w Internecie jest trochę artykułów, ale raczej dość prostych i ciężko mi było to potwierdzić bez większej wiedzy o bazach danych)

@somekind, dzięki za odpowiedź

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