Permalänk

Objektorienterade databaser

Som något av en nybörjare i programmering vilket jag får anses vara i detta sällskap har jag börjat tröttna på att göra alla mina c++-filhanteringar till och från textdokument; det känns verkligen b-mässigt. Därför vill jag avancera lite och skulle gärna vilja veta om någon här har haft några erfarenheter av c++ i kombination med objektorienterade databaser och i så fall i vilken ända man ska börja nysta för att lära sig det. Jag har efter en halvhjärtad google-session insett att jag inte förstår ett jota av hur man ska integrera c++ kodning med databaser överhuvud taget. Skulle väldigt mycket uppskatta hjälp på detta området.

Permalänk
Medlem

Jag vet inte riktigt vad du menar med objektorienterade databaser. Men du kanske syftar på vanliga databaser, typ MySQL och Access? Access har jag ingen större erfarenhet av i C++ och egentligen inte MySQL heller. Men vad jag vet är att det finns ett lib som heter mysql++ som man kan använda i C++ för att interagera med en mysql-databas.

Detta kan såklart bli lite klumpigt att använda i ett litet program, men om du ska göra någon slags server kan det kanske fungera, återigen är jag osäker på vad du ska ha det till. Mssql finns ju också, och det är kanske mer anpassat för dina mål. Hursomhelst måste du nog lära dig SQL och nästa steg är väl att ta reda på vilken databas som passar dig bäst, för att sedan fortsätta och ta reda på hur man brukar använda dessa med C++.

Jag vill dock påpeka att det är inget jag har sysslat med, men det är några tips iallafall som du kan kolla upp.

Permalänk
Avstängd

Re: Objektorienterade databaser

Citat:

Ursprungligen inskrivet av Vankelmod
Som något av en nybörjare i programmering vilket jag får anses vara i detta sällskap har jag börjat tröttna på att göra alla mina c++-filhanteringar till och från textdokument;

kör ner datat till XML filer, kanon för att spara objekt från c++

Visa signatur

Programmerare med C++ som huvudspråk.

Permalänk

Mysql++ har jag tittat lite på och en header som heter sqlwrapped eller någonting i den stilen men jag kände att det var för statiskt och osmidigt för den sotens information jag vill lagra. Sedan hittade jag ett textstycke om något som heter OODBMS och är objektdatabaser som enligt vad jag förstår är kapabla att lagra hela objet utan att man måste bryta isär dem i småbitar. Rätta mig om jag har fel.

Permalänk
Medlem

Aha, då är jag med i båten. Samtidigt tycker jag att spara ner ett helt objekt verkar vara slött, hehe. XML är faktiskt ett väldigt bra format att spara undan data i, eftersom det är så väldigt portabelt och lätthanterat på alla sätt och vis.
(varför tänkte jag inte på det först?)

Jag är inte så insatt i sådana databaser du pratar i, men jag tycker du skall betänka fördelarna med XML, för att dela upp ett objekt behöver ju inte vara speciellt svårt såvida det inte är enorma saker.

Nåja, jag drar mig nog ur här tror jag. Jag önskar dig lycka till!

Permalänk

Det jag hade tänkt lagra är i första hand en mängd större objekt bestående av massor av variabler och underklasser varfrö jag inte vill besvära mig med att spara varje variabel för sig i en strukturerad tvådimensionell databas. Vad beträffar objektorienterade databaser vet jag inte mer än du, hittade lite information och tyckte att det verkade tufft, och undrade om någon annan sysslat med detta, hittade en tråd som skrev lite om ORD också, vill minnas attt det är något liknande.

Permalänk
Medlem

Hehe, även jag tycker det låter väldigt intressant.

Nu hoppar jag tillbaka in i diskussionen ändå, för det jag tänkte på först när jag läste var det här:

http://www.parashift.com/c++-faq-lite/serialization.html#faq-...

..och nu när jag hört mer om det du vill göra stämmer det kanske, och det skulle ju nästan vara lite smidigare, troligtvis? Har aldrig testat det själv - men har velat göra det länge.

Permalänk
Medlem

varför inte titta på något ramverk för ORM?

Visa signatur

The power of GNU compiles you!
"Often statistics are used as a drunken man uses lampposts -- for support rather than illumination."

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av Vankelmod
Det jag hade tänkt lagra är i första hand en mängd större objekt bestående av massor av variabler och underklasser

Välj XML för annars kommer du ångra dig.
Databaser är gjorda för något helt annat än att lagra information för något program eller likanande.
Behöver du logga mycket information när programmet körs så kan en databas fungera bättre. Lagrar du information för flera användare kan det också passa bättre.

De flesta program idag går över till att lagra sin information i XML, Word, Excel och andra.

Visa signatur

Programmerare med C++ som huvudspråk.

Permalänk

Det är möjlingt men jag kan inte säga att jag faktiskt förstår de tutorials jag hittat som gäller xml parsing och serialisering för c++.

Permalänk
Medlem

Nog kan väl databaser vara ett bra alternativ ibland för program. Det kan ju vara så att man vill söka efter vissa poster och sortera hittan och dittan, kör man mot en sql-databas behöver man ju inte sitta och harva igenom en massa filer manuellt.

XML-filer == text-filer. Deras förtjänst handlar väl mest om utbyte av data. Om dina filer bara berör ett och samma program så kan det väl inte finnas nån anledning till att bloata dem med xml-krimskrams. Möjligen att det finns xml-bibliotek som hjälper till med att parsa och navigera i en xml-fil.

Jag har aldrig använt det men jag har hört surras om sqlite som verkar vara en lämplig databas för dina syften.

ORM är kanske ett alternativ, men jag vet inte vad som finns i den vägen för C++.

Visa signatur

flaah!

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av robino_
Jag vet inte riktigt vad du menar med objektorienterade databaser. Men du kanske syftar på vanliga databaser, typ MySQL och Access?

Nix, det finns faktiskt objektorienterade databaser. De var (någorlunda) populära i slutet av nittiotalet, men nu verkar de helt ha försvunnit från marknaden...

Citat:

Ursprungligen inskrivet av gosh
Välj XML för annars kommer du ångra dig.

Ehhm. Nej...

Visserligen har vissa databasmotorer direkt stöd för XML som datatyp (t.ex. SQL Server 2005), men det är sällan så värst effektivt. Det bästa sättet är som kode ovan nämnde att använda ett ORM-ramverk (Object-Relational Mapper). För Java och .NET finns (N)Hibernate, vet inte riktigt vad som finns för C++ men jag skulle bli förvånad om det inte finns något bra där också.

Visa signatur

OSIRIS GUITAR - youtube-kanal om elgitarrer, mixning och teknik i hemmastudio

Permalänk
Avstängd

Oberoende om du väljer xml eller DB så är objekt mappning det enda rätta.
Man vill inkapsla Persistensmediumet i datalagret och enbart skicka ut modelobjekt från den.

Visa signatur
Permalänk
Avstängd

varför xml är så bra.
- Det finns många verktyg för att titta i xml filer.
- finns en del parsrar och det är relativt lätt och skriva en själv
- lätt och modifiera data om man nu råkat göra en felaktig struktur. alla som programmerat objekt vet att de ändras en del...
- finns även hantering för att förändra information
- uppgradera data eller bara läsa delar av informationen är inga problem

databaser
- krävs det att man installerar någon blaffedatabas så är det bara och glömma
- det behövs gränssnitt för att prata med databasen, drivare mm om man nu inte väljer någon liten sak (sqlite? )
- ta noga reda på hur det blir med uppgraderingar mm av programvara
- databaser har självklart sina fördelar med (räknar inte upp dem här=

Visa signatur

Programmerare med C++ som huvudspråk.

Permalänk
Avstängd

Tja. jag skulle vilja se ett program som SAP implementeras med XML. Alla verktyg har sitt syfte! Mycket data och xml suger, varför? Ofta tar uppmärkningen mer plats än datat den uppmärker...

Men visst, i lätta clientapps med lite data eller som settingsfiler, etc, är xml perfekt.

Visa signatur
Permalänk
Medlem
Citat:

Ursprungligen inskrivet av gosh
varför xml är så bra.
- Det finns många verktyg för att titta i xml filer.
- finns en del parsrar och det är relativt lätt och skriva en själv
databaser
- det behövs gränssnitt för att prata med databasen, drivare mm om man nu inte väljer någon liten sak (sqlite? )

Jag är nyfiken, vad är skillnaden?
Förstår inte varför det skulle vara bättre att ha ett XML-lib för att handskas med XML-filer än att ha ett SQL DB-lib för att handskas med SQL DB.

Permalänk
Medlem

Beror lite på vad man vill spara. Om du vill spara det som en databas så kanske sqlite kan vara något. Har själv använt det för en del grejer. Vädligt mysigt.

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av gosh
varför xml är så bra.
- Det finns många verktyg för att titta i xml filer.
- finns en del parsrar och det är relativt lätt och skriva en själv
- lätt och modifiera data om man nu råkat göra en felaktig struktur. alla som programmerat objekt vet att de ändras en del...
- finns även hantering för att förändra information
- uppgradera data eller bara läsa delar av informationen är inga problem

Ah, missförstod din idé - jag trodde att du förespråkade att lagra XML:en i databasen.

För all del, vill man inte blanda in en databas alls så är ju serialisering till XML ett alternativ.

Det är väldigt sällan mina projekt inte skulle innehålla en databas ändå, så jag brukar (nästan) aldrig välja fillösningen. Om inte annat så brukar skrivrättigheter till disk ofta vara ett större problem än att sätta upp databasanslutningen.

Visa signatur

OSIRIS GUITAR - youtube-kanal om elgitarrer, mixning och teknik i hemmastudio

Permalänk

Efter visst övervägande verkar serialisering och xml det lämpligaste alternativet(eftersom objekten är stora men inte särskilt komplexa i sin uppbyggnad) om man bara kan lista ut hur det fungerar. Det blir visst till att köra huvudet i xml-parsing riktigt ordentligt.

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av KTottE
Jag är nyfiken, vad är skillnaden?
Förstår inte varför det skulle vara bättre att ha ett XML-lib för att handskas med XML-filer än att ha ett SQL DB-lib för att handskas med SQL DB.

testa de olika lösningarna så märker du skillnaden, dessutom så om man är rätt ok på parsrar så kan man ganska snabbt skriva en egen för xml. finns många som fungerar utmärkt med om man söker lite (med källkod). har själv skrivit tre olika totalt

Visa signatur

Programmerare med C++ som huvudspråk.

Permalänk
Avstängd

Det var det sämsta svar jag hört.. Testa det olika lösningarna?
nej bättre får du allt prestera. ge mig ett konkret exempel där C++ skulle vara bättre rent polymorfiskt än C#...

edit: äh, ok det är jag som är full.. trodde du menade att testa de olika mönstren för att se vilken som är bäst på inkapsling... fast du får gärna komma med exempel endå...

Visa signatur