By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,984 Members | 1,421 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,984 IT Pros & Developers. It's quick & easy.

XML Database Best Practices

P: n/a
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

May 30 '07 #1
Share this Question
Share on Google+
9 Replies


P: n/a
"Yehia A.Salam" <ye*****@hotmail.comwrote in message
news:C3**********************************@microsof t.com...
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...
--
http://www.markrae.net

May 30 '07 #2

P: n/a
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
"Yehia A.Salam" <ye*****@hotmail.comwrote in message
news:C3**********************************@microsof t.com...
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

May 30 '07 #3

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

"Mark Rae" <ma**@markNOSPAMrae.netwrote in message
news:OC**************@TK2MSFTNGP05.phx.gbl...
"Yehia A.Salam" <ye*****@hotmail.comwrote in message
news:C3**********************************@microsof t.com...
>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...
--
http://www.markrae.net
May 30 '07 #4

P: n/a
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?

"John Timney (MVP)" <x_****@timney.eclipse.co.ukwrote in message
news:-a*********************@eclipse.net.uk...
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
"Yehia A.Salam" <ye*****@hotmail.comwrote in message
news:C3**********************************@microsof t.com...
>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

May 30 '07 #5

P: n/a
if its fixed data - stick it in the app object.

Regards

John Timney (MVP)
http://www.johntimney.com
http://www.johntimney.com/blog
"Yehia A.Salam" <ye*****@hotmail.comwrote in message
news:F8**********************************@microsof t.com...
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?

"John Timney (MVP)" <x_****@timney.eclipse.co.ukwrote in message
news:-a*********************@eclipse.net.uk...
>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
"Yehia A.Salam" <ye*****@hotmail.comwrote in message
news:C3**********************************@microso ft.com...
>>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


May 30 '07 #6

P: n/a
"Yehia A.Salam" <ye*****@hotmail.comwrote in message
news:56**********************************@microsof t.com...
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...?
--
http://www.markrae.net

May 30 '07 #7

P: n/a
I would hazzard a guess its an assignment and it includes a non-optional
need to use an XML file source.

Regards

John Timney (MVP)
http://www.johntimney.com
http://www.johntimney.com/blog
"Mark Rae" <ma**@markNOSPAMrae.netwrote in message
news:up**************@TK2MSFTNGP03.phx.gbl...
"Yehia A.Salam" <ye*****@hotmail.comwrote in message
news:56**********************************@microsof t.com...
>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...?
--
http://www.markrae.net

May 31 '07 #8

P: n/a
"John Timney (MVP)" <x_****@timney.eclipse.co.ukwrote in message
news:TY******************************@eclipse.net. uk...
>I would hazzard a guess its an assignment and it includes a non-optional
need to use an XML file source.
Hmm - yes, you are probably right...
--
http://www.markrae.net

May 31 '07 #9

P: n/a

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.



"Yehia A.Salam" <ye*****@hotmail.comwrote in message
news:C3**********************************@microsof t.com...
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

May 31 '07 #10

This discussion thread is closed

Replies have been disabled for this discussion.