webForumDet fria alternativet

Spara objekt i databasen

.NET

4 svar · 527 visningar · startad av speedy

Medlem sedan dec. 200283 inlägg
Frågan#1

Jag håller på med ett projekt där det finns ett behov av att göra ett antal värdeobjekt beständiga. Eftersom det inte finns någon objektdatabas tillgänglig så har vi försökt att göra en översättning av objekten till en relationsdatabas.

Syftet med det hela är att skapa ett artikelregister där man kan helt fritt kan skapa sina egna kategorier av artiklar och därmed specificera vilka attribut som en kategorikategori skall innehålla. Detta utan att lägga upp nya tabeller så fort man vill lägga upp en ny kategori.

I vår nuvarande lösning har vi bla. separerat artiklarna från dess attribut för att fritt kunna tilldela attribut till en artikel. I databasen blir detta dock fem tabeller bara för att kunna lägga upp artiklarna och dess kategorier. Denna lösning fungerar bra men den är inte speciellt lättarbetat och det känns inte som att det är så bra ur prestandasynpunkt.

Jag funderar därför på om det finns någon bättre lösning...

Går det t.ex. att spara objekten i binär form i databasen om dessa är serializable?

Andra ideér eller förslag är välkomna.

Miljön är ASP.NET/C#, komponenter och SQL Server.

Medlem sedan dec. 19998 577 inlägg
#2

Av egen erfarenhet så är fem tabeller inte alls så mycket i en relationsdatabas, det låter rimligt i ett "artikel"-system.

Ur prestandasynpunkt så skall det till väldigt mycket data för att det skulle märkas, hur mycket poster är det?

Vad är det för objekt det handlar om?

Medlem sedan maj 20012 812 inlägg
#3

Visst kan du serializera ditt objekt och spara i databasen, både som binärt och som vanlig text.

Denna lösning är nog långsamare än din nuvarande lösning med 5 tabeller. Och du får ALDRIG NÅGONSIN, ändra din class- artikel efter det att du sparat ner den till databas, du kan alltså inte bara lägga till ett nytt fält för du kom på att du måste ha namnet med på artiklen.

Gör du det så stämmer inte det serializerade objektet i databasen överens med din class längre och du kommer få problem när du vill hämta denna data.

Om du använder dig av en O/R-mapper så behöver du inte bry dig om hur många tabeller som du har i databasen, du skriver din class med de variabler som den behöver, och skapar tabellerna som behövs. Efter det när du vill ändra och spara din objekt så kör du bara en save på objektet och den fixar till så att all data hamlar i rätt tabell.

Det betyder att det inte blir svårare att jobba med det systemet än med ett serializerat objekt i databasen.

- M

Medlem sedan juni 20008 205 inlägg
#4

Dessutom, om man lagrar ett serialiserat objekt som BLOB eller CLOB i en databas kan man ju inte indexera de olika värdena i objekten, vilket lär söla ner än mer.

Medlem sedan dec. 200283 inlägg
#5

Tack för infon!

Jag ska kolla lite på vad en "O/R-mapper" är för något. Av vad jag hittils förstått så skulle det nog göra vår modell lite mer lättarbetad iaf.

255 ms totalt · 3 externa anrop · v20260731065814-full.aa8cfc83
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)