[ Manve @ 12.12.2008. 16:01 ] @
Interesuje me definicija ovog pojma kao i literatura gde mogu saznati nešto više o ovom pojmu. Googlao sam ali na žalost ili nisam upotrebio pravi ključ ili nisam znao gde da tražim. Bilo kakav link ka literaturi u elektronskoj formi, ili nekoj izdavačkoj kući koja ima literaturu na ovu temu bio bi mi od velike koristi. Hvala unapred svima koji se potrude da mi daju odgovor.
[ bogdan.kecman @ 16.12.2008. 14:48 ] @
DDBMS kao takav koliko ja znam "ne postoji", mozes da koristis normalan RDBMS da cuvas "dynamic database schema" iliti bazu koja dinamicki menja svoju strukturu. To mozes sa svakim boljim RDBMS-om.

"dynamic database schema" podrazumeva sistem koji cuva model cija se sema menja tokom rada. (schema may be extended or altered in production).

Svaki bolji RDBMS ti nudi mogucnost da ovo implementiras kroz DDL (create table, alter table, rename table, drop table ... ), na tebi je da u svojoj aplikaciji po potrebi kreiras / menjas tabele koje cuvas u RDBMS-u.

Primer za "dynamic database schema" je LDAP. Ako pogledas OpenLDAP na primer, on podatke cuva u bdb-u ili u MySQL Cluster-u , ali dinamicki menja strukturu baze (kreira nove tabele po potrebi, menja strukturu tabela po potrebi ... etc).

Ne postoji "dynamic database schema" proizvod, postoje razne implementacije za razne potrebe, set "best practice" stvari .. etc.. Nema "silver bullet" resenja, moras da imas jasnu predstavu sta hoces da sacuvas u bazi, kakva je dinamika promena i onda u odnosu na te informacije gledas kako se koji RDBMS ponasa, kakav mu je DDL, koje su mu negativne a koje pozitivne strane te sa svim tim informacijama odlucis koji RDBMS ces da koristis i kako ces da implementiras svoj DDS (dynamic database schema) sistem.

Na primer, ako za RDBMS nad kojim implementiras DDS koristis MySQL, moras da znas da svaki DDL lokuje glavni file mutex sto znaci da dok se izvrsava DDL "nista drugo ne radi", ako koristis MySQL Cluster, moras da znas da starije verzije ne podrzavaju global schema lock etc etc ... dakle ima tu mnogo informacija za svaki RDBMS koje moras da znas da bi kvalitetno imlpementirao DDS sistem iznad nekog RDBMS sistema.

U svakom slucaju, DDS je sloj iznad RDBMS-a na primer za OpenLDAP:
Code:

 Client    API    Replication
       \    V    /
         OpenLDAP
            |
            V
           DDS
            |
            V
RDBMS (bdb, MySQL Cluster, ..)
            |
            V
      Storage Engine


Sad, ti mozes da kazes da je LDAP "dinamicka baza" iliti DDBMS sto bi mozda bilo tacno ali realno on nije dinamican u smislu da ti mozes da stavis u njega "sta oces" tj, on se ne prilagodjava tebi, on ima svoju strukturu koju ti definises "unapred" i koja se tokom rada ne menja (in production), tako da je prilicno statican gledan kao "zaokruzen proizvod", on samo implementira DDS sloj iznad RDBMS sloja kako bi mogao da uspesno cuva podatke koji nisu "linearni / tabelarni" kako to RDBMS zahteva