Serialization in Database
page 1 of 5
Published: 08 Jan 2007
Abstract
Serialization in databases is mainly used to store images as BLOBs (Binary Large OBjects), but it can also be used to store customized objects as per user's requirements, without altering or loosing the state of the object. This article aims at throwing some light about the basics of serialization and its use in databases.
by Bhuban Mohan Mishra
Feedback
Average Rating: This article has not yet been rated.
Views (Total / Last 10 Days): 41129/ 130

Introduction

Serialization is the process of converting an object into a stream of bytes which is easily transferable over the network and storing its current state on any permanent storage media like file or database for later use. De-serialization is the reverse process of Serialization, where the stored object is taken and the original object is recreated.

.NET provides classes through its System.Runtime.Serialization namespaces that can be used for serializing and de-serializing objects.

Figure 1: Serialization and De-serialization

 

Serialization can be divided into following types:

·         Binary Serialization: Binary serialization allows the serialization of an object into a binary stream and restoration from a binary stream into an object.

·         XML Serialization: XML serialization allows the public properties and fields of an object to be reduced to an XML document that describes the publicly visible state of the object.

·         SOAP Serialization: SOAP serialization is similar to XML serialization in that the objects being serialized are persisted as XML.

·         Custom Serialization: If the default serialization classes are insufficient due to the requirements, then this can be customized by implementing the ISerializable interface.

We will be dealing only with Binary Serialization as it is used for serialization in databases. In .NET, this facility is provided by the BinaryFormatter class present in System.Runtime.Serialization.Formatters.Binary namespace.


View Entire Article

User Comments

Title: good   
Name: lavanya
Date: 2012-12-27 2:36:26 AM
Comment:
gud article
Title: Good   
Name: Bimla
Date: 2011-12-31 9:34:41 PM
Comment:
I like this article very much..
Title: gud   
Name: kranthi
Date: 2011-06-14 3:05:39 AM
Comment:
GUD...
Title: great   
Name: nadeem
Date: 2010-11-30 10:26:32 AM
Comment:
great thats to cool i have been searching it for around d2 days finally and with gods grace i happen to land here cheers to you weell done !!!
Title: Serialization   
Name: Alekhya
Date: 2009-06-19 8:59:30 AM
Comment:
Excellent
Title: WONDERFUL, BUT...   
Name: GIADDOM VIGALE
Date: 2009-05-20 11:46:18 PM
Comment:
THIS ARTICLE WAS ACTUALLY WHAT I WANTED BUT COULD YOU MAKE AVAILABLE FOR ME AN ARTICLE ON "BINARY SERIALIZATION OF MYSQL BACKEND FOR CLIENT GRID DATA HANDLING"

THANKS.
Title: At Last!!   
Name: Peter Derwa
Date: 2008-10-23 5:13:10 AM
Comment:
At last one proper example of the thing i'm searching for all day.
Thanks allot!
Title: Thank You!   
Name: Vaibhav
Date: 2008-01-23 11:13:33 AM
Comment:
Very well written article and accompanying code.
Title: Thanks   
Name: Emrah Uslu
Date: 2007-12-30 2:09:05 PM
Comment:
The article is very useful and explanatory. Thanks a lot.
Title: gud   
Name: miffa
Date: 2007-09-17 9:44:33 AM
Comment:
It'a a good demo...........
Title: sqls   
Name: Percival
Date: 2007-08-01 3:26:54 PM
Comment:
u hav a greate things and now I'l search here only
Thanks a lot
Title: Serialization   
Name: Bhuban
Date: 2007-06-27 1:17:36 PM
Comment:
Hello Nitin,

Yes, serialization is same where ever you do. The matter is where do you store your serialized data i.e. in a file or in the database.
Title: Serialization   
Name: Nitin Sharma(.Net Developer)
Date: 2007-06-27 3:08:49 AM
Comment:
But how is DataBase Serialization different from the normal serilization?????????????..or is it same??????
Title: Awesome!   
Name: Mike J
Date: 2007-04-12 3:55:02 PM
Comment:
Thanks a ton, Bhuban!
Title: Re: Change in custom class   
Name: Bhuban M Mishra
Date: 2007-04-12 2:18:06 PM
Comment:
Hello Mike,

Just forgot to tell you that if you mark the variable as [NonSerialized], then you will not be able to serialize that variable. If you want to store the new variable in the database, then try the [OptionalField] attribute for the new variable. This should fulfill your requirement.

You can go through the following article as a reference. Look into Versioning.

http://msdn.microsoft.com/msdnmag/issues/04/10/AdvancedSerialization/

Thanks,
Bhuban
Title: Re: Change in custom class   
Name: Bhuban M Mishra
Date: 2007-04-12 1:56:31 PM
Comment:
Hello Mike,

If you want to change the structure and in the same time want to access the old data, then the thing you are referring to is called Versioning. Here, you use your old data as well as new data simultaneously.

The only way to do this is by marking the new property or variable (in your case the screenColorDepthBit variable) with NonSerialized attribute. This is what is referred to as Selective Serialization.

Ex. [NonSerialized] public int screenColorDepthBit;

Though I have not implemented it, I will try to implement it as soon as possible and update you.

Thanks,
Bhuban
Title: Change in custom class   
Name: Mike J
Date: 2007-04-12 1:24:37 PM
Comment:
This is a great write-up. I am planning on using your serialization to store a custom class similarly to your demonstration. I was wondering how a change in that structure might affect existing records in the database. For example, if I were add a property to your AppSettings class called:

public int screenColorDepthBit;

What would happen if I tried to deserialize an object into the new structure? I'll post another if I find out before anyone else does. Thanks!






Community Advice: ASP | SQL | XML | Regular Expressions | Windows


©Copyright 1998-2024 ASPAlliance.com  |  Page Processed at 2024-10-06 9:26:50 AM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search