XML Database Best Practices

Y

Yehia A.Salam

Hello,

I am building an ASP.net website that connects to an XML database, and was
wondering which is the best way to create the connection if I need frequent
access to the database, I have one of the three options:

1. Use one instance of XmlDocument thought the whole Application by
initializing the class in Global.asax in the Application_Start Event.
2. Use one instance per session using the Session_Start Event.
3. Create and initialse the XmlDocument as late as possible and close it as
soon as possible, by creating a new instance and close each time per access.

I I know that if I were using SQL database I would go with option 3 because
of the connection pooling and the security concerns, but this feature is not
available for XmlDatabases AFAIK, should I depend on the caching features of
ASP.net? , what is best design of the three to use?

Thanks
Yehia A.Salam
 
M

Mark Rae

I I know that if I were using SQL database I would go with option 3
because of the connection pooling and the security concerns, but this
feature is not available for XmlDatabases AFAIK, should I depend on the
caching features of ASP.net? , what is best design of the three to use?

Well, the obvious first question is why are you using XML as a database...?
That is absolutely not what it's designed for...
 
J

John Timney \(MVP\)

Your best option is to use a database. XML is good for holding some data but
its not a good option as a replacement for a database when your expecting
read and write operations.

If you really need to use an XML file as a data store, get used to how
asp.net uses caching and take advantage of it. If it doesn't change, then
use the app object - if it does, use caching and expire it as required. My
site uses RSS as the data feed for its content, and caches and expires the
data hourly - but there's no write operations so thats OK.

Regards

John Timney (MVP)
http://www.johntimney.com
http://www.johntimney.com/blog
 
Y

Yehia A.Salam

that's what I though but I have no other options as this is a university
project and I'm stuck with XML
 
Y

Yehia A.Salam

that's what I though but I have no other options as this is a university
project and I'm stuck with XML, you mean it's best to use one instance
through the whole application lifetime?
 
M

Mark Rae

that's what I thought but I have no other options as this is a university
project and I'm stuck with XML

That makes absolutely no sense whatsoever!

Why can't you use a Jet database (sometimes called an Access database), or
SQL Server Compact Edition...?
 
S

sloan

Barring what the others have said about "use a real database", here is what
I would do:


1. If the xml is pretty stable, then you could put it in the Application[]
object.

What I usually do is write a method:


public void XmlDocument GetTheDocument( bool forceRefresh )
{



//if the object is in the Application cache, return it

//if the object is not in the cache, create it , put it in the cache

//if the bool forceRefresh is set to true, ignore whats in the
Application object, get the freshest, put it in the cache for future people


}


2. If you want to query on it, then you'll have to write some XPath
statements, and use .SelectSingleNode or .SelectNodes
Working wiht xpath's and nodes is ... heavier than I like. So let's go to
#3

3. If the xml is in a format you can't control, you may be able to massage
it into DataSet friendly xml.
Why? If you could take the xml, make it DataSet friendly, and create a
strongly typed dataset for the data, you could have an object you can work
against.
For Select's and Row additions and such.

See
http://sholliday.spaces.live.com/Blog/cns!A68482B9628A842A!148.entry


and after you read it (its quick) you could do something like

MyStronglyTypedDS ds = new MyStronglyTypedDS();
ds.Authors.Select ("LastName='" + "Smith" + "');

Alot less Xpath stuff.


4. Look at this also:
http://sholliday.spaces.live.com/Blog/cns!A68482B9628A842A!125.entry

You can easily convert it to use Application (instead of Session). And have
a smarter holder.
Throw in some 2.0 Generics, and you can get slick with it.
That code is just a fancy wrapper for the Session object. But I like it
alot better than coding directly against the Session[] object.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,905
Latest member
Kristy_Poole

Latest Threads

Top