[alg] Waarom altijd RDBMS en geen ODBMS?

Pagina: 1
Acties:
  • 537 views sinds 30-01-2008
  • Reageer

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Ik stoor me aan het feit dat je redelijk wat tijd kwijt bent met alle problematiek rond OR. Je hebt een mooi domein model opgezet in UML, van dat domein model maak je een (verkracht) database model. Dan maak je een domein model in bv java of c#. Daarna maak je de mappings files en overal staat wat informatie versnipperd en je bent je zelf eigelijk maar aan het herhalen en herhalen. Verder is een RDMBS ook totaal niet gemaakt voor oo structuren en moet je dus in vreemde bochten wringen om bv class hierarchieen te mappen.

Maar een RDBMS heeft zeker wel voordelen. Het is de standaard, en het is algemeen benaderbaar en dit is niet gebonden aan het paradigma dat je gebruikt. Je zou gerust een oo systeem met dezelfde db laten communiceren als een procedureel systeem. De data die wordt opgeslagen is dus voor iedereen toegankelijk. Maar deze toegankelijkheid is niet gratis.. het kost tijd.. en tijd kost geld. Mijn vraag is waarom iedereen zo blijft vasthouden aan een rdbms, zelfs voor situaties waar je gewoon niet zeker bent dat er ooit nog een ander systeem aangekoppeld gaat worden. Why pay for what you don`t use?

Ik ben eigelijk nog maar weinig toepassingen van ODBMS`en tegengekomen en vraag me af waarom dat zo is. Waarom blijft iedereen vasthouden aan RDBMS`en? Waarom heb ik de indruk dat het gebruik van ODBMS`en een doodzonde is? Is dit domheid van de programmeurs die vastklampen aan oude tradities zonder zelf te begrijpen waarom? De angst om eens een andere oplossing te kiezen? Omdat iedereen het doet? Of is er een echte reden die mij nog niet duidelijk is?

ps:

Het gaat me dus niet om systeemen die algemeen toegankelijk moeten zijn voor niet oo talen, legacy systemen of iets in die geest. Het gaat me puur om systemen die volledig vanuit een oo omgeving aangesproken worden.

[ Voor 3% gewijzigd door Alarmnummer op 09-02-2005 22:35 ]


Verwijderd

Voor zover ik weet, maar ik ben hier geen echte expert in, is een RDBMS qua snelheid nog steeds onovertroffen als je dit zou vergeleken met een ODBMS :)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Verwijderd schreef op woensdag 09 februari 2005 @ 21:07:
Voor zover ik weet, maar ik ben hier geen echte expert in, is een RDBMS qua snelheid nog steeds onovertroffen als je dit zou vergeleken met een ODBMS :)
Dat zo best kunnen. Maar een standaard rdbms waarin objecten worden gemapt kon wel eens een orde van grote trager zijn dan een echte ODBMS, want OR mapping is niet gratis. En verder zou je met goeie caching oplossingen ook erg veel goed kunnen maken,

En het gaat er ook niet om of iets het snelste is.. maar of het snel genoeg is. Jij moet een klant wel kunnen uitleggen waarom jouw oplossing (die misschien wel veel sneller is dan die van mij) toch veel meer geld kost (langere ontwikkeltijd).. En waarbij die snelheid totaal niet gebruikt wordt..

Als jij bij een garage komt voor een auto laat jij je toch ook geen ferrari aansmeren omdat dit de snelste auto is die daar staat? Jij hoeft niet de snelste auto.. maar een auto die snel genoeg is.. en het liefst zo weinig mogelijk kost. Ik denk dat er maar weinig klanten zijn de van geld over de balk gooien houden.

[ Voor 7% gewijzigd door Alarmnummer op 09-02-2005 21:26 ]


  • NetForce1
  • Registratie: November 2001
  • Laatst online: 19:33

NetForce1

(inspiratie == 0) -> true

Ik heb me er nog nooit echt in verdiept, maar omdat ik het toch wel interessant vind vroeg ik maar eens aan onze vriend Google wat hij er van vind. :P De eerste hit levert een site op met een aantal reuze interessante artikelen. Er wordt gesteld dat een ODBMS tot wel 10-1000 keer sneller kan zijn dan een RDBMS...

Hoewel SQL me nou niet echt moeilijk afgaat vind ik het toch altijd weer een gepiel al die joins. * NetForce1 duikt snel het net weer op een gaat opzoek naar nog meer artikelen en open-source/gratis ODBMS-en

[ Voor 12% gewijzigd door NetForce1 op 09-02-2005 21:56 ]

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 26-12 16:48

NMe

Quia Ego Sic Dico.

Ik zie niet in waarom een RDBMS niet geschikt zou zijn voor het opslaan van data voor een OO-applicatie. Om je even te quoten:
Verder is een RDMBS ook totaal niet gemaakt voor oo structuren en moet je dus in vreemde bochten wringen om bv class hierarchieen te mappen.
Ik ben nog nooit een class tegen gekomen die niet met gemak in een relationele tabel te gebruiken was. Kun je een voorbeeld geven van zo'n "totaal impractische" (zoals je het zelf feitelijk zegt) toepassing van een class in een RDBMS?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Ik hoop niet dat dit een discussie gaat worden dat ODBMS`en sneller of beter zijn. Ik denk alleen dat ze in sommige situaties een goedkoper alternatief kunnen zijn. Van alle applicaties waar ik de laatste tijd mee bezig geweest, zijn het altijd object modellen die in de db opgeslagen moeten worden en objecten modellen eruit. We hebben nog geen andere toegang naar de database gehad dan vanuit een object omgeving.

Mijn vraag is dus waarom je betaald voor die extra OR kosten, maar nooit behoefte hebt aan het relationele gedeelte. Dat is de vraag die ik graag beantwoord zou willen hebben.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
-NMe- schreef op woensdag 09 februari 2005 @ 22:01:
Ik zie niet in waarom een RDBMS niet geschikt zou zijn voor het opslaan van data voor een OO-applicatie. Om je even te quoten:

[...]

Ik ben nog nooit een class tegen gekomen die niet met gemak in een relationele tabel te gebruiken was. Kun je een voorbeeld geven van zo'n "totaal impractische" (zoals je het zelf feitelijk zegt) toepassing van een class in een RDBMS?
Subclassing... Er zijn verschillende oplossingen:
1 table per class ->brak database model
1 table per class hierarchie -> geen constraints meer over velden van die classes mogelijk
1 table per class met een centraal identiteits tabel (exacte naam ben ik ff kwijt) -> veel join problematiek )

take your pick.. ze hebben allemaal nadelen. En ik denk dat ik ook zo een mooi oo voorbeeld met wat interfaces kan opstellen die je dus nooit die db in krijgt. Ik wil niet zeggen dat het een ontwerkbare situatie is. Maar je probeert eigelijk een vierkant blokje door een rond gaatje te drukken. Flink erop hammeren en meestal kun je het wel passend krijgen, maar het is niet zoals het hoort.En ik wil ook niet zeggen dat RDMBS een volslagen kut oplossing zijn.. maar ik kan me situaties voorstellen waarbij een ODBMS een betere keuze is.

Als ik een keuze moet maken met Middleware kan ik verschillende alternatieven bekijken en degene selecteren die het beste past bij een bepaalde taak. Als ik iets snel wil hebben en het is Java-Java dan gebruik ik rmi en geen webservices. Als ik distributed object model wil hebben gebruik ik Corba en geen sockets.. Maar Webservices en sockets zijn op andere gebieden veel beter dan Corba en RMI. Alleen bij het opslaan van data is er maar 1 oplossing: RDBMS.. mijn vraag is: waarom geen andere alternatieven?

[ Voor 9% gewijzigd door Alarmnummer op 09-02-2005 22:10 ]


  • joepP
  • Registratie: Juni 1999
  • Niet online
Heb je echt -nooit- behoefte aan het relationele gedeelte?

Hoe ga je complexe geaggregeerde queries over meerdere master-detail relaties uitvoeren? En de performance daarvoor een beetje fatsoenlijk houden? Voor een beetje management-rapportage ontkom je daar al niet aan.

Verwijderd

Binnen bedrijven waar ik werk en heb gewerkt, gebruiken mensen RDBMS om toegankelijk te zijn voor andere systemen die in de toekomst gebruik zouden kunnen worden! Veel data moet geput worden uit bestaande systemen! en xml interface is niet voor iedereen een oplossing.

Vooral het missen van OODBMS bij de grotere leveranciers, zoals ms, ibm, oracle, enz is een sterk argument voor het management op het NIET te gebruiken!

Zo wie zo vinden it-ers het moeilijker om te bewijzen waarom een lang bestaand, zichzelf nog bewezen db, moet worden vervangen door ODBMS.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
joepP schreef op woensdag 09 februari 2005 @ 22:08:
Heb je echt -nooit- behoefte aan het relationele gedeelte?
Nog geen enkele keer. Wij werken vanuit een oo model, en dat die in een database is opgeslagen is totaal niet relevant binnen dit model. Dus daarom heb je ook nooti behoefte aan het relationele gedeelte.. Alleen in uitzonderlijke situaties is het handiger om de query op de db zelf te verwerken dan objecten uit de db te halen. Maar dit probleem zul je ook aantreffen bij een ODBMS.
Hoe ga je complexe geaggregeerde queries over meerdere master-detail relaties uitvoeren? En de performance daarvoor een beetje fatsoenlijk houden? Voor een beetje management-rapportage ontkom je daar al niet aan.
Ik zie het probleem niet. In een ODBMS kan het ODBMS gewoon met een Object Query Language (OQL) de objecten bij langs gaan. En op dezelfde manier informatie vergaren als een RDBMS systeem. Het is niet noodzakelijk dat je zelf die objecten helemaal terug moet halen om daarna pas informatie eruit kunt halen. Je kunt zelfs nog een stap verder gaan en bv java code injecteren in de database die die functies uitvoert over de opgeslagen objecten.

[ Voor 8% gewijzigd door Alarmnummer op 09-02-2005 22:18 ]


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Verwijderd schreef op woensdag 09 februari 2005 @ 22:10:
Binnen bedrijven waar ik werk en heb gewerkt, gebruiken mensen RDBMS om toegankelijk te zijn voor andere systemen die in de toekomst gebruik zouden kunnen worden! Veel data moet geput worden uit bestaande systemen! en xml interface is niet voor iedereen een oplossing.
lees aub mijn 1e post even goed. Er staat een heel stuk in waarom ODBMS`en niet in alle situaties de beste oplossing zijn. En als jij verder software ontwikkeld, dan ga jij toch ook geen software ontwikkelen omdat het ooit wel eens handig zou kunnen zijn? Dan ga je toch voor de simpelste oplossing die goed werkt? (ik wel in ieder geval). Alleen als ik er echt vanuit kan gaan dat in de toekomst iets op een andere manier gebruikt zou kunnen worden, dan en dan alleen ga ik daar ook rekening mee houden. Ik zie niet in waarom deze regel niet toegepast kan worden een database. Use the right tool for the job... en dat is niet noodzakelijk de meest krachtige/snelle/toegankelijke/uitbreidbare...
Vooral het missen van OODBMS bij de grotere leveranciers, zoals ms, ibm, oracle, enz is een sterk argument voor het management op het NIET te gebruiken!
Het ligt er aan. Niet alle systemen hebben enorm veel informatie dus zie ik de toegevoegde waarde ook niet om een heel krachtig systeem te gebruiken waarvan ik nog geen fractie van de features gebruik.

Verder vind ik het ook wel een beetje vreemd hoor dat er relatief weinig grote jongens zijn die ODBMS`en maken. Van ms kan ik het me wel voorstellen.. die zijn helemaal gericht op hun datasets en hebben niet het inzicht om te begrijpen dat het handig kan zijn om objecten te mappen. Maar van de andere grote jongens vind ik het wel erg vreemd..
Zo wie zo vinden it-ers het moeilijker om te bewijzen waarom een lang bestaand, zichzelf nog bewezen db, moet worden vervangen door ODBMS.
Hmm tja.. It = vooruitgang.. en je moet niet onnodig blijven vasthouden aan achterhaalde standaarden. Daarom moet je ook durven schoppen tegen heilige huisjes... altijd vragen...

[ Voor 18% gewijzigd door Alarmnummer op 09-02-2005 22:35 ]


Verwijderd

Je gaat hier voorbij aan de huidige infrastructuur van allerlei bedrijven.

Veel (grote) bedrijven zijn al jaren aan het ontwikkelen op grote relationele database systemen.
Vaak zijn er dan ook een heleboel applicaties aanwezig waarop veel mensen full-time aan het werk zijn.

Denk eens aan Oracle Forms applicaties die je zowat bij elk groot bedrijf in Nederland vindt. Hierop zijn duizenden (oracle) programmeurs dagelijks bezig.

Uiteraard hebben deze mensen een totaal andere denkwijze dan bijv. C# en Java programmeurs...
Ze denken niet Object georienteerd, zijn hier ook niet mee bezig, en willen dit ook graag niet gaan leren...

Daarnaast is het ook nog eens zo dat relationele databases in de loop der jaren enorm zijn doorontwikkeld en hiermee ontzettend veel mogelijk is...
Het is een bewezen techniek, (over het algemeen) enorm stabiel, zeer snel en geoptimaliseerd.

Wij Java programmeurs hebben vaak de neiging om te denken vanuit een (Java / Object) georienteerd denk model. Over het algemeen wordt echter nog vaak gedacht vanuit een procedurieel en relationeel denkmodel...

Misschien dat in de toekomst OO databases in populariteit zullen toenemen. Ik vermoed dan ook dat het de komende jaren ook niet zal gebeuren (althans niet de komende 5 a 10 jaar).
Hiervoor is een wijziging van het denk model nodig ... En dat kan wel eens een tijdje duren!

Verwijderd

Alarmnummer schreef op woensdag 09 februari 2005 @ 22:23:
[...]
Verder vind ik het ook wel een beetje vreemd hoor dat er relatief weinig grote jongens zijn die ODBMS`en maken. Van ms kan ik het me wel voorstellen.. die zijn helemaal gericht op hun datasets en hebben niet het inzicht om te begrijpen dat het handig kan zijn om objecten te mappen. Maar van de andere grote jongens vind ik het wel erg vreemd..
[...]
Dit is ook mijn ervaring. En het had zo mooi kunnen zijn als IBM of MS eens wat neerzette.
De producten die ik wel heb mogen (moeten) gebruiken waren dusdanig arm aan features dat de keuze voor het systeem een mislukking bleek. Voornamelijk het ontbreken query features is zeer storend. Of dat moderne scandivavische product wat geen overerving aankan. Het is duur genoeg :( .

  • joepP
  • Registratie: Juni 1999
  • Niet online
Alarmnummer schreef op woensdag 09 februari 2005 @ 22:16:
Ik zie het probleem niet. In een ODBMS kan het ODBMS gewoon met een Object Query Language (OQL) de objecten bij langs gaan. En op dezelfde manier informatie vergaren als een RDBMS systeem. Het is niet noodzakelijk dat je zelf die objecten helemaal terug moet halen om daarna pas informatie eruit kunt halen. Je kunt zelfs nog een stap verder gaan en bv java code injecteren in de database die die functies uitvoert over de opgeslagen objecten.
Performance?

Een fatsoenlijk RDBMS kan allerlei tussenresultaten bijhouden, zoals geaggregeerde queries die allerhande totalen moeten berekenen over zeer veel data nog steeds goed performen. Als dat soort features ontbreken zal de database voor wat betreft complexe rapportages nooit snel genoeg zijn.

  • dawuss
  • Registratie: Maart 2001
  • Laatst online: 03-12 13:40

dawuss

gadgeteer

Ik ken zelf eigenlijk heel weinig ODBM Systemen, maar ik weet in ieder geval dat er voor RDBMS wiskundig heel veel te optimaliseren is met verzamelingentheorie en dergelijke. Geldt dat ook voor ODBMS?

micheljansen.org
Fulltime Verslaafde Commandline Fetisjist ©


  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 23:56

JaQ

Verwijderd schreef op woensdag 09 februari 2005 @ 21:07:
Voor zover ik weet, maar ik ben hier geen echte expert in, is een RDBMS qua snelheid nog steeds onovertroffen als je dit zou vergeleken met een ODBMS :)
En precies daarom wordt de data van het atoomagentschap in een ODBMS opgeslagen [/sarcasme] (in objectivity, naar mijn mening veruit de beste ODBMS)).. Sorry, maar dat is dus niet waar. Ook motorolla heeft met zijn satelietproject gekozen voor een ODBMS (tevens objectivity, vanwege de perfecte replicatie en GRID mogelijkheden)

Er zijn veel situaties waarin een object gerelateerde database een goede keuze is. Denk bijvoorbeeld aan zoiets "eenvoudigs" als een adres opslaan. Voor iedere exotische variant van een adres heb je een subobject, geweldig overerven etc. etc. Echter omdat veel programmeurs en ontwikkelaars nog niet OO denken, maar relationeel komt het nog niet echt van de grond. Ik ben zelf van mening dat je het beste middel voor een doel moet gebruiken en dat kan dus een ODBMS zijn.

Nog maar wat meer door bovenstaande reacties:
natuurlijk zoek je bepaalde features in een database, maar het is natuurlijk stompzinnig om het idee ODBMS af te serveren op features waarvan je vermoed dat ze niet aanwezig zijn in een ODBMS. meten is weten ;) zie deze link

[ Voor 14% gewijzigd door JaQ op 10-02-2005 20:01 ]

Egoist: A person of low taste, more interested in themselves than in me


  • whoami
  • Registratie: December 2000
  • Laatst online: 26-12 16:19
Waarom ?
Ik denk dat het redelijk makkelijk is: aanbod.
Hoeveel echte ODBMS'en ken je ? Ik heb weet van Caché, en dat schijnt wel een goeie te zijn.
Hoeveel mensen (hoeveel % van de it'ers) hebben er op dit moment kennis van ODBMS'en?

Ik denk dat daar vooral de 'drempel' ligt. Op dit moment is RDBMS dé industrie-standaard (als in, meest gebruikt, misschien zonder er verder bij na te denken; wellicht dat dit binnen x aantal jaar volledig verschoven is).
Daarnaast heb je ook nog eens het feit dat de meeste bedrijven nù een RDBMS hebben, en applicaties hebben die op die RDBMS werken, en die applicaties werken goed.
Waarom zouden ze dan nu alles overboord gooien, veel geld investeren om een nieuwe ODBMS te ontwikkelen, tijd en geld investeren om hun (grote hoeveelheden) data die nu in een rdbms zit, om te gaan zetten naar een ODBMS (ja, dat gaat ook O/R mapping zijn...).

Echter, met één regel ben ik het niet echt eens Alarmnumer:
e hebt een mooi domein model opgezet in UML, van dat domein model maak je een (verkracht) database model.
Volgens mij is het zo:
Je maakt eerst je database-model, en dan pas ga je een domein-model gaan bouwen. Althans, dat is toch de manier die ik tot nu toe altijd gezien heb.

Het relationele aspect nog nooit nodig gehad.... hmmm...

[ Voor 4% gewijzigd door whoami op 10-02-2005 20:13 ]

https://fgheysels.github.io/


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
joepP schreef op donderdag 10 februari 2005 @ 19:22:
[...]

Performance?

Een fatsoenlijk RDBMS kan allerlei tussenresultaten bijhouden, zoals geaggregeerde queries die allerhande totalen moeten berekenen over zeer veel data nog steeds goed performen.
Volgens mij begrijp je dit topic niet. Het gaat mij niet om de snelste oplossing maar om een eenvoudige oplossing. Ik ben extra tijd kwijt door or mapping en die tijd was ik niet kwijt als ik een object direct in een database kon schieten. Tijd = geld.. Als ik weet dat er niet enorm veel request worden uitgevoerd (bv voor een interne applicatie), waarom in GODSNAAM dan altijd maar kiezen voor een misschien snellere (qua performance) maar duurdere qua development tijd? Is dit zo moeilijk om te begrijpen? Is het zo lastig om in te zien dat je in veel gevallen alleen maar objecten ergens wilt storen?

Ik zal het ook voor de allerlaatste keer zeggen (voor het geval dat mensen het weer niet goed lezen)
Ik zeg niet dat RDBMS`en slecht zijn. In sommige situaties is het een betere oplossings dan ODBMS. Maar als je alleen maar objecten wilt opslaan, waarom dan altijd extra tijd steken in de voordelen van een RDBMS als ze niet worden gebruikt? Als developer heb ik graag keuzes... iedere situatie is uniek en heeft zijn eigen voorwaarden. Op basis van deze voorwaarden kan ik een techniek kiezen die het beste voor die specifieke situatie past. Bij middleware heb ik keuzes.. bij talen/platformen heb ik keuzes. Bij weblayers heb ik keuzes... maar bij object opslag niet..
Als dat soort features ontbreken zal de database voor wat betreft complexe rapportages nooit snel genoeg zijn.
Ja en? Als je dat niet nodig bent.. waarom dan ervoor betalen?

[ Voor 27% gewijzigd door Alarmnummer op 10-02-2005 20:55 ]


Verwijderd

Ik denk dat ook een stukje kennis mee speelt.
Ik heb MBO IT gedaan, en heb daar enkel SQL gehad en RDBMS voor de rest wel een stukje theory over andere DBMS'en maar als dat bij elkaar een week aan uren les is zou ik het veel vinden.

Uiteraard zal op het HBO, of uni meer aandacht besteed worden aan andere vormen van database opslag, maar ik gok dat ook daar de meeste aandacht aan RDBMS gegeven zal worden.

dus ik gok dat een stukje "onbekent maakt onbemind" zeker zal meespelen.

kijk bijvoorbeeld naar XML en CSS. Nu moet iedereen het gebruiken, en ben je niet hip jong en vernieuwend als je het niet gebrukt.
Echter zijn beide toch zeker al wat ouder dan de hype er rond.

Dus zodra je pas jong hip en vernieuwend bent als je ODBMS gaat gebruiken verwacht ik niet dat er snel verandering gaat komen in de adaptatie.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
whoami schreef op donderdag 10 februari 2005 @ 20:10:
Waarom ?
Ik denk dat het redelijk makkelijk is: aanbod.
Hoeveel echte ODBMS'en ken je ?
Heel weinig idd.. Maar dat wil niet zeggen dat het slecht is.
Je maakt eerst je database-model, en dan pas ga je een domein-model gaan bouwen. Althans, dat is toch de manier die ik tot nu toe altijd gezien heb.
Hmm tja.. ligt er maar aan hoe je de zaak benadert. Als je een bestaande db in je object geheugen moet krijgen.. ja..

Als je from scratch begint en je redeneert vanuit je object model dan is je database een 'bijzaak" Ik werk op deze manier.. ik maak een object model.. en dat rag ik in een database. Waarom zou ik me willen beperken tot een 'eenvoudig' relationeel model als ik het veel krachtigere oo model kan krijgen?
Het relationele aspect nog nooit nodig gehad.... hmmm...
Ik heb er echt geen ene kont aan als ik werk vanuit een object model. Dus het hele relationele database model kan me in een oo applicatie volledig gestolen worden.

[ Voor 10% gewijzigd door Alarmnummer op 10-02-2005 20:48 ]


  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 23:56

JaQ

whoami schreef op donderdag 10 februari 2005 @ 20:10:

Volgens mij is het zo:
Je maakt eerst je database-model, en dan pas ga je een domein-model gaan bouwen. Althans, dat is toch de manier die ik tot nu toe altijd gezien heb.
Dat ben ik niet helemaal met je eens. In eerste instantie maak je een functioneel ontwerp. Daarna een technisch ontwerp. Onderdeel van dit technisch ontwerp is een datamodel, maar ook procesflow etc. In sommige gevallen is het logisch om je data relationeel te ontwerpen, maar soms ook niet. Dat je vaak automatisch voor een relationeel model kiest, is een kwestie van "dat gewent zijn".

Zelf ontwerp ik applicaties en stuur ik de teams aan die vervolgens deze applicaties realiseren. Nog niet lang geleden heb ik een generiek planningspakket ontworpen. Dit is een typisch voorbeeld waarin een object gerelateerde database een zeker zo goede (en misschien wel betere) oplossing is dan een relationele database. Uiteindelijk heb ik toch voor een relationele database gekozen, omdat de ontwikkelaars die het pakket aan het bouwen zijn geen ervaring met een object georienteerde database hebben (1) en omdat ik het moeilijk kan verkopen aan klanten (2) (o.a. ivm beheer, er lopen nou eenmaal meer oracle DBA's rond dan objectivity DBA's)

Egoist: A person of low taste, more interested in themselves than in me


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Ik denk dat de oplossing veel eenvoudiger is dan kosten/baten-problematiek of performance. Volgens mij is het simpelweg zo dat (natte vinger) 90% van de gegevens waar de IT'er mee te maken heeft in de automatisering nou eenmaal beter in een relationeel model past dan in een OO-model. Of, beter gezegd, meer gebruik kan maken van de voordelen van een relationeel model t.o.v. een OO-model. Voorbeeldjes hiervoor zijn simpel te verzinnen.

Dat zeg ik omdat ik denk dat het enige (aan de oppervlakte liggende) voordeel dat OO heeft boven relationele modellen inheritance is. Hoe veel heb je in de praktijk te maken met inheritance als je een systeem automatiseert? Ik denk dan aan vooral aan de opslag van data. Volgens mij lang zoveel niet als aan de toch klassieke relaties tussen gegevens, namelijk de 1:1, n:1 en de n:m (n:1:m) relaties. De reden dat RDBMS'en zo enorm veel gebruikt worden is dus geen reden dat die relaties veel toegepast worden; het is andersom. Als er veel behoefte geweest zou zijn aan ODBMS'en, zouden die een veel snellere vlucht genomen hebben in de afgelopen 10 jaar.

Dus, Alarmnummer, ik denk dat jij gewoon de pech hebt dat je in een werkveld zit waar je net even wat meer aan OO-modellen hebt, dan in een gemiddeld ander werkveld :P

Ik realiseer me overigens dat dit een redelijk extreme stellingname is, maar da's toch wel zoals ik nu de situatie interpreteer :)

offtopic:
Is er trouwens iemand die kan vertellen of ODBMS'en in de praktijk niet stiekem ook gewoon RDBMS'en met een O/R-mapper zijn? O-)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Daventry
  • Registratie: Oktober 2004
  • Laatst online: 21-04 10:00
Ik ken persoonlijk geen enkel degelijk gratis OODBMS ... en ik heb lang achter die dingen zitten zoeken juist omdat ik schijtziek werd van al dat relationeel mappen (en ja Hibernate is een goed product en een goede optie, maar het is en blijft gewoon overhead en een truck om de realiteit te omzeilen: dat je namelijk iets erg onlogisch aan het doen bent).

Ik ben het met whoami eens dat er gewoon veel te weinig aanbod is, en dat dat de doorbraak van OODBMSen tegenhoudt.

Als je ziet dat er voor relationele databases zoveel producten, in alle prijsklassen, aanwezig zijn, is het nogal logisch dat er voor die dingen meer kennis rondloopt en ze dus ook geliefder zijn in het bedrijfsleven ... en dat is voor mij ook een grote frustratie

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
drm schreef op donderdag 10 februari 2005 @ 20:58:
Ik denk dat de oplossing veel eenvoudiger is dan kosten/baten-problematiek of performance. Volgens mij is het simpelweg zo dat (natte vinger) 90% van de gegevens waar de IT'er mee te maken heeft in de automatisering nou eenmaal beter in een relationeel model past dan in een OO-model.
Volgens mij heb jij wel hele natte vingers.

En als je alleen gewent bent om een relationeel model te maken.. tja.. dan zal er ook nooit een object model uitkomen. Hoe vaak kom je niet een situatie tegen die een specialistie is van een iets generiek situatie, en waarbij extra informatie nodig is. De beste manier om dit op te lossen is subclassen. En dat kan niet eenvoudig in een relationeel model. Uiteraard zullen de doorgewinterde database ontwerpers hier wel hun vaste technieken voor ontwikkeld hebben. Maar mijn gok is dat het niets anders is dan een verkapte vorm van oo. Relationeel model = beperkt.. face it..
Dat zeg ik omdat ik denk dat het enige (aan de oppervlakte liggende) voordeel dat OO heeft boven relationele modellen inheritance is. Hoe veel heb je in de praktijk te maken met inheritance als je een systeem automatiseert?
Hmm tja.. als ik objecten maak (en ik schijn ze zo nu en dan te maken) dan wil bij mij nog wel eens het keyword extends verschijnen.. iets met subclassing enzo.. Als dit ding de db in moet tja... dan heb ik een 'probleem'. Met een echte OR mapper zoals Hibernate wordt gelukkig het meeste voor je gedaan, dus het is geen onoverkomelijke situatie. Maar het is in sommige gevallen wel een onnodige situatie.
Ik denk dan aan vooral aan de opslag van data. Volgens mij lang zoveel niet als aan de toch klassieke relaties tussen gegevens, namelijk de 1:1, n:1 en de n:m (n:1:m) relaties.
Jij dacht dat er in een oo database geen relaties zaten??
De reden dat RDBMS'en zo enorm veel gebruikt worden is dus geen reden dat die relaties veel toegepast worden; het is andersom.
Ik niet snappen.
Als er veel behoefte geweest zou zijn aan ODBMS'en, zouden die een veel snellere vlucht genomen hebben in de afgelopen 10 jaar.
Slechte argumentatie. Als we allemaal zo dachten zaten we nog met stokken beesten dood te steken en met stenen vuur te maken. It = vooruitgang. Er is geen bedrijfstak die zo onderhevig is aan veranderingen dan de it. Daarom moet je altijd blijven afvragen of er betere alternatieven zijn en hoe waardevol oude technieken nog zijn.

En ik denk dat in sommige gevallen een odbms een veel beter alternatief is dan een rdbms. Daarom mijn vraag.
Dus, Alarmnummer, ik denk dat jij gewoon de pech hebt dat je in een werkveld zit waar je net even wat meer aan OO-modellen hebt, dan in een gemiddeld ander werkveld :P
Hmm tja.. hier koop ik niets voor.
offtopic:
Is er trouwens iemand die kan vertellen of ODBMS'en in de praktijk niet stiekem ook gewoon RDBMS'en met een O/R-mapper zijn? O-)
Die zijn er wel. ik geloof dat Oracle wel van dit soort functionaliteit heeft (hear say).

[ Voor 10% gewijzigd door Alarmnummer op 10-02-2005 21:20 ]


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Ik zit zo eens te kijken naar de discussie techniek die jij erop nahoudt Alarmnummer en ik moet zeggen dat ik daar niet echt bijzonder van onder de indruk bent. Je bent bij de meeste reacties bezig om datgene eruit af te branden wat je niet aanstaat. Argumentatie onderuitknallen omdat het onzin is kan natuurlijk best, maar dan moet je er ook wel wat tegenover zetten. En opmerkingen als:
Alarmnummer schreef op donderdag 10 februari 2005 @ 21:15:
[...]

Slechte argumentatie. Als we allemaal zo dachten zaten we nog met stokken beesten dood te steken en met stenen vuur te maken. It = vooruitgang. Er is geen bedrijfstak die zo onderhevig is aan veranderingen dan de it. Daarom moet je altijd blijven afvragen of er betere alternatieven zijn en hoe waardevol oude technieken nog zijn.
Direct gevolgd door
En ik denk dat in sommige gevallen een odbms een veel beter alternatief is dan een rdbms.
...
wat een bijzonder vaag argument is, staat natuurlijk ook niet al te slim.

Goed, tot zover de terugschopmodus, nu een inhoudelijke reactie:
Ik denk dat het draagvlak voor pure OO oplossingen nog niet hoog genoeg is om het interessant te maken voor grote bedrijven om zich te wagen aan ODBMS-en.
Het valt natuurlijk te hopen dat er bij bedrijven als Oracle, die hun DB-omgeving uitrusten met een Java-based en oriented applicatieserver, snel een muntje zal vallen. Plus dat er blijkbaar wel een ODBMS is dat door prominente bedrijven gebruikt wordt (blijkt uit DrFrankenStoner's reacties). Misschien wordt dat wel de Oracle van de ODBMS-en, who knows? :)

Persoonlijk denk ik wel dat ze er wel gaan komen, maar vooralsnog moeten we ons maar vastbijten op OR-mapping en een oogje openhouden voor dbs als Objectivity. Of actie stoppen waar onze mond is en een eigen ODBMS opzetten :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 26-12 16:19
Alarmnummer schreef op donderdag 10 februari 2005 @ 20:32:
[...]

Heel weinig idd.. Maar dat wil niet zeggen dat het slecht is.
Dat zeg ik ook niet, maar hoe zeggen jullie dat nu ook alweer: 'wat de boer niet kent, dat vreet ie niet' ?
(wat Stratos ook al zegt; mensen kennen het niet, en ik denk ook niet dat er momenteel veel aandacht wordt besteed).
Zeg nu zelf: hoeveel applicaties die er nu gebruikt worden, worden echt opgezet (of werden) echt opgezet zoals het 'moet'. Hoeveel applicaties die in het echte bedrijfsleven van nu gebruikt worden zijn n-tiered opgezet, maken in de presentatie-laag gebruik van 'objecten' en bevatten geen sql - code ? Volgens mij zijn het er meer dan je denkt, en in die gevallen heb je gewoon niets aan een ODBMS, maar voldoet een RDBMS (is een RDBMS zelfs de meest geschikte keuze).
Als je from scratch begint en je redeneert vanuit je object model dan is je database een 'bijzaak" Ik werk op deze manier.. ik maak een object model.. en dat rag ik in een database. Waarom zou ik me willen beperken tot een 'eenvoudig' relationeel model als ik het veel krachtigere oo model kan krijgen?
Eens je zo begint te denken (domain driven), dan kan ik me voorstellen dat je dat idd hebt.
(Ben nu ook het boek 'model driven design' aan het lezen, dus wie weet, maar, zoals ik net zei denk ik dat een relationeel model krachtig genoeg is voor de meeste huidige applicaties.
Ik denk dat er pas een 'shift' zal komen van rdbms naar odbms als er idd meer en meer mensen / organisaties echt het n-tier model gaan toepassen, en écht model-driven gaan beginnen denken. Maar dat is, IMHO, vooralsnog niet het geval.

[ Voor 18% gewijzigd door whoami op 10-02-2005 21:53 ]

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 26-12 16:19
DrFrankenstoner schreef op donderdag 10 februari 2005 @ 20:44:
[...]


Dat ben ik niet helemaal met je eens. In eerste instantie maak je een functioneel ontwerp. Daarna een technisch ontwerp. Onderdeel van dit technisch ontwerp is een datamodel, maar ook procesflow etc. In sommige gevallen is het logisch om je data relationeel te ontwerpen, maar soms ook niet. Dat je vaak automatisch voor een relationeel model kiest, is een kwestie van "dat gewent zijn".
Je maakt idd eerst een functionele analyse, maar waar ik op doelde is dat, zoals jij al zegt, je dan meestal eerst gaat gaan kijken hoe je die data gaat gaan persisteren.
Op dat moment ga je gaan kijken op welke manier je die gegevens zo kunt gaan opslaan, zodanig dat je geen functionele beperkingen etc... gaat gaan hebben. En dat is vooralsnog nog altijd in de vorm van een RDBMS (op dit moment).
Pas dan gaat men meestal gaan kijken hoe die gegevens in een object-model kunnen gegoten worden.

Er zal dus, volgens mij, eerst een:
- shift in denkwijze nodig zijn ;
- nood zijn aan mensen die vertrouwd zijn met OO, en echt goeie OO designs kunnen maken, en niet zo zeer 'verstrakt' zitten in het stramien van 'data opslaan'.
- een groter aanbod van ODBMS'en aanwezig moeten zijn.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 26-12 16:19
drm schreef op donderdag 10 februari 2005 @ 20:58:
Ik denk dat de oplossing veel eenvoudiger is dan kosten/baten-problematiek of performance. Volgens mij is het simpelweg zo dat (natte vinger) 90% van de gegevens waar de IT'er mee te maken heeft in de automatisering nou eenmaal beter in een relationeel model past dan in een OO-model. Of, beter gezegd, meer gebruik kan maken van de voordelen van een relationeel model t.o.v. een OO-model. Voorbeeldjes hiervoor zijn simpel te verzinnen.
Daar ben ik het, zoals gezegd, wel mee eens.
Dat zeg ik omdat ik denk dat het enige (aan de oppervlakte liggende) voordeel dat OO heeft boven relationele modellen inheritance is. Hoe veel heb je in de praktijk te maken met inheritance als je een systeem automatiseert?
Hmm, nee.
Het gaat 'm niet om 'inheritance' an sich, het gaat 'm over 'encapsulatie' en polymorphisme.
Waarbij ik met encapsulatie niet enkel encapsulatie van 'data' bedoel, maar ook 'encapsulatie' van gedrag.
Ik denk dat het fout is om te stellen dat het grote voordeel van OO inheritance is.
Het grote voordeel van OO is, imo, dat je een 'abstract' model kunt ontwerpen, waarbij je het 'gedrag' van een object kunt wijzigen, zonder dat je daarom z'n interface moet wijzigen.
Om dat te realiseren, komt natuurlijk wel een (doordacht) gebruik van inheritance kijken.
En op die manier heb ik al veel gebruik gemaakt van inheritance.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 26-12 16:19
Alarmnummer schreef op donderdag 10 februari 2005 @ 20:25:
[...]
Ik zeg niet dat RDBMS`en slecht zijn. In sommige situaties is het een betere oplossings dan ODBMS. Maar als je alleen maar objecten wilt opslaan, waarom dan altijd extra tijd steken in de voordelen van een RDBMS als ze niet worden gebruikt? Als developer heb ik graag keuzes... iedere situatie is uniek en heeft zijn eigen voorwaarden. Op basis van deze voorwaarden kan ik een techniek kiezen die het beste voor die specifieke situatie past. Bij middleware heb ik keuzes.. bij talen/platformen heb ik keuzes. Bij weblayers heb ik keuzes... maar bij object opslag niet..
De keuze is er; er bestaan ODBMS'en, alleen: het aanbod is beperkt.

Editten is voor mietjes. :Y)

[ Voor 3% gewijzigd door whoami op 10-02-2005 22:18 ]

https://fgheysels.github.io/


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 10-12 14:13
Waarom uberhaupt een DBMS?
Ik blijf me erover verbazen hoeveel mensen een complete DB met ondersteunende code gebruiken om 5 constantes op te slaan. Ok, misschien is het teveel moeite om elke keer als er een verandert opnieuw te compileren, dat wil je niet elke maand. Maar gebruik dan een file!

een 'SELECT VALUE FROM VALUES WHERE KEY="aantal_afnemers" 'query is 8)7

Een DBMS levert je ook niet snel geserialiseerde data, laat staan in een portable formaat. Op z'n best krijg je misschien tegenwoordig XML, en dat is eigenlijk alleen geschikt om aan gzip te voeren.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
bigbeng schreef op donderdag 10 februari 2005 @ 21:50:
Je bent bij de meeste reacties bezig om datgene eruit af te branden wat je niet aanstaat.
Argumentatie onderuitknallen omdat het onzin is kan natuurlijk best, maar dan moet je er ook wel wat tegenover zetten. En opmerkingen als:
Mwuah.. ik denk dat ik genoeg argumenten heb aangegeven waarom om sommige gevallen ODBMS`en betere alternatieven zijn dan RDBMS`en. Mijn frustratie komt vooral voort uit het feit dat iedereen bij die ferrari blijft hangen terwijl een opel in sommige gevallen ook een goeie oplossing is. Dat jij het niet eens bent met mijn toon.. tja... zo ben ik... en verder... waarom zie ik van jou geen goeie argumenten?
wat een bijzonder vaag argument is, staat natuurlijk ook niet al te slim.
Niet al te slim.. poehee.. Ik vind dit typisch zo`n totaal non argument... Ik heb mijn argumenten gegeven.. en jij probeert je een beetje makkelijk populistisch een goed plekje te verwerven.. Sorry.. dat noem ik niet al te slim.. Dit is een houding die ik in ieder geval niet serieus neem.. En als je wilt kan ik je de argumenten wel even geven hoor? Geen probleem.. ze staan al meerdere keren in deze thread. Heb je de thread wel goed gelezen?? Of had je alleen even zin om goedkoop uit de hoek te komen?.
Goed, tot zover de terugschopmodus, nu een inhoudelijke reactie:
Gelukkig..
Ik denk dat het draagvlak voor pure OO oplossingen nog niet hoog genoeg is om het interessant te maken voor grote bedrijven om zich te wagen aan ODBMS-en.
Hmmm tja.. schijnbaar is het muntje bij jou ook nog niet gevallen. Soms heb je behoefte aan een object store. Een eenvoudige plek waarin je objecten kan opslaan en waar je eventeel nog wat eenvoudige query mogelijkheden hebt. En waar je de rest van de features uit RDBMS`en domweg niet nodig bent. Waarom altijd kiezen voor die zware oplossing? Ben ik misschien toch dom omdat ik in sommige situaties een ander alternatief wil?
Het valt natuurlijk te hopen dat er bij bedrijven als Oracle, die hun DB-omgeving uitrusten met een Java-based en oriented applicatieserver, snel een muntje zal vallen. Plus dat er blijkbaar wel een ODBMS is dat door prominente bedrijven gebruikt wordt (blijkt uit DrFrankenStoner's reacties). Misschien wordt dat wel de Oracle van de ODBMS-en, who knows? :)
Yep.. Maar we leven intussen al meer dan 10 jaar naar de introductie van oo. Waarom zijn er nog steeds geen bekende oo databases?
Of actie stoppen waar onze mond is en een eigen ODBMS opzetten :)
Jij dacht toch niet dat er vanuit GOT een echt ODBMS ontwikkeld kon worden? Daarvoor mist hier inzicht, kennis, inzet en visie. Geen serieuze optie.

[ Voor 23% gewijzigd door Alarmnummer op 11-02-2005 09:34 ]


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
1 acroniem:
ACID

  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 23:56

JaQ

whoami schreef op donderdag 10 februari 2005 @ 21:57:
[...]

Je maakt idd eerst een functionele analyse, maar waar ik op doelde is dat, zoals jij al zegt, je dan meestal eerst gaat gaan kijken hoe je die data gaat gaan persisteren.
Op dat moment ga je gaan kijken op welke manier je die gegevens zo kunt gaan opslaan, zodanig dat je geen functionele beperkingen etc... gaat gaan hebben. En dat is vooralsnog nog altijd in de vorm van een RDBMS (op dit moment).
Pas dan gaat men meestal gaan kijken hoe die gegevens in een object-model kunnen gegoten worden.

Er zal dus, volgens mij, eerst een:
- shift in denkwijze nodig zijn ;
- nood zijn aan mensen die vertrouwd zijn met OO, en echt goeie OO designs kunnen maken, en niet zo zeer 'verstrakt' zitten in het stramien van 'data opslaan'.
- een groter aanbod van ODBMS'en aanwezig moeten zijn.
Hier zijn we het dus volledig over eens. Laat ik daar even heel duidelijk in zijn. (zie mijn voorbeeld m.b.t. dat planningspakket).

Kort door de bocht gezecht is de wereld nog niet klaar voor ODBMS-en. Ik vraag me ook af of het er ooit van gaat komen. Je ziet zelfs al steeds meer discussie komen over het J2EE model (bloated). N-tier is in theorie leuk, maar niet altijd pragmatisch (zoals jij ook al aangaf). Zelf probeer ik altijd de theorie zo veel mogelijk toe te passen, maar het werkt gewoon niet altijd zo. Zeker niet als je te maken hebt met "weg-werp-applicaties". In principe is een systeem zoals bijvoorbeeld met Oracle Designer wordt gepromoot (100% genereren, alles uit een repository) qua theorie het mooiste, maar pragmatisch is dit niet haalbaar (en te duur).

Egoist: A person of low taste, more interested in themselves than in me


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
whoami schreef op donderdag 10 februari 2005 @ 21:53:
[...]

Dat zeg ik ook niet, maar hoe zeggen jullie dat nu ook alweer: 'wat de boer niet kent, dat vreet ie niet' ?
(wat Stratos ook al zegt; mensen kennen het niet, en ik denk ook niet dat er momenteel veel aandacht wordt besteed).
Zeg nu zelf: hoeveel applicaties die er nu gebruikt worden, worden echt opgezet (of werden) echt opgezet zoals het 'moet'.
Niet alle applicaties zitten vast aan een berg legacy code :) Er zijn genoeg applicaties die vers opgezet worden + waarbij een only oo omgeving aanwezig is. Toch wordt hier gekozen voor een RDBMS. Waarom? Waarom niet eens kijken naar een ODBMS?
(Ben nu ook het boek 'model driven design' aan het lezen,
Dat weet ik ;)
dus wie weet, maar, zoals ik net zei denk ik dat een relationeel model krachtig genoeg is voor de meeste huidige applicaties.
Hmm tja.. als ik ga modelleren zie ik toch al snel subclasses de kop op steken.
Ik denk dat er pas een 'shift' zal komen van rdbms naar odbms als er idd meer en meer mensen / organisaties echt het n-tier model gaan toepassen, en écht model-driven gaan beginnen denken. Maar dat is, IMHO, vooralsnog niet het geval.
Maar nu ga je uit van de situatie dat de vrijheid niet bestaat. Er zijn genoeg projecten waar denk ik genoeg vrijheid bestaat. Ok... de klant moet iets opgeslagen hebben... en wij werken met objecten.. meer voorwaarden zijn er niet. Is een ODBMS dan ineens zo`n gekke keus? Waarom wordt het niet gekozen?

  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 23:56

JaQ

Alarmnummer schreef op vrijdag 11 februari 2005 @ 00:28:
[...]
Hmm tja.. als ik ga modelleren zie ik toch al snel subclasses de kop op steken.


[...]

Maar nu ga je uit van de situatie dat de vrijheid niet bestaat. Er zijn genoeg projecten waar denk ik genoeg vrijheid bestaat. Ok... de klant moet iets opgeslagen hebben... en wij werken met objecten.. meer voorwaarden zijn er niet. Is een ODBMS dan ineens zo`n gekke keus? Waarom wordt het niet gekozen?
Hier redeneer je wel lekker uit je eigen perspectief. Ik ken vrij weinig situaties die ik met een relationeel model niet kan oplossen. Dat jij gewent bent om te werken uit een OO perspectief maakt dat natuurlijk niet de waarheid.

Anyway, ik denk dat je gewoon graag een ODBMS wilt gebruiken en enigzins gefrustreerd bent door de weerstand die je ontmoet. Dat kan ik best begrijpen, maar ik denk dat je gewoon nog wat geduld moet hebben. Zoals je misschien al vaker hebt ontdekt wordt niet altijd voor (technisch) de mooiste oplossing gekozen. Dat je hier toch voor blijft vechten: prima! maar pas wel op dat je geen ouwe zeur wordt ;) (dat bedoel ik dus omdat er dan niet meer naar je geluisterd wordt: daar heb je hem weer...)

IT = vooruitgang, maar soms ook niet. Er zijn echt geweldige patronen te ontdekken in de manier waarop de IT wereld werkt en als je goed oplet gaan we nu terug van 4GL naar 3GL. Is dat vooruitgang? (mijn persoonlijke mening staat hier los van, ik probeer alleen iets duidelijk te maken)

Egoist: A person of low taste, more interested in themselves than in me


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
DrFrankenstoner schreef op vrijdag 11 februari 2005 @ 00:15:
[...]
Je ziet zelfs al steeds meer discussie komen over het J2EE model (bloated). N-tier is in theorie leuk, maar niet altijd pragmatisch (zoals jij ook al aangaf).
Voor kleine applicaties kan ik me voorstellen dat een multilayered systeem overkill is. Maar zo gauw je met een groter systeem zit, moet je uitspraken kunnen doen over je systeem. Over een systeem waar alles in elkaar is verweven kun je geen uitspraken doen. Over een layered systeem wel.

vb:
-door een service layer komt niets ongecontroleerd
-de service layer is verantwoordelijk voor transacties, niemand anders
-business regels zijn terug te vinden in de domain layer, nergens anders
-als ik de db wil verwisselen, moet ik de dao aanpassen.

Layering is absoluut niet gratis. Ik loop me ook wel eens te ergeren aan al die extra lagen en herhalingen (dat is ook een van de redenen dat ik dit topic ben gestart. Het oo model en het database model zijn in principe hetzelfde maar toch moet ik beide weer op gaan zetten).. Kost tijd...
Zelf probeer ik altijd de theorie zo veel mogelijk toe te passen, maar het werkt gewoon niet altijd zo. Zeker niet als je te maken hebt met "weg-werp-applicaties".
Hmm tja.. als je hebt te maken met kleine webwerpapplicaties kan het misschien wel. Maar ik merk als ik een groter systeem heb dat ik steeds minder snel vooruit kom als de structuur niet aanwezig is.

  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 23:36

Delphi32

Heading for the gates of Eden

1Corrigeer me als ik het mis heb, ik heb al een tijdje geen ODBMS meer gezien (laatste was Jasmine, zo'n 5 jaar geleden). Maar waar ik tegenaan liep was het volgende.
Stel je maakt een order entry systeem: simpel klantjes met producten verbinden, lekker in objecten te gieten, keurig OO opgezet enzo. Na oplevering blijkt de klant toch nog meer info uit het systeem te willen halen: de gemiddelde omzetten per maand per verkoper, vergeleken met de omzetten van vorig jaar, in absolute cijfers en in percentages.
In SQL (een relationeel model) is dat redelijk goed te realiseren. Kwestie van de juiste indices etc en je aggregate functies (die je hierbij natuurlijk nodig gaat hebben) werken als een tierelier. Het leuke van een relationeel model is dat je zelfs relaties boven kunt toveren die vantevoren niet doordacht werden. Relaties niet in de zin van database-relaties, maar relaties tussen geaggregeerde cijfers die door het management interessant gevonden worden.
Bij een ODBMS wordt (was?) dat een stuk lastiger. Omdat je data niet opgeslagen werd zoals je dat zou verwachten in een RDBMS, kon je zelf geen queries maken (laat staan die door de gebruiker aan te laten passen of zelf laten bedenken). Je moet dus extra werk gaan verzetten om die data boven water te krijgen. En om nou te zeggen dat het daar sneller van werd... zelden zulke trage dingen gezien als ODBMSes die aggregate functions moeten verwerken.
Nogmaals, mijn informatie over dit item is oud; ik was destijds behoorlijk enthousiast en snap de bestaansreden van ODBMSes, maar juist op het punt van 'hoe krijg ik geaggregeerde informatie uit het systeem' ben ik toen redelijk afgeknapt. Als dat inmiddels anders is: ik hoor het graag, ik sta open voor nieuwe ontwikkelingen, maar voorlopig voldoet een RDBMS uitstekend.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Alarmnummer:
Volgens mij heb jij wel hele natte vingers.

En als je alleen gewent bent om een relationeel model te maken.. tja.. dan zal er ook nooit een object model uitkomen. Hoe vaak kom je niet een situatie tegen die een specialistie is van een iets generiek situatie, en waarbij extra informatie nodig is. De beste manier om dit op te lossen is subclassen. En dat kan niet eenvoudig in een relationeel model. Uiteraard zullen de doorgewinterde database ontwerpers hier wel hun vaste technieken voor ontwikkeld hebben. Maar mijn gok is dat het niets anders is dan een verkapte vorm van oo. Relationeel model = beperkt.. face it..
Ja ok, maar je slaat nu een hele andere weg in, namelijk de genericiteit van de database. Hoe abstract wil je het kunnen hebben en hoe sterk wil je dingen kunnen hergebruiken. Ik denk dat je in dat opzicht wel een punt hebt; het goed is in dat geval goed om voor een OO oplossing te kiezen en vervolgens je platform daarop aan te snijden. Maar ik geloof niet dat die genericiteit in zo enorm veel gevallen zo erg zinvol of nodig is. Begrijp me niet verkeerd, ik ben niet anti-OO, ik denk alleen niet dat het de heilige graal is als het gaat om de opslag en de benadering van je gegevens.
Hmm tja.. als ik objecten maak (en ik schijn ze zo nu en dan te maken) dan wil bij mij nog wel eens het keyword extends verschijnen.. iets met subclassing enzo.. Als dit ding de db in moet tja... dan heb ik een 'probleem'. Met een echte OR mapper zoals Hibernate wordt gelukkig het meeste voor je gedaan, dus het is geen onoverkomelijke situatie. Maar het is in sommige gevallen wel een onnodige situatie.
Ja, maar hoe vaak, dat is de vraag? Hoe vaak heb je te maken met die inheritance die je in de database wilt terug laten komen? En hoe vaak is het onoverkomelijk zonder O/R-mapper?
Jij dacht dat er in een oo database geen relaties zaten??
Nee, natuurlijk niet, dat is flauwekul. Ik had gehoopt dat ik dat niet toe hoefde te lichten, maar het gaat me natuurlijk om de verhouding tussen die twee kampen: "klassieke" relaties en "inheritance"-relaties
Ik niet snappen.
Ik bedoel dat de relationele modellen zoals we die kennen ontstaan zijn uit de behoefte vanuit de realiteit. Dat kun je al heel eenvoudig illustreren door zo'n standaard-modelletje uit een database-boek te plukken: Studenten zitten in een klas, gaan naar meerdere lessen, krijgen les van meerdere leraren, leraren geven meerdere vakken aan meerdere klassen, geven les op meerdere scholen en ga zo maar door. Allemaal klassieke relaties. Als je dan een OO model toe wilt gaan passen, tuurlijk, dan kun je dingen gaan beschrijven als een interface Leraar die bepaalde dingen moet kunnen, en dat een WiskundeLeraar die interface implementeert.
offtopic:
Overigens heb je dan in OO weer een redelijk probleem als iemand naast WiskundeLeraar ook NatuurkundeLeraar is, maar goed... Daar hebben we dan multiple inheritance voor he? ;) Een leuk soort problemen dat in OO toch voor behoorlijke rigoreuze remodelling kan gaan zorgen terwijl je daar in een RM helemaal geen last van hebt.
Slechte argumentatie. Als we allemaal zo dachten zaten we nog met stokken beesten dood te steken en met stenen vuur te maken. It = vooruitgang. Er is geen bedrijfstak die zo onderhevig is aan veranderingen dan de it. Daarom moet je altijd blijven afvragen of er betere alternatieven zijn en hoe waardevol oude technieken nog zijn.
Ik geef het niet als argument om niet naar nieuwe dingen te kijken, ik geef het als argument om naar bestaande dingen te blijven kijken.
En ik denk dat in sommige gevallen een odbms een veel beter alternatief is dan een rdbms. Daarom mijn vraag.
Dat begrijp ik :)
Hmm tja.. hier koop ik niets voor.
Nou, ik denk dat je niet begrijpt wat ik er mee bedoel te zeggen. Ik bedoel: jij bent (als ik het goed zie) bezig met redelijk generieke toestanden te bouwen. Als je dat wilt is OO een goede uitkomst omdat het vrij eenvoudig is hele abstracte modellen in OO uit te voeren, en in een gewoon relationeel model is dat al een stuk lastiger. Maar het gros van de IT heeft nou eenmaal niet zo sterk te maken met die genericiteit. Of in ieder geval niet de behoefte daar aan, of het geld niet voor over, ziet er geen brood in, whatever.
Die zijn er wel. ik geloof dat Oracle wel van dit soort functionaliteit heeft (hear say).
Ik bedoel eigenlijk: zijn ODBMS'en wel zo fundamenteel anders dan RDBMS'en in de manier van opslaan? Maar da's pure curiosity, vandaar de offtopic :)


whoami:
Hmm, nee.
Het gaat 'm niet om 'inheritance' an sich, het gaat 'm over 'encapsulatie' en polymorphisme.
Waarbij ik met encapsulatie niet enkel encapsulatie van 'data' bedoel, maar ook 'encapsulatie' van gedrag.
Ik denk dat het fout is om te stellen dat het grote voordeel van OO inheritance is.
Het grote voordeel van OO is, imo, dat je een 'abstract' model kunt ontwerpen, waarbij je het 'gedrag' van een object kunt wijzigen, zonder dat je daarom z'n interface moet wijzigen.
Om dat te realiseren, komt natuurlijk wel een (doordacht) gebruik van inheritance kijken.
En op die manier heb ik al veel gebruik gemaakt van inheritance.
Ja, goed, we zeggen eigenlijk wel hetzelfde denk ik. De meerwaarde van inheritance is uiteindelijk polymorfisme en (in mindere mate) encapsulatie. In short: abstractie, iets wat je niet zo makkelijk implementeert in een relationeel model.




Ik vind het overigens wel frappant om te zien dat de "big idea" van een odbms wel lijkt te zijn dat je functionaliteit veel sterker koppelt aan de data. Da's natuurlijk ook een beetje het idee van een OO-model :P maar is dat niet uiteindelijk speerpunt van deze discussie? Dat dat nou juist de grote winst van het gebruik van een object-georienteerde database is? Dat je niet zelf meer de data hoeft te reconstrueren m.b.v. SQL, maar dat de database dat allemaal voor je uitzoekt?

Dan is het namelijk al geen model-discussie meer, maar een implementatie-discussie.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Misschien een heel vreemd idee maar waarom probeer je het niet gewoon op een project uit Alarmnummer? Persoonlijk denk ik dat het meestal een kwestie is van angst voor het onbekende bij zowel ontwikkelaars als opdrachtgevers.Ook ontbreekt vaak de kennis van wat precies de voor en nadelen van een oplossing zijn, simpelweg door het gebrek aan ervaring.
Als de ontwikkelaar weet dat het gaat werken in een RDBMS, de klant er vertrouwen in heeft en bereid is ervoor te betalen. Waarom dan iets anders doen?

Eerlijk gezegd hoor ik al jaren over de theoretische voordelen van een ODBMS maar heb ik zelf nog nooit ook maar overwogen om het op een project te gebruiken. Er is weinig aandacht voor in de literatuur, de bedrijven zijn onbekend en de potentiele problemen lastig in te schatten. Dus dan maar een RDBMS.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
drm schreef op vrijdag 11 februari 2005 @ 01:35:
[...]
Ja ok, maar je slaat nu een hele andere weg in, namelijk de genericiteit van de database. Hoe abstract wil je het kunnen hebben en hoe sterk wil je dingen kunnen hergebruiken. Ik denk dat je in dat opzicht wel een punt hebt; het goed is in dat geval goed om voor een OO oplossing te kiezen en vervolgens je platform daarop aan te snijden. Maar ik geloof niet dat die genericiteit in zo enorm veel gevallen zo erg zinvol of nodig is.
Misschien ben ik gewoon verwend ;)
Ja, maar hoe vaak, dat is de vraag? Hoe vaak heb je te maken met die inheritance die je in de database wilt terug laten komen? En hoe vaak is het onoverkomelijk zonder O/R-mapper?
Met hibernate is het peanuts. Mijn 'probleem' ligt hem in het feit dat vanaf het moment dat ik een entiteit (bv Persoon) heb ontdekt bij het technisch ontwerp, totdat ik het in de database heb zitten, het woord Persoon tig keer in mijn sourcecode/configbestanden/database heb moeten intypen. En dan gaat er bij mij een alarmbelletje af..
1) ik ben me aan het herhalen en dat kost tijd
2) ik ben me aan het herhalen, dus er zweeft veel redundant materiaal rond. In de db als in de or mapper als in het domein model zullen bv checks zitten. Niet echt handig als je iets gaat wijzigen.
[ot]Overigens heb je dan in OO weer een redelijk probleem als iemand naast WiskundeLeraar ook NatuurkundeLeraar is, maar goed... Daar hebben we dan multiple inheritance voor he? ;)
of interfaces.. of een ander oo model :)
Een leuk soort problemen dat in OO toch voor behoorlijke rigoreuze remodelling kan gaan zorgen terwijl je daar in een RM helemaal geen last van hebt.
Tja.. begrijp me niet verkeerd.. oo is niet de heilige graal.. Ik zie relationeel model meer als een graal met sinas. En een oo model meer als een graal met cola. En ik vind cola lekkerder dan sinas (en het is ook handiger.. want in sinas kan je geen schroeven schoonmaken)
Ik geef het niet als argument om niet naar nieuwe dingen te kijken, ik geef het als argument om naar bestaande dingen te blijven kijken.
Ik vind het erg belangrijk dat je bestaande technieken steeds toetst op hun toegevoegde waarde. Dat je goed weet waar de sterke en waar de zwakke punten liggen. Het is niet erg als een techniek een zwak punt heeft, maar dan moet je kunnen kijken naar alternatieven. En dat is wat ik graag doe. Als ik een probleem zie leg ik de alternatieven naast elkaar en bij opslag heb ik maar 1 alternatief die niet perfect is.
Maar het gros van de IT heeft nou eenmaal niet zo sterk te maken met die genericiteit. Of in ieder geval niet de behoefte daar aan, of het geld niet voor over, ziet er geen brood in, whatever.
Maar jij kan mij niet wijsmaken dat er dan uberhaubt geen behoefte zou bestaan voor 'object opslag'. Want daar gaat hij mij dus om. Ik heb een object.. ik wil opslag. ik wil een medium dat acid eigenschappen ondersteund, en dat voldoende snel is.
Ik vind het overigens wel frappant om te zien dat de "big idea" van een odbms wel lijkt te zijn dat je functionaliteit veel sterker koppelt aan de data. Da's natuurlijk ook een beetje het idee van een OO-model :P maar is dat niet uiteindelijk speerpunt van deze discussie? Dat dat nou juist de grote winst van het gebruik van een object-georienteerde database is? Dat je niet zelf meer de data hoeft te reconstrueren m.b.v. SQL, maar dat de database dat allemaal voor je uitzoekt?
Het gaat me er vooral om dat je een oo model niet naar een ander model hoeft om te bakken.

En waar ik eigelijk helemaal wel in geinteresseerd ben is een pure java ODBMS (aangezien ik voornamelijk java programmeer) waar ik niet alleen java objecten in op kan slaan. Maar ook java query, en berekening objecten heen kan schieten. Eventueel deze object store direct gekoppeld aan mijn applicatie in dezelfde vm. Ik durf te wedden dat zelfs de grootste jongens dit qua snelheid onmogelijk bij kunnen houden. OR Mapping is niet aanwezig.. + alle overhead om de query versturen, ontvangen, ... antwoord terug versturen, antwoord ontvangen allemaal kunt overslaan. Wij hebben vaak behoefte aan 1 object store voor alleen die applicatie en uiteraard moet die wel concurrent binnen 1 applicatie aangesproken kunnen worden, maar het hoeft niet altijd door meerdere applicaties te gelijk. Het is vaak een database voor een webapplicatie waarbij de webapp de enigste gebruiker is.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Verwijderd schreef op vrijdag 11 februari 2005 @ 02:50:
Misschien een heel vreemd idee maar waarom probeer je het niet gewoon op een project uit Alarmnummer? Persoonlijk denk ik dat het meestal een kwestie is van angst voor het onbekende bij zowel ontwikkelaars als opdrachtgevers.Ook ontbreekt vaak de kennis van wat precies de voor en nadelen van een oplossing zijn, simpelweg door het gebrek aan ervaring.
Als de ontwikkelaar weet dat het gaat werken in een RDBMS, de klant er vertrouwen in heeft en bereid is ervoor te betalen. Waarom dan iets anders doen?
Hmm tja.. Ik heb een beetje zitten bladeren en aangezien ik voornamelijk Java programmeer wil ik ook het liefste een java database die in dezelfde vm kan draaien als de applicatie. Er zijn wel een aantal, bv dbo4j.. maar die is zeker niet gratis.. ($1500) en dat vind ik een hoop geld voor een proef. Ik kan wel een 'slecht' opensource alternatief kiezen, maar voor hetzelfde geld worden ORDBMS`en dan afgerekent op die slechte implementatie.

Hmmm... aangezien wij onze applicaties volledig opslag medium onafhankelijk maken door de dao interface op te stellen, zou ik in een bestaand project bij wijze van proef wel eens andere dao implementaties kunnen leveren. En aangezien wij Spring gebruiken als IOC container is het eigelijk helemaal peanuts...Hmm.. zo weinig tijd.. zoveel te doen.
Eerlijk gezegd hoor ik al jaren over de theoretische voordelen van een ODBMS maar heb ik zelf nog nooit ook maar overwogen om het op een project te gebruiken. Er is weinig aandacht voor in de literatuur, de bedrijven zijn onbekend en de potentiele problemen lastig in te schatten. Dus dan maar een RDBMS.
Hmm tja... maar ik vind die alarmbel die dan de hele tijd in mijn achterhoofd afgaat zo irritant.

[ Voor 4% gewijzigd door Alarmnummer op 11-02-2005 08:34 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 26-12 16:19
Alarmnummer schreef op vrijdag 11 februari 2005 @ 00:28:
[...]
meer voorwaarden zijn er niet. Is een ODBMS dan ineens zo`n gekke keus? Waarom wordt het niet gekozen?
Een gekke keus is het niet.
Waarom het niet gekozen wordt: ik denk vooral kostprijs (hier hebben ze ooit eens naar caché gekeken, maar de kostprijs was nogal hoog) + weinig expertise (al dan niet in-house) op dat vlak (odbms'en) + waarschijnlijk hoge opleidingskost + leercurve + initiele vertraging in de ontwikkeling (aangezien men nog ODBMS-stuff moet leren) (ok, die 'vertraging' kan je wel weer terugwinnen later in de ontwikkeling).

Waarom wordt het niet gekozen: ik denk dat dit eerder een vraag is voor het management.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 26-12 16:19
drm schreef op vrijdag 11 februari 2005 @ 01:35:
[...]
Begrijp me niet verkeerd, ik ben niet anti-OO, ik denk alleen niet dat het de heilige graal is als het gaat om de opslag en de benadering van je gegevens.
Eigenlijk denk ik dat ook.
OO is prachtig, maar de meerwaarde van OO komt er imho pas bij kijken als je 'gedrag/functionaliteit' en data combineert.
Een DBMS is enkel verantwoordelijk om het 'vasthouden' van data, en dat het een ingewikkeld proces is om de data die in een relationele vorm gegoten is, in een object-model in te laden en vice versa, is een waarheid als een koe.
Echter, denk ik dat het opslaan van gegevens in een relationele vorm nog altijd goed is;
Als je je gegevens gaat gaan opslaan in een OO database, dan ga je IMHO je gegevens gaan opslaan in de vorm van het 'domein-model'. Dat is allemaal wel mooi voor de applicatie die jij bouwt, maar wat als je een andere applicatie hebt, die ook enkele gegevens nodig heeft uit die DB, maar in een andere context ? In een context of model dat niet echt gelijk loopt met jouw domein model ?

[ Voor 60% gewijzigd door whoami op 11-02-2005 08:48 ]

https://fgheysels.github.io/


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
whoami schreef op vrijdag 11 februari 2005 @ 08:48:
[...]

Eigenlijk denk ik dat ook.
Echter, denk ik dat het opslaan van gegevens in een relationele vorm nog altijd goed is;
Als je je gegevens gaat gaan opslaan in een OO database, dan ga je IMHO je gegevens gaan opslaan in de vorm van het 'domein-model'. Dat is allemaal wel mooi voor de applicatie die jij bouwt, maar wat als je een andere applicatie hebt, die ook enkele gegevens nodig heeft uit die DB, maar in een andere context ? In een context of model dat niet echt gelijk loopt met jouw domein model ?
De vraag is of de ormap prijs betaald mag worden als je weet dat er nu geen behoefte is om de data vanuit een andere context aan te spreken. Als jij een ontwerp maak dan hou je alleen rekening met de eisen die nu gelden (en waarvan je nagenoeg zeker weet dat ze gaan gelden). Niet meer en niet minder. Dus als je weet dat mijn voorwaarde geldt (geen andere context), waarom toch het ontwerp hierop afstemmen? Het komt er op neer dat een klant iets krijgt waar hij niet om heeft gevraagt en waar hij dus wel voor moet betalen. Als de behoefte later ontstaat om het wel vanuit een andere context aan te spreken, zou je alles altijd nog in een RDBMS kunnen pompen nadat je een goeie or mapping hebt gemaakt. Maar dit geld voor alles.. Als de klant eerst java java remoting communicatie wil zou ik bv rmi adviseren. Als de klant ineens het algemeen toegankelijk wil kan het altijd nog omgezet worden naar bv een webservice.

[ Voor 14% gewijzigd door Alarmnummer op 11-02-2005 09:03 ]


  • joepP
  • Registratie: Juni 1999
  • Niet online
Alarmnummer schreef op donderdag 10 februari 2005 @ 20:25:
[...]

Volgens mij begrijp je dit topic niet. Het gaat mij niet om de snelste oplossing maar om een eenvoudige oplossing. Ik ben extra tijd kwijt door or mapping en die tijd was ik niet kwijt als ik een object direct in een database kon schieten. Tijd = geld.. Als ik weet dat er niet enorm veel request worden uitgevoerd (bv voor een interne applicatie), waarom in GODSNAAM dan altijd maar kiezen voor een misschien snellere (qua performance) maar duurdere qua development tijd? Is dit zo moeilijk om te begrijpen? Is het zo lastig om in te zien dat je in veel gevallen alleen maar objecten ergens wilt storen?

[...]

Ja en? Als je dat niet nodig bent.. waarom dan ervoor betalen?
Anders reageer je even normaal? Je lijkt wel gefrustreerd.

Je legt mij woorden in de mond die ik nooit gebruikt hebt. In ontwikkeling komt het altijd neer op the right tools for the right job. Ik heb vooral ervaring met database-intensieve applicaties, grote tabellen en rapportages. Vandaar dat ik de focus leg op performance. Als jij alleen objecten hoeft op te slaan heb je dat niet nodig, en dan zit je met een standaard RDBMS inderdaad wel eens te vloeken.

[persoonlijke modus]
Vergeet niet dat ontwikkeling van software soms frustrerend is. Je hebt niet de juiste tools, er mist documentatie, je moet allerhande technische details uitzoeken vanwege een nare bug, etc etc. Veel tijd gaat zitten in onvoorziene zaken die je soms niet eens wil weten. En als je onder tijdsdruk moet werken is dat vervelend. Als jij daar zoveel problemen mee hebt, wat voor mij wel blijkt uit je laatst X gefrustreerde topics, waarom ga je dan niet ergens anders werken?
[/persoonlijke modus]

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 10-12 14:13
Alarmnummer schreef op vrijdag 11 februari 2005 @ 00:14:
[MSalters schreef op vrijdag 11 februari 2005 @ 00:03:
Waarom uberhaupt een DBMS?]
1 acroniem:
ACID
Ja, duh. Als je A, C of I nodig hebt is een (R)DBMS de moeite waard. Mijn punt was dat er genoeg misbruik is van DBs in een context waar alleen Durability boeit, en dan is een flat file ook genoeg.
Read Only data heeft sowieso geen A of I problemen, en in de praktijk ook geen C.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
joepP schreef op vrijdag 11 februari 2005 @ 09:46:
[...]
Anders reageer je even normaal? Je lijkt wel gefrustreerd.
Dat ben ik doordat ik vanaf het begin af aan duidelijk heb aangegeven binnen welke context ik de ODBMS in wil zetten en iedereen maar blijft doorhameren over een RDBMS. Een RDBMS heeft zeker zijn waarde, maar binnen de context die ik heb gegeven kunnen er betere alternatieven zijn. En daar stel ik dus mijn vragen over... en dan is het irritant als mensen deze context niet in de gaten houden en hun betoog daar niet op afstemmen.
Vandaar dat ik de focus leg op performance. Als jij alleen objecten hoeft op te slaan heb je dat niet nodig, en dan zit je met een standaard RDBMS inderdaad wel eens te vloeken.
Vloeken valt wel mee. Maar ik werk zo nu en dan mee aan webapplicaties en ik stoor me aan de ongelovelijke hoeveelheid herhaling van ideeen en concepten. Gewoonlijk ben ik met een ander soort software bezig en daar tref ik die herhaling niet zo in aan. Maar bij bedrijfs applicaties heb je je concepten in het technisch ontwerp, uml model, java code, or map config bestanden, en de database. Oja.. en als je het slecht opzet heb je het ook nog een rondhangen in je weblayer.

Dat maakt een relatief simpel iets tot een heel log geheel..
Vergeet niet dat ontwikkeling van software soms frustrerend is. Je hebt niet de juiste tools, er mist documentatie, je moet allerhande technische details uitzoeken vanwege een nare bug, etc etc. Veel tijd gaat zitten in onvoorziene zaken die je soms niet eens wil weten. En als je onder tijdsdruk moet werken is dat vervelend. Als jij daar zoveel problemen mee hebt, wat voor mij wel blijkt uit je laatst X gefrustreerde topics, waarom ga je dan niet ergens anders werken?
[/persoonlijke modus]
De tijdsdruk valt wel mee. Ik stoor me voornamelijk aan het feit dat veel mensen op /14 niet inhoudelijk naar de berichten kijken maar algemeen commentaar geven Ik heb duidelijk aangegeven binnen welke context ik wil werken en ik probeer zo snel mogelijk van replies af te komen waar ik niets aan heb. Aangezien 9 van de 10 discussies toch vaak offtopic gaan. Ik vind het geen probleem zo gauw ik antwoord heb op mijn vraag. Op het moment dat ik geen antwoord heb op mijn vraag en mijn topic dreigt ten onder te gaan aan (voor mij) oninteressante replies, dan grijp ik in. Je zult ook zien dat mijn 'botte' opmerkingen zijn tegen de 'offtopic' replies.

[ Voor 5% gewijzigd door Alarmnummer op 11-02-2005 10:17 ]


Verwijderd

Alarmnummer schreef op vrijdag 11 februari 2005 @ 08:58:
[...]

De vraag is of de ormap prijs betaald mag worden als je weet dat er nu geen behoefte is om de data vanuit een andere context aan te spreken. Als jij een ontwerp maak dan hou je alleen rekening met de eisen die nu gelden (en waarvan je nagenoeg zeker weet dat ze gaan gelden). Niet meer en niet minder. Dus als je weet dat mijn voorwaarde geldt (geen andere context), waarom toch het ontwerp hierop afstemmen?
Technisch gezien is er inderdaad geen reden. Maar paktisch gezien zijn er een hoop te verzinnen. De belangrijkste is dat je klanten het verwachten. Gebruik je een RDBMS als SQL Server of Oracle geen probleem. Kom je met Postgresql al moet je al wat gaan uitleggen. Kom je met een ODBMS aan waar je zelf geen aantoonbaar goede ervaringen mee hebt, wordt het door klanten waarschijnlijk afgewezen. En je wilt in eerste instatie toch de opdracht uitvoeren.
Het komt er op neer dat een klant iets krijgt waar hij niet om heeft gevraagt en waar hij dus wel voor moet betalen. Als de behoefte later ontstaat om het wel vanuit een andere context aan te spreken, zou je alles altijd nog in een RDBMS kunnen pompen nadat je een goeie or mapping hebt gemaakt. Maar dit geld voor alles.. Als de klant eerst java java remoting communicatie wil zou ik bv rmi adviseren. Als de klant ineens het algemeen toegankelijk wil kan het altijd nog omgezet worden naar bv een webservice.
Het komt erop neer dat men aanbiedt waarmee men verwacht de opdracht binnen te kunnen halen, of dat technisch gezien optimaal is maakt dan weinig uit. Het is goed genoeg en de klant krijgt vertrouwen dat het gaat werken.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Verwijderd schreef op vrijdag 11 februari 2005 @ 10:30:
[...]
Technisch gezien is er inderdaad geen reden. Maar paktisch gezien zijn er een hoop te verzinnen. De belangrijkste is dat je klanten het verwachten. Gebruik je een RDBMS als SQL Server of Oracle geen probleem.
Kijk.. als er een bestaande db is dan komt het daarin, no problem. Maar op het moment dat je de keuze hebt en het de klant totaal niet interesseerd in wat voor db het terecht komt (db? wat is dat?) dan zou je wel eens kunnen kijken naar een alternatief.
Het komt erop neer dat men aanbiedt waarmee men verwacht de opdracht binnen te kunnen halen, of dat technisch gezien optimaal is maakt dan weinig uit. Het is goed genoeg en de klant krijgt vertrouwen dat het gaat werken.
Afhankelijk van het soort klant (niet alle klanten hebben kennis van de it) kunnen ook andere factoren belangrijk zijn, bv de prijs. Mijn gok is dat storage in een odbms qua ontwikkeltijd goedkoper is dan de storage in een rdbms (als je een oo model hebt dat gepersist moet worden).

En in sommige gevallen moet je data onder ACID eigenschappen persisten omdat het onderdeel is van een of ander proces. De inhoud van deze data is alleen interessant binnen ons java systeem en er zal nooit de behoefte bestaan om er extern bij te kunnen komen. Dit is ook weer zo`n situatie waar je zou kunnen kijken naar een alternatief.

[ Voor 15% gewijzigd door Alarmnummer op 11-02-2005 10:57 ]


Verwijderd

Alarmnummer schreef op vrijdag 11 februari 2005 @ 10:47:
Afhankelijk van het soort klant (niet alle klanten hebben kennis van de it) kunnen ook andere factoren belangrijk zijn, bv de prijs. Mijn gok is dat storage in een odbms qua ontwikkeltijd goedkoper is dan de storage in een rdbms (als je een oo model hebt dat gepersist moet worden).
Ik vind niet dat je moet experimenteren bij klanten die niet weten dat je aan het experimenteren bent. Je moet dan ook in zo'n geval uitleggen dat het normaal gesproken in een RDBMS kan maar een ODBMS misschien goedkoper kan uitpakken. Als je aangeeft dat het nieuwe technologie is waar je weinig kaas van hebt gegeven zullen zeker de non-it bedrijven vaak toch voor een RDBMS kiezen. Als je de klant kan overtuigen, prima. Maar het is natuurlijk niet netjes om een klant die de risico's niet kan inschatten te gebruiken om de zin van een ODBMS te testen.
En in sommige gevallen moet je data onder ACID eigenschappen persisten omdat het onderdeel is van een of ander proces. De inhoud van deze data is alleen interessant binnen ons java systeem en er zal nooit de behoefte bestaan om er extern bij te kunnen komen. Dit is ook weer zo`n situatie waar je zou kunnen kijken naar een alternatief.
Mij hoef je niet te overtuigen, als het zo simpel is als jij zegt, doe het dan. Ik denk echter dat de meeste klanten gewoon bewezen techniek willen en niet als proefkonijn gebruikt willen worden. Ook denk ik dat ze voor die zekerheid best iets extra's willen betalen.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Verwijderd schreef op vrijdag 11 februari 2005 @ 11:09:
[...]

Ik vind niet dat je moet experimenteren bij klanten die niet weten dat je aan het experimenteren bent.
Dat ben ik met je eens.

Maar als je de garantie heb dat het met een ODBMS ook goed werkt (zelf een paar proef projecten er bv mee draaien) en je neemt een serieus product (niet een of ander opensource baksel) dan vind ik het een serieus alternatief.

Verwijderd

Alarmnummer schreef op vrijdag 11 februari 2005 @ 11:14:
[...]

Dat ben ik met je eens.

Maar als je de garantie heb dat het met een ODBMS ook goed werkt (zelf een paar proef projecten er bv mee draaien) en je neemt een serieus product (niet een of ander opensource baksel) dan vind ik het een serieus alternatief.
Dat is dus net het belangrijkste probleem. Er zijn weinig projecten bekend waarbij een ODBMS gebruikt is en van die projecten waren er zeker in het begin veel met grote problemen. Mensen hebben een redelijk en stabiel gebleken alternatief en niet al te veel tijd en geld om maar aan te experimenteren. Dus blijft men bij het RDBMS, ook al kan een ODBMS zinvol zijn.

Zo blijven er helaas wel meer zinvolle technieken in nichemarkten hangen bij gebrek aan bewezen producten en kennis bij de ontwikkelaars. Want waarom zou je een proefproject doen als je een alternatief hebt waarvan je zeker weet dat de klant, en die is koning, er redelijk tevreden mee is en niet voor verrassingen komt te staan?
Dat wil niet zeggen dat mensen geen ODBMS moeten gebruiken. Integendeel. Maar je moet je wel afvragen wat voor jou organisatie de meerwaarde is om hiermee voorop te lopen. Laat anderen eerst maar de ODBMS systemen ontwikkelen en aantonen dat het in bepaalde situaties echt een meerwaarde heeft. Als blijkt dat het zin heeft kun je alsnog ermee beginnen. Maar als (een van de) eerste ergens mee beginnen is niet zo slim. Nadeel hiervan is natuurlijk dat als iedereen afwacht, je nooit een stap verder komt :)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
We zetten onze applicaties wel zo op dat we neit zijn gebonden aan het persitance mechanisme..dus als een ODBMS toch problemen op gaat leveren kunnen we redelijk eenvoudig naar een RDBMS overstappen. Het is dus geen architectuur kwestie.. en daarom denk ik wel een keer het proberen waard. Zeker als je een heel duidelijk afgebakend model hebt dat gepersist moet worden.

Verwijderd

hier een lijstje met ODBMS http://www.cetus-links.org/oo_db_systems_1.html en http://www.ozone-db.org/frames/home/what.html ziet er ook niet slecht uit

[ Voor 35% gewijzigd door Verwijderd op 11-02-2005 14:11 ]


  • D4Skunk
  • Registratie: Juni 2003
  • Laatst online: 20-10 08:59

D4Skunk

Kind of Blue

Vooruit, hier gaan we :

Kijk eens naar de evolutie van de moeder van alle OO-talen : C++
Dit is oorspronkelijk ontstaan als een parser voor - je raad het nooit - C-source.
M.a.w. C++ werd oorspronkelijk omgezet naar C.
Volgens mij is dit bij een ODBMS net hetzelfde; het is als het ware een schil die over de relationele database ligt.

Wat op dit moment voor een programmeur de O/R mapper is, zou dus eigenlijk geïntegreerd moeten zijn in de database/ontwikkelomgeving.

Wat jammer is, is dat er op dit moment geen deftige (lees : grote namen) RDBMS-systemen bestaan die object-georiënteerde aanpak volledig ondersteunen. Er zijn wel een paar goede pogingen (oracle etc), maar uiteindelijk kan je deze bezwaarlijk een odbms noemen.

Er bestaan trouwens wel degelijk enkele ODBMS (van kleinere spelers) die (in beperkte mate) in productieomgevingen gebruikt worden, denk maar bv. aan Matisse voor .NET.

Een idioot voorstel : schrijf zelf zo'n laag die tussen je database en je app draait, en in je ide geïntegreed wordt, en je hebt automatisch een ODBMS.

Merk op dat microsoft in VS. net 2005 op de goede weg is; je databasedefinities importeer je in een XSD, die dan op zijn beurt automatisch de classes genereert (met intellisens-ondersteuning etc)
Hoe dit in java zou kunnen werken ? Geen idee, ik ben geen java programmeur.

Het grootste probleem bij het gebruiken van een ODBMS is IMHO dat je DB-ontwikkeling geïntegreerd moet zitten in je IDE. Vanaf het moment dat dit deftig werkt (VS 2005 gaat de goede richting uit) zijn we al een hele stap verder, en dan zal alles volgens mij wel automatisch naar een odbms evolueren.

Mijn .02 €

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 26-12 18:22

alienfruit

the alien you never expected

De reden waarom ik geen ODBMS gebruik, zit hem vooral in de slecht ervaring die ik er mee heb, zou zijn er een apar Java ODBMS beschikbaar, die inderdaad verdomd snel zijn.Maar op het moment dat er iets verkeerd gaat, bijvoorbeeld een fout tijdens het wegschrijven was het vaak dat heel je model na de klote was (oftewel alles corrupt, pleite foetsie). Niet echt handig. Daarom gebruiken we nu gewoon weer een RDBMS.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
D4Skunk schreef op vrijdag 11 februari 2005 @ 16:09:
Vooruit, hier gaan we :

Kijk eens naar de evolutie van de moeder van alle OO-talen : C++
Dit is oorspronkelijk ontstaan als een parser voor - je raad het nooit - C-source.
M.a.w. C++ werd oorspronkelijk omgezet naar C.
Volgens mij is dit bij een ODBMS net hetzelfde; het is als het ware een schil die over de relationele database ligt.
Dat is niet noodzakelijk. Er zijn ook echte ODBMS`en die op een volledig andere manier werken dan RDBMS`en.
Een idioot voorstel : schrijf zelf zo'n laag die tussen je database en je app draait, en in je ide geïntegreed wordt, en je hebt automatisch een ODBMS.
Die zijn er wel.. Kodo JDO bv..
Het grootste probleem bij het gebruiken van een ODBMS is IMHO dat je DB-ontwikkeling geïntegreerd moet zitten in je IDE.
Hmm.. in ieder geval meer relatie tussen mijn source, mijn database model en mijn uml diagrammen.. oja.. en mijn mapping files. Dit hoeft imho niet noodzakelijkerwijs in een IDE.
Vanaf het moment dat dit deftig werkt (VS 2005 gaat de goede richting uit) zijn we al een hele stap verder, en dan zal alles volgens mij wel automatisch naar een odbms evolueren.
Ik betwijfel over .NET daar nou zo`n grote invloed op heeft. En ik betwijfel ook of .NET uberhaubt die stap gaat ondernemen.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
alienfruit schreef op vrijdag 11 februari 2005 @ 16:23:
De reden waarom ik geen ODBMS gebruik, zit hem vooral in de slecht ervaring die ik er mee heb, zou zijn er een apar Java ODBMS beschikbaar, die inderdaad verdomd snel zijn.Maar op het moment dat er iets verkeerd gaat, bijvoorbeeld een fout tijdens het wegschrijven was het vaak dat heel je model na de klote was (oftewel alles corrupt, pleite foetsie). Niet echt handig. Daarom gebruiken we nu gewoon weer een RDBMS.
Hmm tja... ik kan me voorstellen dat je een wrange smaakt eraan hebt overgehouden. Maar zo nu en dan moet je een nieuw stap durven te nemen als je de indruk hebt dat de oude methode onnodig tijd kost. Als je niet dat gevoel hebt, dan moet je vooral blijven werken op de stijl zoals je bent gewent. Maar ik heb de indruk dat ik bij het realiseren van een bedrijfs applicatie ongelovelijk veel herhalend werk blijf doen.. en ook onnodig werk.

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 26-12 18:22

alienfruit

the alien you never expected

Bij nieuwe projecten kijken we uiteraard ook naar ODBMS, zelfs XML Databases kunnen interessant zijn (zoals x-hive e.d.),

  • whoami
  • Registratie: December 2000
  • Laatst online: 26-12 16:19
D4Skunk schreef op vrijdag 11 februari 2005 @ 16:09:
Vooruit, hier gaan we :

Kijk eens naar de evolutie van de moeder van alle OO-talen : C++
Was dat niet smalltalk ? :P
Volgens mij is dit bij een ODBMS net hetzelfde; het is als het ware een schil die over de relationele database ligt.
Een echte ODBMS is -zoals Alarmnummer zegt- geen schil.
Merk op dat microsoft in VS. net 2005 op de goede weg is; je databasedefinities importeer je in een XSD, die dan op zijn beurt automatisch de classes genereert (met intellisens-ondersteuning etc)
Heb je het hier niet over 'typed datasets' die ook al van in het begin in .NET zaten ? :X
Dat kan je nl. niet vergelijken met 'echte' objecten. DataSets sucken hard, en iemand die een applicatie in elkaar sleurt mbhv (typed) datasets, kan niet zeggen dat hij 'OO aan het programmeren is'.
Door VS.NET gegenereerde code vind ik trouwens zowiezo ruk, want als je iets wijzigt wordt het spul opnieuw gegenereerd, en ben je evt custom aanpassingen kwijt.
Al zal dit -in .NET 2.0 mbhv partial classes- wel kunnen opgelost worden.
Het grootste probleem bij het gebruiken van een ODBMS is IMHO dat je DB-ontwikkeling geïntegreerd moet zitten in je IDE.
Waarom ?

[ Voor 12% gewijzigd door whoami op 11-02-2005 20:05 ]

https://fgheysels.github.io/


  • Sammy
  • Registratie: Maart 2000
  • Laatst online: 21-12 17:09
Geen ODBMS, maar wel een oplossing voor persistent object storage: Object Prevalence

Persoonlijk geen ervaring mee (heb er een redelijk omvangrijk paper over geschreven, dat wel :-) Het principe is niet universeel toepasbaar, maar zeker innovatief in sommige opzichten. Het komt er in het kort op neer dat je Pojo's redelijk transparant persistent kunt maken.

Kijk overigens uit voor de dev's van dit project, het zijn fanatici...

  • EfBe
  • Registratie: Januari 2000
  • Niet online
ODBMS-en hebben een nadeel: alle data heeft maar 1 context: het object. Een RDBMS heeft de power om ieder attribute in een nieuwe context (set) te plaatsen, waardoor je de mogelijkheid krijgt om nieuwe semantische waarde aan een set attributes te geven door ze een nieuwe context te geven.

Onderschat dit niet, dit is DE reden waarom ODBMS-en niet werken. Het lijkt leuk, een bak met objects en dat je daar heel snel objects in en uit kunt halen, maar dan... een simpele groupby query op de set orders van een set customers... forget it. Dat KAN dan niet, want alle data zit in objects. Je zult dat zelf moeten doen.

En denk nou niet... "oh da's makkelijk", want dat is het niet. EN het is onnozel ook, want RDBMS-en hebben dat nl. allang ingebakken.

De enige reden waarom ODBMS-en nog bestaan is de tunnelblik bij veel developers dat wanneer het maar "OO" is dat het dan wel goed is. M.a.w.: OO is prio no.1 bij het ontwikkelen van software, ipv dat ze kijken wat de functionaliteit die gebouwd moet worden vereist (en wellicht dus een andere aanpak veel interessanter is).

OLAP en datamining wordt de komende jaren als grootste reden genoemd voor het gebruik van een database. Dat kun je oprecht vergeten op een ODBMS, omdat de data maar 1 context heeft, je kunt er niet veel mee in de wereld van set-theory, iets waarmee je JUIST bezig wilt zijn bij datamining. Let wel: data is maar data, de context waarin het gebruikt wordt is belangrijk. Als jij data maar in 1 context kunt gebruiken, is dat maar zeer beperkt.

DE vraag die dan bij mij omhoog borrelt is: waarom zou je dan in vredesnaam een ODBMS gebruiken? Omdat het OO is? Asjeblieft zeg...

[ Voor 3% gewijzigd door EfBe op 12-02-2005 11:31 ]

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Alarmnummer schreef op woensdag 09 februari 2005 @ 20:59:
Ik stoor me aan het feit dat je redelijk wat tijd kwijt bent met alle problematiek rond OR. Je hebt een mooi domein model opgezet in UML, van dat domein model maak je een (verkracht) database model. Dan maak je een domein model in bv java of c#. Daarna maak je de mappings files en overal staat wat informatie versnipperd en je bent je zelf eigelijk maar aan het herhalen en herhalen. Verder is een RDMBS ook totaal niet gemaakt voor oo structuren en moet je dus in vreemde bochten wringen om bv class hierarchieen te mappen.
Als je een hamer gebruikt om verf van je kozijnen af te krabben ben je ook lang bezig. Jij neemt maar aan dat wanneer je met een domainmodel begint het allemaal wel goed komt en als het dan spaak loopt, geef je bv een RDBMS de schuld. Maar zo werkt het niet.

De wereld draait niet om class hierarchien. dat zijn hulpmiddelen bij het bouwen van software. Met andere hulpmiddelen kun je dezelfde software maken (dus een programma met dezelfde functionaliteit). Waar het om gaat is dat je theorie toepast.

Je definieert contexts, je domain model. Daarmee ga je werken in je programma. De data die in dat domainmodel wordt geladen komt uit een database. Die data in de database zit daar in een wellicht andere context (genormaliseerde tables). Dmv een O/R mapper zorg je ervoor dat de data uit context A (de database) naar context B (jouw domainmodel) wordt geladen en terug.

Daar moet een O/R mapper voor worden opgezet en dat kost wellicht wat tijd. Echter, het ligt niet aan het RDBMS, maar aan de keuze dat jij OO wilt werken: je keuze voor een OO taal is begrijpelijk maar daar hangen wel consequenties aan: je moet data van de ene naar de andere context vertalen, of beter: laten vertalen. Even een metafoor: jij laat je domain model toch ook niet beinvloeden door hoe de schermen eruit zien? (en andersom: jij laat je GUI toch ook niet beinvloeden door hoe je domainmodel eruit ziet?). Daar zit ook weer een context transformatie van de data: een gebruiker wil in 1 scherm wellicht customers EN order gegevens zien, in 1 context, maar de data komt uit verschillende bronnen.

Het is niet voor niets dat ik zo tegen het domain model ageer. Ik doe dat soms wat gecharcheerd en overdreven, maar mijn grootste reden is dat de gebruikers van het domainmodel vaak vergeten dat 'data' iets anders is dan 'informatie' en dat data alleen informatie wordt door semantische interpretatie van die data: het plaatsen van die data in een context. Data analyse is niet voor niets een theoretisch onderwerp, je kunt het doen zonder ook maar een computer aan te raken. Dat is met een reden: het heeft geen reet met programmeertalen te maken. Het is echter wel fundamenteel voor je applicatie. Door met het Domain Model te beginnen lijkt dat de enige context van de data die er is, maar dat is dus de fout: dat is niet zo. En dus wringt de schoen: een domain object moet worden bewaard, maar hoe? ...

Doe het maar eens: maak maar eens een NIAM model voordat je een software pakket gaat bouwen, ga dan met dat NIAM model een relationeel model maken en met dat NIAM model ook je domain model. Je zult zien dat je 2 vliegen in 1 klap slaat en het allemaal erg simpel werkt. Verder komt er bij dat je relationele model ook echt relationeel is: je kunt het gebruiken met de full power van een relationele database.
Maar een RDBMS heeft zeker wel voordelen. Het is de standaard, en het is algemeen benaderbaar en dit is niet gebonden aan het paradigma dat je gebruikt. Je zou gerust een oo systeem met dezelfde db laten communiceren als een procedureel systeem. De data die wordt opgeslagen is dus voor iedereen toegankelijk. Maar deze toegankelijkheid is niet gratis.. het kost tijd.. en tijd kost geld.
Nee het is juist andersom: een RDBMS geeft de vrijheid dat het je de mogelijkheid geeft de data in elke mogelijke context te plaatsen die jij zou willen. Dat is WEL gratis, want je maakt gewoon gebruik van de RDBMS engine. Dat vereist wel dat je de engine gebruikt zoals die moet worden gebruikt. In een auto achteruitrijdend van amsterdam naar wenen schiet ook niet op.
Mijn vraag is waarom iedereen zo blijft vasthouden aan een rdbms, zelfs voor situaties waar je gewoon niet zeker bent dat er ooit nog een ander systeem aangekoppeld gaat worden. Why pay for what you don`t use?
Omdat het zoveel beter is dan een ODBMS, zie andere posting van me. JIJ loopt tegen problemen op die je zelf veroorzaakt, no offence. Wellicht een domme opmerking maar ik heb die problemen die jij schetst nooit en veel developers die ik ken ook niet (en die werken toch echt met mega grote databases (1000+ tables)). De reden is dat ze anders tegen data-gebruik aankijken in hun applicatie: ze begrijpen dat data van de ene naar de andere context een transitie doormaakt.

Wat jij wilt echter is dat je overal in je applicatie data hebt in dezelfde context. Maar dat werkt niet, want je applicatie mag als geheel dan wel 1 applicatie zijn, de data IN die applicatie is niet altijd in dezelfde context aanwezig. (Order alleen, Order in een set van orders voor customer X, Order op een order report, Order als onderdeel van het totaal op een totals page. enz.). Omdat je dat wel wilt, (en je weet zelf al dat jouw domainmodel er anders uitziet dan je schermen (hoop ik)) loop je tegen problemen op.
Ik ben eigelijk nog maar weinig toepassingen van ODBMS`en tegengekomen en vraag me af waarom dat zo is. Waarom blijft iedereen vasthouden aan RDBMS`en? Waarom heb ik de indruk dat het gebruik van ODBMS`en een doodzonde is? Is dit domheid van de programmeurs die vastklampen aan oude tradities zonder zelf te begrijpen waarom? De angst om eens een andere oplossing te kiezen? Omdat iedereen het doet? Of is er een echte reden die mij nog niet duidelijk is?
ODBMS-en zijn niet practisch en alleen nuttig voor programmeurs die denken dat wanneer je geen OO-achtige toestanden gebruikt het slecht moet zijn. Ik heb ooit wel eens iets geschreven over dat het relationele model flaws bevat wanneer je er met OO ogen naar kijkt (geen mapping van inheritance etc.) maar eigenlijk is dat helemaal niet waar, het is gewoon data in een andere context, en in OO ogen wellicht 'flawed' maar dat ligt aan de waarnemer, niet aan wat wordt waargenomen. Echt, ik vind OO leuk, maar het OO-fetisjisme is IMHO meer een last dan een voordeel.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
EfBe schreef op zaterdag 12 februari 2005 @ 11:31:
ODBMS-en hebben een nadeel: alle data heeft maar 1 context: het object. Een RDBMS heeft de power om ieder attribute in een nieuwe context (set) te plaatsen, waardoor je de mogelijkheid krijgt om nieuwe semantische waarde aan een set attributes te geven door ze een nieuwe context te geven.
Dit snap ik niet, Kan je dit toelichten.
Onderschat dit niet, dit is DE reden waarom ODBMS-en niet werken. Het lijkt leuk, een bak met objects en dat je daar heel snel objects in en uit kunt halen, maar dan... een simpele groupby query op de set orders van een set customers... forget it. Dat KAN dan niet, want alle data zit in objects. Je zult dat zelf moeten doen.
Waarom zou dat niet kunnen? Een ODBMS weet hoe het object eruit ziet dus hij kan ook alle attributen van dat object aanspreken. Een group by gaat dus net zo eenvoudig als in een RDBMS. Je moet niet vergeten dat een ODBMS dus met object definities om kan gaan zoals een RDBMS met tabel definities.
De enige reden waarom ODBMS-en nog bestaan is de tunnelblik bij veel developers dat wanneer het maar "OO" is dat het dan wel goed is. M.a.w.: OO is prio no.1 bij het ontwikkelen van software, ipv dat ze kijken wat de functionaliteit die gebouwd moet worden vereist (en wellicht dus een andere aanpak veel interessanter is).
Hmm tja.. als ik bij mij de behoefte zie bestaan om een object op te slaan.. want tja.. ik werk met objecten, dan zou ik toch graag dat object eenvoudig ergens in een storage kunnen stoppen die me ACID eigenschappen geeft en waar ik eventueel ook nog wat over kan querieen zonder dat ik alle objecten eerst terug hoef te halen naar mijn eigen geheugen. Dus een ODBMS is dan de keuze omdat ik dan het minste werk hoef te doen..

Verder zou ik ook het liefst een ODBMS hebben die in dezelfde taal geschreven is waar ik in ontwikkel en die optioneel kan leven in dezelfde vm. Hierdoor is de overhead van communicatie tot een minimum gereduceerd en is het mogelijk om direct functionaliteit (queries etc) in die object store te injecteren.

Je moet niet vergeten dat niet alle databases vanuit meerdere contexten worden aangesproken. Soms wil je een simpele opslag plek voor objecten, ondersteuning van acid eigenschappen, een eenvoudige query mogelijkheden. Voor mijn needs is dat vaak al voldoende..
OLAP en datamining wordt de komende jaren als grootste reden genoemd voor het gebruik van een database. Dat kun je oprecht vergeten op een ODBMS, omdat de data maar 1 context heeft, je kunt er niet veel mee in de wereld van set-theory, iets waarmee je JUIST bezig wilt zijn bij datamining. Let wel: data is maar data, de context waarin het gebruikt wordt is belangrijk. Als jij data maar in 1 context kunt gebruiken, is dat maar zeer beperkt.
Volgens mij mis je iets. Een column gerelateerd aan een tabel is dezelfde context als een field aan zijn object. Ik zie het verschil dus absoluut niet. Ik durf trouwens nog wel een stap verder te gaan door te zeggen dat de semantiek van een RDBMS een subset is van de semantiek van een ODBMS.
DE vraag die dan bij mij omhoog borrelt is: waarom zou je dan in vredesnaam een ODBMS gebruiken? Omdat het OO is? Asjeblieft zeg...
Niet omdat het OO is.. omdat het tijd bespaard..

[ Voor 4% gewijzigd door Alarmnummer op 12-02-2005 12:05 ]


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 26-12 18:22

alienfruit

the alien you never expected

Verder zijn de meeste ODBMS gemaakt door kleine bedrijfjes, waarbij het voor de grotere bedrijven vaak toch onzeker blijft qua ondersteuning. Overigens zijn ODBMS pas echt interessant als je te maken hebt met veel n:n relaties.

Overigens worden queries gewoon ondersteunt in ODBMS, zou ondersteunen sommige OQL (Object Query LanguagE) dit ondersteunt bijv. GROUP BY, subqueries etc. Verder heb je volgens mij ook ODBC. Het enige probleem blijft vaak dat integriteit van ODBMS moeilijk valt te controleren/hanteren, vind ik.

[ Voor 40% gewijzigd door alienfruit op 12-02-2005 12:16 ]


Verwijderd

een leuk articel over om de discussie aan te vullen:

http://www.25hoursaday.com/WhyArentYouUsingAnOODBMS.html

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
EfBe schreef op zaterdag 12 februari 2005 @ 11:56:
[...]

Als je een hamer gebruikt om verf van je kozijnen af te krabben ben je ook lang bezig. Jij neemt maar aan dat wanneer je met een domainmodel begint het allemaal wel goed komt en als het dan spaak loopt, geef je bv een RDBMS de schuld. Maar zo werkt het niet.

De wereld draait niet om class hierarchien. dat zijn hulpmiddelen bij het bouwen van software. Met andere hulpmiddelen kun je dezelfde software maken (dus een programma met dezelfde functionaliteit). Waar het om gaat is dat je theorie toepast.
Mee eens. En ik gebruik een oo domein model omdat het veel krachtiger is dan een relationeel model. Alles wat een relationeel model kan, kan een oo model ook.. en meer. Ik zie niet in waarom ik me zou moeten beperken tot een mindere oplossing.
Daar moet een O/R mapper voor worden opgezet en dat kost wellicht wat tijd. Echter, het ligt niet aan het RDBMS, maar aan de keuze dat jij OO wilt werken: je keuze voor een OO taal is begrijpelijk maar daar hangen wel consequenties aan: je moet data van de ene naar de andere context vertalen, of beter: laten vertalen.
Als ik weet dat een stuk dat niet vanuit een andere context aangesproken hoeft te worden, waarom zou ik dan voor de meest universele oplossing gaan? Ik ga dan voor de oplossing die mij het minste tijd zou moeten kosten en niet een waar ik steeds naar een universeel model toe ga werken.

Dat is precies wat ik met dit topic wil zeggen. Als je weet dat data niet vanuit een andere context aangesproken gaat worden, waarom dan de extra kosten betalen??
Het is niet voor niets dat ik zo tegen het domain model ageer.
Hmm tja.. maar er zijn genoeg mensen die juist erg voor domein modellen zijn ;) En die ook nog eens object georienteerd zijn. In je domein model geef je een reflectie van de werkelijkheid. En hierbij heb je soms de behoefte aan een stuk overerving...
Ik doe dat soms wat gecharcheerd en overdreven, maar mijn grootste reden is dat de gebruikers van het domainmodel vaak vergeten dat 'data' iets anders is dan 'informatie' en dat data alleen informatie wordt door semantische interpretatie van die data: het plaatsen van die data in een context. Data analyse is niet voor niets een theoretisch onderwerp, je kunt het doen zonder ook maar een computer aan te raken Dat is met een reden: het heeft geen reet met programmeertalen te maken. Het is echter wel fundamenteel voor je applicatie. Door met het Domain Model te beginnen lijkt dat de enige context van de data die er is, maar dat is dus de fout: dat is niet zo. En dus wringt de schoen: een domain object moet worden bewaard, maar hoe? ...
Ik heb het al meerdere keren gezegd en begin er nu toch wel een beetje flauw van te worden. Soms heb je data dat niet vanuit een andere context aangesproken gaat worden. Als aan deze voorwaarde is voldaan, dan is een 'beperkter' alternatief zoals een ODBMS imho een betere oplossing doordat het minder tijd kost want je zit tenslotte ook in een oo omgeving (dus er hoeft geen paradigma vertaling plaats te vinden).

Stel dat ODBMS`en de standaard waren en ik zat in bv een volledig procedurele omgeving. Dan zou ik als aan die voorwaarde (geen andere context) is voldaan, misschien voor een RDBMS zijn gegaan doordat hier de geen paradigma vertaling hoeft plaats te vinden.
Doe het maar eens: maak maar eens een NIAM model voordat je een software pakket gaat bouwen,
Jij bent de enigste die ik ken dit dit woord gebruikt. Ik heb er nog nooit van gehoord.
Omdat het zoveel beter is dan een ODBMS, zie andere posting van me. JIJ loopt tegen problemen op die je zelf veroorzaakt, no offence. Wellicht een domme opmerking maar ik heb die problemen die jij schetst nooit en veel developers die ik ken ook niet (en die werken toch echt met mega grote databases (1000+ tables)). De reden is dat ze anders tegen data-gebruik aankijken in hun applicatie: ze begrijpen dat data van de ene naar de andere context een transitie doormaakt.
Hmmm.. wie heeft er hier nou een OR mapper gemaakt ;) Wie had dus nu de behoefte om objecten in een db op te slaan? Wie loopt er nu zo hard te vechten tegen het paradigma verschil tussen een oo systeem en een relationeel systeem dat je daar zelfs je brood mee bent gaan verdienent.
Wat jij wilt echter is dat je overal in je applicatie data hebt in dezelfde context. Maar dat werkt niet, want je applicatie mag als geheel dan wel 1 applicatie zijn, de data IN die applicatie is niet altijd in dezelfde context aanwezig. (Order alleen, Order in een set van orders voor customer X, Order op een order report, Order als onderdeel van het totaal op een totals page. enz.). Omdat je dat wel wilt, (en je weet zelf al dat jouw domainmodel er anders uitziet dan je schermen (hoop ik)) loop je tegen problemen op.
Dit snap ik niet.
ODBMS-en zijn niet practisch en alleen nuttig voor programmeurs die denken dat wanneer je geen OO-achtige toestanden gebruikt het slecht moet zijn.
Dat klopt niet. Ik zoek een oplossing die zo weinig mogelijk tijd kost en voldoet aan mijn voorwaarden. Ik denk dat een ODBMS in sommige gevallen een goedkopere oplossing (qua ontwikkeltijd) is dan een RDBMS omdat er geen vertaal slag hoef plaats te vinden. Daarom is een ODBMS vanuit een oo omgeving de goedkoopste oplossing. Niet omdat de programmeurs te heilig geloven in OO...

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 26-12 18:22

alienfruit

the alien you never expected

O/R mappers gebruik ik nooit eigenlijk, ik maak in NexusDB (ondersteunt SQL'03 ;)) mijn eigen datatype aan die serialized objecten kan lezen en doorzoeken, vervolgens als ik record uitlees deserialized hij het object automatishc. Erg makkelijk en werkt prima :)

[ Voor 16% gewijzigd door alienfruit op 12-02-2005 12:36 ]


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Alarmnummer schreef op zaterdag 12 februari 2005 @ 12:00:
Dit snap ik niet, Kan je dit toelichten.
Codd. Het is gewoon set theorie: een entity is een relatie tussen attributes ('relation') en attributes hebben cross entity relaties ('Relationships'), 'relational model'. Als jij een entity 'customer' definieert en een entity 'order' dan leg je die attribute relaties vast in definities. Echter, ik kan bv doen:
SELECT Order.OrderID, Order.OrderDate, Customer.CompanyName
FROM Order INNER JOIN Customer ON Order.CustomerID = Customer.CustomerID
WHERE Customer.Country = 'The Netherlands'.

Op dat moment definieer ik een nieuwe attribute relation, nl. die van OrderID, OrderDate en CompanyName. Dit is een nieuwe 'set'. Je zit dit goed wanneer ik hier een view van maak, bv OrderCoreCompanyNameView.

Welnu, als ik doe:
SELECT *
FROM OrderCoreCompanyNameView Ov
INNER JOIN OrderDetail Od
ON Ov.OrderID = Od.OrderID
ORDER BY OrderDate DESC

Zie jij geen verschil tussen een table of een nieuwe set.
Ik gebruik nu de 3 attributes uit 2 entities in een nieuwe context. Ze komen wel uit een oorspronkelijke context, maar ik definieer een nieuwe set en daarmee ga ik werken. Deze flexibiliteit mis je in een ODBMS.
Waarom zou dat niet kunnen? Een ODBMS weet hoe het object eruit ziet dus hij kan ook alle attributen van dat object aanspreken. Een group by gaat dus net zo eenvoudig als in een RDBMS. Je moet niet vergeten dat een ODBMS dus met object definities om kan gaan zoals een RDBMS met tabel definities.
Nee een group by gaat helemaal niet, want ik kan niet groupby-en over een set die ik zelf definieer, ik kan alleen groupby-en over attributes in 1 entity.
Hmm tja.. als ik bij mij de behoefte zie bestaan om een object op te slaan.. want tja.. ik werk met objecten, dan zou ik toch graag dat object eenvoudig ergens in een storage kunnen stoppen die me ACID eigenschappen geeft en waar ik eventueel ook nog wat over kan querieen zonder dat ik alle objecten eerst terug hoef te halen naar mijn eigen geheugen. Dus een ODBMS is dan de keuze omdat ik dan het minste werk hoef te doen..
Vraagje: maak je wel een vertaling naar GUI contexts? Of zeg je dan ook "ik werk met objects, dat de GUI andere dingen wil vind ik lastig, het zou mooi zijn als de GUI gewoon mijn hapklare objects zou eten" ?
Verder zou ik ook het liefst een ODBMS hebben die in dezelfde taal geschreven is waar ik in ontwikkel en die optioneel kan leven in dezelfde vm. Hierdoor is de overhead van communicatie tot een minimum gereduceerd en is het mogelijk om direct functionaliteit (queries etc) in die object store te injecteren.
Maar dat zijn altijd queries over objects. En wat ZIJN nu eigenlijk queries over objects? Dat zijn set definities die subsets definieren binnen bestaande sets objects. Dus niet nieuwe entities definieren, maar puur sets van objects. Dus je gaat uit van ALLE customer objects, en je definieert een subset van al die customers en daarmee ga je werken op een bepaald moment.

Dit werkt heel goed hoor, echter niet in alle gevallen, bv wanneer je lijstjes wilt laten zien: alle orders met de customer.company name erin, reporting etc. Dan loop je tegen dingen aan waarbij je in OO dingen gaat bouwen die in een RDBMS gemeengoed zijn.

Voorbeeldje:
Het voorbeeld Order + CompanyName, veel voorkomend iets. Wat zou jij doen:
SELECT Order.*, Customer.CompanyName FROM Order O INNER JOIN Customer C ON O.CustomerID = C.CustomerID

OF:
SELECT Order.* FROM Order
SELECT Customer.* FROM Customer
en in je order class een property CompanyName die this.Customer.Companyname teruggeeft?

let wel, het 1e is beduidend efficienter in de meeste gevallen en levert geen extra code op, want alle code is al aanwezig (resultset merging etc.). het 2e geval echter vereist OF een o/r mapper die dat voor je doet (;)) of het zelf bouwen.

Met een ODBMS is alleen het 2e mogelijk.
Je moet niet vergeten dat niet alle databases vanuit meerdere contexten worden aangesproken. Soms wil je een simpele opslag plek voor objecten, ondersteuning van acid eigenschappen, een eenvoudige query mogelijkheden. Voor mijn needs is dat vaak al voldoende..
Dan zou een enkele tabel met een blob en een ID en wat fields voor zoektermen dus al voldoen?
[...]
Volgens mij mis je iets. Een column gerelateerd aan een tabel is dezelfde context als een field aan zijn object. Ik zie het verschil dus absoluut niet. Ik durf trouwens nog wel een stap verder te gaan door te zeggen dat de semantiek van een RDBMS een subset is van de semantiek van een ODBMS.
Ik mis niets hoor :)

Een attribute in een entity is idd hetzelfde als een field in een object. Maar dat field in dat object kan ik niet hergebruiken in een andere context. Dat attribute wel. En daar ligt nu juist de crux. ODBMS-en definieren sets op entities, RDBMS-en definieren sets op entities EN sets op nieuwe entities, gecreeerd on the fly.
Niet omdat het OO is.. omdat het tijd bespaard..
Dat ligt er maar aan. Aan je openingspost te zien bespaar je helemaal geen tijd.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Alarmnummer schreef op zaterdag 12 februari 2005 @ 12:27:
Mee eens. En ik gebruik een oo domein model omdat het veel krachtiger is dan een relationeel model. Alles wat een relationeel model kan, kan een oo model ook.. en meer. Ik zie niet in waarom ik me zou moeten beperken tot een mindere oplossing.
In een relational model zit geen behavior, dus het is appels met peren vergelijken.
Als ik weet dat een stuk dat niet vanuit een andere context aangesproken hoeft te worden, waarom zou ik dan voor de meest universele oplossing gaan? Ik ga dan voor de oplossing die mij het minste tijd zou moeten kosten en niet een waar ik steeds naar een universeel model toe ga werken.
Van DAL naar BL is al context-switching en van BL naar GUI ook. Jij wilt DAL <-> BL zo oplossen dat je dan dezelfde contexts gebruikt maar dat kan niet, want je beperkt jezelf tot subset definities op alleen objects.

Ga maar eens een reporting systeem bouwen met een pure o/r mapper en alleen een domain model.
Dat is precies wat ik met dit topic wil zeggen. Als je weet dat data niet vanuit een andere context aangesproken gaat worden, waarom dan de extra kosten betalen??
Kijk naar je domainmodel: zit er 1 entity in die een property heeft die data teruggeeft van een related entity, bv order.companyname? Indien ja: dan heb je al context verschillen. Heeft je applicatie lijstjes nodig op het scherm? Indien ja, dan heb je al context verschillen. De meeste db driven apps gebruiken lijstjes in schermen. Het is dan jezelf alleen maar moeilijk maken om dan krampachtig vast te blijven houden aan "Maar ik gebruik objects!". Wees toch eens wat flexibeler! :)
Hmm tja.. maar er zijn genoeg mensen die juist erg voor domein modellen zijn ;) En die ook nog eens object georienteerd zijn. In je domein model geef je een reflectie van de werkelijkheid. En hierbij heb je soms de behoefte aan een stuk overerving...
... het is geen reflectie van de werkelijkheid want zoals Evans zei: je hebt een translatie nodig tussen functioneel ontwerp en je domain model. (hij pleit voor een taal daarvoor). Nu kan het aan mij liggen maar als je vertalingen nodig hebt tussen functionele beschrijvingen en je applicatie structuur (dus 'functionaliteit A' is gebouwd middels deze object graph en dit stukje code hier in object a en d) lijkt het mij dat je niet echt goed bezig bent maar dat is een andere discussie. IMHO is het modelleren van de processen die de software gaat automatiseren naar die processen beter dan een vertaling daarvan te maken, omdat je functionele beschrijvingen dan niet 1:1 kunnen worden afgebeeld op je code zodat je niet van functionele beschrijving naar code kan in 1 stap en vice versa.
Ik heb het al meerdere keren gezegd en begin er nu toch wel een beetje flauw van te worden. Soms heb je data dat niet vanuit een andere context aangesproken gaat worden. Als aan deze voorwaarde is voldaan, dan is een 'beperkter' alternatief zoals een ODBMS imho een betere oplossing doordat het minder tijd kost want je zit tenslotte ook in een oo omgeving (dus er hoeft geen paradigma vertaling plaats te vinden).
Tja, dan word jij daar maar flauw van. Jij begint een thread, ik geef antwoord. Ik zeg altijd: als je het antwoord niet wilt horen, moet je de vraag niet stellen. :)

Ik snap je redenering wel, alleen je gaat aan dingen voorbij. Waarom denk je dat ik dingen als TypedLists heb ingebouwd en mogelijkheden zodat je zelf dynamische sets kunt bouwen uit entity fields? Niet omdat ik niets te doen had, maar omdat het de power van een RDBMS in jouw handen geeft. Immers: je kunt dan niet alleen sets definieren op OBJECT sets, maar ook sets over attributes, in verschillende entities, dus veel MEER sets dan je kunt met louter objects. Nu kun jij zeggen: dat heb ik niet nodig, maar dat lijkt me echt sterk, tenzij je je GUI's e.d. zo bouwt dat je er louter single-type objects in kunt gebruiken, maar dan zijn die gui's IMHO niet zo bruikbaar.
Stel dat ODBMS`en de standaard waren en ik zat in bv een volledig procedurele omgeving. Dan zou ik als aan die voorwaarde (geen andere context) is voldaan, misschien voor een RDBMS zijn gegaan doordat hier de geen paradigma vertaling hoeft plaats te vinden.
Nogmaals, ik snap die redenatie wel, maar je gaat aan dingen voorbij. Ik heb die metafoor over domain model -> Gui schermen niet voor jan doedel hier neergezet. Een BL tier bouw je met andere dingen als eis dan een GUI, een GUI gebruikt wellicht andere sets dan de BL tier. Jij kunt nu beweren "NEE!" maar dat lijkt me echt sterk. Immers: geen order scherm zonder customer gegevens. En daar ga je al.
Jij bent de enigste die ik ken dit dit woord gebruikt. Ik heb er nog nooit van gehoord.
Nooit van gehoord? Hoe doe jij dan je informatie analyse? "Dit veld lijkt me wel logisch hier" ? Dat lukt wellicht nog wel bij een tabelletje of 10, 20. Maar voor een onderhoudbaar systeem heb je wel andere middelen nodig: abstractie bv. Je moet analyseren hoe je data zich tot elkaar verhoudt. Alleen DAN kun je op de JUISTE plek wijzigingen aanbrengen wanneer die nodig zijn, bv na een jaar in productie te hebben gedraaid.
Hmmm.. wie heeft er hier nou een OR mapper gemaakt ;)
Ik heb niet een pure O/R mapper gemaakt maar een O/R mapping gebruikend framework. Dat is wat anders en met een reden :)
Wie had dus nu de behoefte om objecten in een db op te slaan? Wie loopt er nu zo hard te vechten tegen het paradigma verschil tussen een oo systeem en een relationeel systeem dat je daar zelfs je brood mee bent gaan verdienent.
Ik heb de behoefte niet om objects in een database op te slaan. Ik heb de behoefte om entities (dwz, de data die een 'customer' vormt bv) op te slaan in de database enerzijds en functionaliteit om met die data te werken anderzijds. Daarom werk ik ook met entities, niet met objects. Entities worden IN objects gerepresenteerd in memory, maar daar houdt het niet op, want je kunt veel meer met die data: je kunt sets definieren over die data en daarmee werken, om maar wat te noemen. En op dit moment gaat het nog niet ver genoeg. Ik wil bv dingen kunnen ophalen als:
SQL:
1
2
3
4
5
6
7
SELECT  O.*, 
    (
        SELECT MAX(UnitPrice * Quantity) AS HighestPrice 
        FROM [Order Details] od WHERE Od.OrderID  = O.OrderID
    ) AS HighestPrice 
FROM    Orders O 
WHERE   O.CustomerID = 'CHOPS'


Dat kost me nu veel queries en met objects krijg ik dat er niet uit, dat moet met sets over attributes.

Met DIE power krijg je pas ontwikkelsnelheid, want de developer kan meteen alles bouwen wat hij moet bouwen zonder politiek gezeik over procedures dit of mag niet zus.

Ik heb een BOF sessie gehouden over O/R mapping op Teched vorig jaar. 1 ding kwam daar sterk naar voren: men had de behoefte om in de gehele applicatie dezelfde soort data-access technologie te gebruiken, dit voor consistentie in de applicatie (dus dat je niet met 2 soorten objects zit te zeulen, de ene moet via die DAL en de andere moet via die DAL).

In erg veel applicaties zit reporting, al dan niet middels lijstjes op schermen. Dat is erg inefficient met pure o/r mappers omdat je dan met objects moet werken, terwijl je even een setje data wilt ophalen.
(edit: verduidelijking). Die behoefte aan 1 enkele data-access technologie was voor velen niet echt te rijmen met pure O/R mapping technologie omdat data analysis en reporting bv 2 zaken waren waar pure o/r mapping niet echt tot zn recht komt en eerder een nadeel is.
Wat jij wilt echter is dat je overal in je applicatie data hebt in dezelfde context. Maar dat werkt niet, want je applicatie mag als geheel dan wel 1 applicatie zijn, de data IN die applicatie is niet altijd in dezelfde context aanwezig. (Order alleen, Order in een set van orders voor customer X, Order op een order report, Order als onderdeel van het totaal op een totals page. enz.). Omdat je dat wel wilt, (en je weet zelf al dat jouw domainmodel er anders uitziet dan je schermen (hoop ik)) loop je tegen problemen op.
Dit snap ik niet.
Wat snap je precies niet aan?
Dat klopt niet. Ik zoek een oplossing die zo weinig mogelijk tijd kost en voldoet aan mijn voorwaarden. Ik denk dat een ODBMS in sommige gevallen een goedkopere oplossing (qua ontwikkeltijd) is dan een RDBMS omdat er geen vertaal slag hoef plaats te vinden. Daarom is een ODBMS vanuit een oo omgeving de goedkoopste oplossing. Niet omdat de programmeurs te heilig geloven in OO...
Ten eerste is de behoefte aan een ODBMS alleen daar in een OO applicatie. Ten tweede is een ODBMS alleen efficient wanneer je louter objectsets definieert. Bij 9 van de 10 applicaties heb je daar niet genoeg aan, je hebt dan ook behoefte aan sets die gedefinieerd zijn over attributes van verschillende entities. Dit komt omdat in een GUI bv of in een process dat reporting data fabriceert of data analyse doet, je met lijstjes werkt die samengesteld zijn uit attributes van verschillende entities. En met objects alleen heb je dan een probleem, want je moet dan een nieuw object definieren maar hoe ga jij dat vullen met bestaande data uit 3 of 4 entities?

[ Voor 3% gewijzigd door EfBe op 12-02-2005 13:48 ]

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02 14:52
EfBe schreef op zaterdag 12 februari 2005 @ 13:40:
[...]
Ten eerste is de behoefte aan een ODBMS alleen daar in een OO applicatie. Ten tweede is een ODBMS alleen efficient wanneer je louter objectsets definieert. Bij 9 van de 10 applicaties heb je daar niet genoeg aan, je hebt dan ook behoefte aan sets die gedefinieerd zijn over attributes van verschillende entities. Dit komt omdat in een GUI bv of in een process dat reporting data fabriceert of data analyse doet, je met lijstjes werkt die samengesteld zijn uit attributes van verschillende entities. En met objects alleen heb je dan een probleem, want je moet dan een nieuw object definieren maar hoe ga jij dat vullen met bestaande data uit 3 of 4 entities?
Niet mee eens. Als ik een view maak die data van meerdere objecten/entities toont dan krijgt die view van mij beschikking over alle benodigde objecten. Eventuele lijstjes worden via Collections aangeleverd, samengesteld in een DAO of een of ander ViewSupport object.

Feit blijft dat een puur ODBMS toegevoegde waarde heeft in die projecten die geen andere afhankelijkheden/contexten hebben dan de OO applicatie van waaruit je werkt. Zoals jij het zegt, in 9 van 10 applicaties is dat niet van toepassing. Hartstikke mooi, maar het gaat me juist om die ene waar het wel van toepassing is. In dat project kan ik een besparing in ontwikkeltijd bewerktstelligen als ik zonder OR mapper werk mijn objecten kan persisten. Er van uit gaande dat er een ODBMS is die dat kan, en daarnaast (tot op zekere hoogte) query-achtige functionaliteit heeft, en in staat is eventuele model updates te verwerken zonder verlies van data.

Begrijp me goed hoor, ik werk in 90% van de gevallen vanuit een datamodel. Dus ik maak eerst een database en creeer entity classes op basis van dat datamodel. Dat werkt prima, en daar ben ik echt geen weken per project mee bezig. In 10% van de gevallen werk ik op dezelfde manier, maar is het eigenlijk niet nodig, omdat de OO applicatie in kwestie de enige gebruiker van de DB is, of erger nog, het betreft een stuk interne informatie die moet blijven bestaan over crashes en reboots heen. Beide gevallen waarin een OR mapper/RDBMS imho niet nodig is (of in ieder geval overkill is), als er een werkbaar ODBMS zou zijn.

[ Voor 3% gewijzigd door zneek op 13-02-2005 12:02 ]


  • EfBe
  • Registratie: Januari 2000
  • Niet online
zneek schreef op zondag 13 februari 2005 @ 11:59:
Niet mee eens. Als ik een view maak die data van meerdere objecten/entities toont dan krijgt die view van mij beschikking over alle benodigde objecten. Eventuele lijstjes worden via Collections aangeleverd, samengesteld in een DAO of een of ander ViewSupport object.
Da's mooi, maar het gaat om de theorie erachter. Wat jij aan het doen bent met collections en daarvanuit lijstjes maken is ook wat een RDBMS doet wanneer jij een join definieert in een select en daaruit enkele attributes selecteert (kijk maar eens naar execution plans). M.a.w.: jij doet in code nog eens na wat een RDBMS al in zich heeft. :) Ik denk dan: dat kan efficienter: gebruik de RDBMS power wanneer je die toch tot je beschikking hebt :)
Feit blijft dat een puur ODBMS toegevoegde waarde heeft in die projecten die geen andere afhankelijkheden/contexten hebben dan de OO applicatie van waaruit je werkt.
Ok, maar geef maar eens 1 voorbeeld waar dat zo is.
Zoals jij het zegt, in 9 van 10 applicaties is dat niet van toepassing. Hartstikke mooi, maar het gaat me juist om die ene waar het wel van toepassing is. In dat project kan ik een besparing in ontwikkeltijd bewerktstelligen als ik zonder OR mapper werk mijn objecten kan persisten. Er van uit gaande dat er een ODBMS is die dat kan, en daarnaast (tot op zekere hoogte) query-achtige functionaliteit heeft, en in staat is eventuele model updates te verwerken zonder verlies van data.
je kunt dan ALLEEN tijd besparen wanneer je in je GUI ook 1:1 je objects edit/bewerkt. De enige applicaties die ik daarvan gezien heb zijn table data entry applicatietjes, en die worden niet echt gebruikt als normale applicatie. Zodra je de GUI normaal gaat opzetten (dwz vanuit de gebruiker geredeneerd) dan zul je zien dat je met een 1:1 mapping er niet komt. Tuurlijk kun je dan met een entity collection en wellicht een gefetchte graph van objects mooie lijstjes maken en master-detail grid indelingen e.d., feit blijft wel dat het eigenlijk dubbel werk is, want een RDBMS kan dat ook heel goed voor je.

De vraag van de TS was waarom een ODBMS niet werd gebruikt en mijn argument was dat je met een ODBMS nu juist dingen zelf moet doen die een RDBMS al heeft, omdat je cross-entity sets kunt definieren in een RDBMS maar niet in een ODBMS, en 10 tegen 1 dat jij daar echt in bijna alle gevallen tegenaanloopt, tegen de noodzaak van cross-entity lijstjes, veelal in read-only format. Een RDBMS helpt je dan, een ODBMS helpt je dan niet.

En omdat een RDBMS OOK sets kan definieren over entities, vind ik de vraag waarom een ODBMS gebruikt zou moeten worden een rare. Vanuit de BL developer geredeneerd, ja, dan snap ik de noodzaak, maar de BL developer bouwt niet de gehele applicatie, al zou hij dat wellicht wel willen, waardoor er noodzaak ontstaat voor een andere oplossing, die flexibeler is.
Begrijp me goed hoor, ik werk in 90% van de gevallen vanuit een datamodel. Dus ik maak eerst een database en creeer entity classes op basis van dat datamodel. Dat werkt prima, en daar ben ik echt geen weken per project mee bezig. In 10% van de gevallen werk ik op dezelfde manier, maar is het eigenlijk niet nodig, omdat de OO applicatie in kwestie de enige gebruiker van de DB is, of erger nog, het betreft een stuk interne informatie die moet blijven bestaan over crashes en reboots heen. Beide gevallen waarin een OR mapper/RDBMS imho niet nodig is (of in ieder geval overkill is), als er een werkbaar ODBMS zou zijn.
In sommige gevallen is een database uberhaupt overbodig. Of is een n-tier aanpak overkill. Het lijkt me niet dat de TS met zijn vraag doelde op uitzonderingen, maar op gemiddelde gevallen ;)

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02 14:52
EfBe schreef op zondag 13 februari 2005 @ 14:14:
[...]

Da's mooi, maar het gaat om de theorie erachter. Wat jij aan het doen bent met collections en daarvanuit lijstjes maken is ook wat een RDBMS doet wanneer jij een join definieert in een select en daaruit enkele attributes selecteert (kijk maar eens naar execution plans). M.a.w.: jij doet in code nog eens na wat een RDBMS al in zich heeft. :) Ik denk dan: dat kan efficienter: gebruik de RDBMS power wanneer je die toch tot je beschikking hebt :)


[...]

Ok, maar geef maar eens 1 voorbeeld waar dat zo is.


[...]

je kunt dan ALLEEN tijd besparen wanneer je in je GUI ook 1:1 je objects edit/bewerkt. De enige applicaties die ik daarvan gezien heb zijn table data entry applicatietjes, en die worden niet echt gebruikt als normale applicatie. Zodra je de GUI normaal gaat opzetten (dwz vanuit de gebruiker geredeneerd) dan zul je zien dat je met een 1:1 mapping er niet komt. Tuurlijk kun je dan met een entity collection en wellicht een gefetchte graph van objects mooie lijstjes maken en master-detail grid indelingen e.d., feit blijft wel dat het eigenlijk dubbel werk is, want een RDBMS kan dat ook heel goed voor je.

De vraag van de TS was waarom een ODBMS niet werd gebruikt en mijn argument was dat je met een ODBMS nu juist dingen zelf moet doen die een RDBMS al heeft, omdat je cross-entity sets kunt definieren in een RDBMS maar niet in een ODBMS, en 10 tegen 1 dat jij daar echt in bijna alle gevallen tegenaanloopt, tegen de noodzaak van cross-entity lijstjes, veelal in read-only format. Een RDBMS helpt je dan, een ODBMS helpt je dan niet.

En omdat een RDBMS OOK sets kan definieren over entities, vind ik de vraag waarom een ODBMS gebruikt zou moeten worden een rare. Vanuit de BL developer geredeneerd, ja, dan snap ik de noodzaak, maar de BL developer bouwt niet de gehele applicatie, al zou hij dat wellicht wel willen, waardoor er noodzaak ontstaat voor een andere oplossing, die flexibeler is.


[...]

In sommige gevallen is een database uberhaupt overbodig. Of is een n-tier aanpak overkill. Het lijkt me niet dat de TS met zijn vraag doelde op uitzonderingen, maar op gemiddelde gevallen ;)
Je snapt mijn punt niet. Ik heb soms de behoefte om een aantal objecten persistent te kunnen maken, zonder de overhead van een OR mapper (overhead in ontwikkeltijd!)

Kennelijk hebben we het elk ook over totaal verschillende soorten projecten, ik herken namelijk niets in jouw hele verhaal. De projecten waar ik het over heb, en TS ook trouwens, aangezien TS en ik collega's zijn, zijn klein, hebben geen externe afhankelijkheden en knijpen voornamelijk op urenbudget. Voor die projecten zou het direct kunnen persisten van objecten een zegen zijn, mits er wel (enige) query mogelijkheid blijft, en entity updates zonder al te veel problemen doorgevoerd kunnen worden (wanneer er op een later tijdstip een property bij komt oid).

  • EfBe
  • Registratie: Januari 2000
  • Niet online
zneek schreef op zondag 13 februari 2005 @ 18:31:
Je snapt mijn punt niet. Ik heb soms de behoefte om een aantal objecten persistent te kunnen maken, zonder de overhead van een OR mapper (overhead in ontwikkeltijd!)
Dat snap ik wel, ik zeg alleen dat je IMHO vergeet dat wanneer je een NORMALE (!) gui op dat soort BL's plakt, je veelal toch dat voordeel teniet doet.
Kennelijk hebben we het elk ook over totaal verschillende soorten projecten, ik herken namelijk niets in jouw hele verhaal. De projecten waar ik het over heb, en TS ook trouwens, aangezien TS en ik collega's zijn, zijn klein, hebben geen externe afhankelijkheden en knijpen voornamelijk op urenbudget. Voor die projecten zou het direct kunnen persisten van objecten een zegen zijn, mits er wel (enige) query mogelijkheid blijft, en entity updates zonder al te veel problemen doorgevoerd kunnen worden (wanneer er op een later tijdstip een property bij komt oid).
Simpele data-entry dingetjes dus? Ik zou anders niet weten welk soort apps je bedoelt. :)

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02 14:52
EfBe schreef op zondag 13 februari 2005 @ 18:46:
[...]

Dat snap ik wel, ik zeg alleen dat je IMHO vergeet dat wanneer je een NORMALE (!) gui op dat soort BL's plakt, je veelal toch dat voordeel teniet doet.


[...]

Simpele data-entry dingetjes dus? Ik zou anders niet weten welk soort apps je bedoelt. :)
Ten eerste: ik bouw geen Windows based apps, alleen webapps. Dus dat GUI argument doet er niet toe.

En ja, simpele data-entry dingetjes, maar ook server processen en hele applicaties. We hebben bijvoorbeeld een online live-veiling gebouwd, waar wel wat externe afhankelijkheden waren, maar de kern van de veiling had die afhankelijkheid niet. De Biedingen had ik dus liever zonder nadenken als object opgeslagen, dan zoals nu via een Hibernate mapping in een rdbms.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
EfBe schreef op zaterdag 12 februari 2005 @ 13:40:
In een relational model zit geen behavior, dus het is appels met peren vergelijken.
Ik doelde op inheritance..
Van DAL naar BL is al context-switching en van BL naar GUI ook. Jij wilt DAL <-> BL zo oplossen dat je dan dezelfde contexts gebruikt maar dat kan niet, want je beperkt jezelf tot subset definities op alleen objects.

Ga maar eens een reporting systeem bouwen met een pure o/r mapper en alleen een domain model.
Ik snap nu waar jij op doelt. Ik heb zelf nog niet vaak de behoefte gehad om data in een andere vorm (view) uit de database te trekken, dus vandaar dat ik het ook een minder belangrijk argument vind.
De meeste db driven apps gebruiken lijstjes in schermen. Het is dan jezelf alleen maar moeilijk maken om dan krampachtig vast te blijven houden aan "Maar ik gebruik objects!". Wees toch eens wat flexibeler! :)
Binnen 1 applicatie worden de domein objecten door de verschillende lagen gedeeld. Vanaf de presentation layer tot en met de datalayer. Ik heb daar die behoefte om een andere 'view' op data te krijgen nog niet vaak gehad.
Tja, dan word jij daar maar flauw van. Jij begint een thread, ik geef antwoord. Ik zeg altijd: als je het antwoord niet wilt horen, moet je de vraag niet stellen. :)
Ik wil graag antwoord over mijn vraag binnen de door mij gestelde context: data dat niet in een andere context aangesproken hoeft te worden. Dus een soortement van objectstore met acid eigenschappen, eenvoudige query mogelijkheden (zonder alle objecten terug te halen) en support voor schemabeheer van de classes.
Nooit van gehoord? Hoe doe jij dan je informatie analyse? "Dit veld lijkt me wel logisch hier" ? Dat lukt wellicht nog wel bij een tabelletje of 10, 20. Maar voor een onderhoudbaar systeem heb je wel andere middelen nodig: abstractie bv. Je moet analyseren hoe je data zich tot elkaar verhoudt.
Hmm tja.. kwestie van enteiten, attributen en relaties te voorschijn toveren. En verder.. tja.. ik ben relatief nieuw op dit gebied maar zelfs in mijn literatuur ben ik zover ik weet nog niet tegengekomen (en ik heb het een en ander aan boeken).
In erg veel applicaties zit reporting, al dan niet middels lijstjes op schermen. Dat is erg inefficient met pure o/r mappers omdat je dan met objects moet werken, terwijl je even een setje data wilt ophalen.
De kosten hiervan zitten voornamelijk in de transport van objecten (en de mapping). Op het moment dat je een volledige java object store (als je zelf ook met java werkt) kun je daar functionaliteit in injecteren. Je kunt een reporting functie rechtstreeks de database in injecteren. Over die andere 'view' over data kan ik niet zosnel antwoord geven. Maar ik weet dat dit niet altijd nodig is, soms ben ik een object store nodig met de door mij gestelde eigenschappen. Een blob in de db is te beperkt...
Bij 9 van de 10 applicaties heb je daar niet genoeg aan, je hebt dan ook behoefte aan sets die gedefinieerd zijn over attributes van verschillende entities. Dit komt omdat in een GUI bv of in een process dat reporting data fabriceert of data analyse doet, je met lijstjes werkt die samengesteld zijn uit attributes van verschillende entities. En met objects alleen heb je dan een probleem, want je moet dan een nieuw object definieren maar hoe ga jij dat vullen met bestaande data uit 3 of 4 entities?
Je grootste punt van kritiek op odbms`en is me duidelijk. Ik heb dit echt nog niet vaak nodig gehad en als ik het toch niet nodig ben... en dan ga ik liever kijken naar een systeem die me tijd scheelt.

  • EfBe
  • Registratie: Januari 2000
  • Niet online
zneek schreef op zondag 13 februari 2005 @ 18:53:
[...]
Ten eerste: ik bouw geen Windows based apps, alleen webapps. Dus dat GUI argument doet er niet toe.
Ah, webapps hebben geen gui? ;)
En ja, simpele data-entry dingetjes, maar ook server processen en hele applicaties. We hebben bijvoorbeeld een online live-veiling gebouwd, waar wel wat externe afhankelijkheden waren, maar de kern van de veiling had die afhankelijkheid niet. De Biedingen had ik dus liever zonder nadenken als object opgeslagen, dan zoals nu via een Hibernate mapping in een rdbms.
Maar, is dat het gehele systeem, die biedingen? of zijn er nog andere onderdelen aan het systeem dat juist wel baat heeft bij een rdbms?

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02 14:52
EfBe schreef op zondag 13 februari 2005 @ 20:57:
[...]

Ah, webapps hebben geen gui? ;)
In ieder geval niet 1 waarbij het door jou gestelde een probleem is.
[...]

Maar, is dat het gehele systeem, die biedingen? of zijn er nog andere onderdelen aan het systeem dat juist wel baat heeft bij een rdbms?
Nee dus. Het databaseje is er 1 met 5 tabellen, zonder relaties, constraints, triggers enz. enz. Het is 100% puur dataopslag, al het 'denkwerk' gebeurt in Java.

[edit] Er zit een server-, onderhoudskant en Flashremoting server kant aan.

Daarom snap ik jouw reactie ook niet. Ik heb die behoefte, die is ontstaan uit ervaring. Ik weet niet of er een oplossing voor is, maar ik kan me niet voorstellen dat de RDBMS + OR mapping oplossing het eindpunt is. Het is slechts het einde van het begin (net als Spring ;) @ Alarmnummer ). Voor sommige oplossingen zou een werkbaar ODBMS veel beter zijn, gedacht vanuit de hoeveelheid benodigde ontwikkeltijd.

[ Voor 7% gewijzigd door zneek op 13-02-2005 23:56 ]


  • EfBe
  • Registratie: Januari 2000
  • Niet online
zneek schreef op zondag 13 februari 2005 @ 23:52:
Nee dus. Het databaseje is er 1 met 5 tabellen, zonder relaties, constraints, triggers enz. enz. Het is 100% puur dataopslag, al het 'denkwerk' gebeurt in Java.
[edit] Er zit een server-, onderhoudskant en Flashremoting server kant aan.
Daarom snap ik jouw reactie ook niet. Ik heb die behoefte, die is ontstaan uit ervaring. Ik weet niet of er een oplossing voor is, maar ik kan me niet voorstellen dat de RDBMS + OR mapping oplossing het eindpunt is. Het is slechts het einde van het begin (net als Spring ;) @ Alarmnummer ). Voor sommige oplossingen zou een werkbaar ODBMS veel beter zijn, gedacht vanuit de hoeveelheid benodigde ontwikkeltijd.
Maar dat is dan dus alleen in het geval van een systeempje waarbij objects alleen op die wijze gebruikt worden en veelal erg klein. Lijkt me niet de doorsnee applicatie. Waarom gebruik je dan niet een ODBMS in dat geval? En waarom is een rdbms belemmerend in de ontwikkeling van de applicatie? Kost het teveel tijd om de O/R mapper op te zetten? in dat geval is wellicht de O/R mapper dus niet zo productief.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02 14:52
EfBe schreef op maandag 14 februari 2005 @ 09:56:
[...]

Maar dat is dan dus alleen in het geval van een systeempje waarbij objects alleen op die wijze gebruikt worden en veelal erg klein. Lijkt me niet de doorsnee applicatie. Waarom gebruik je dan niet een ODBMS in dat geval? En waarom is een rdbms belemmerend in de ontwikkeling van de applicatie? Kost het teveel tijd om de O/R mapper op te zetten? in dat geval is wellicht de O/R mapper dus niet zo productief.
Het probleem is dat ik nog geen kennis heb van ODBMSen. Daarom vond ik dit topic ook interessant: is er al een werkbaar ODBMS?

Overigens zijn er ook genoeg grote bedrijven die grote toepassingen maken mbv een ODBMS. Ik las bijv. ergens een voorbeeld van Motorola.

Nu kost een OR mapping opzetten me nog een paar uur tot een dag, op een project met misschien een urenbudget van 80 uur. Dat is toch al gauw 10%. Als ik via een ODBMS zonder 1 minuut werk mijn objecten kan persisten is dat een significante besparing. Maar nogmaals, ik twijfel of er al een ODBMS is wat zo ver is, en wat zo makkelijk in gebruik is.

  • EfBe
  • Registratie: Januari 2000
  • Niet online
zneek schreef op maandag 14 februari 2005 @ 11:05:
Het probleem is dat ik nog geen kennis heb van ODBMSen. Daarom vond ik dit topic ook interessant: is er al een werkbaar ODBMS?
Er zijn er zat (geweest) :). Zoals IRIS van HP Labs (later heeft CA het opgekocht dacht ik), db4o (.NET/java), objectdb voor java enzovoort.
Overigens zijn er ook genoeg grote bedrijven die grote toepassingen maken mbv een ODBMS. Ik las bijv. ergens een voorbeeld van Motorola.
Tuurlijk, het is ook niet onmogelijk :) Er zijn ook zat mensen die een applicatie in een 3GL bouwen zonder enige vorm van OO en dat zijn soms erg grote toepassingen.
Nu kost een OR mapping opzetten me nog een paar uur tot een dag, op een project met misschien een urenbudget van 80 uur. Dat is toch al gauw 10%. Als ik via een ODBMS zonder 1 minuut werk mijn objecten kan persisten is dat een significante besparing. Maar nogmaals, ik twijfel of er al een ODBMS is wat zo ver is, en wat zo makkelijk in gebruik is.
een dag voor het opzetten van de or mapping? is wel erg veel.

Voor java kwam ik dit tegen: http://www.objectdb.com/
Je kunt ook deze proberen: http://www.db4objects.com/

Relatief weinig geld aan kwijt. objectdb ken ik totaal niet, db4objects een beetje, de query syntax van db4o is wel erg elegant. (en is GPL-ed)

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com

Pagina: 1