C# Windows application and data store
-
I am creating a windows application using c# and have the need for a robust data store. My application is similar to that of Outlook (different data, similar size + display) where the listbox that contains your mail items can have upwards of 10k entries and 100mb+ of data. I am researching different methods of storing this data so that the application can have easy access to it (not only for displaying but also random access and searching). Storing the data in an external database is not an option. The data store must be internal to the application (atleast from the user's point of view). I remember something about Outlook using a striped down version of sql server on the inside... I have looked a little into using embeded mysql server and I have seen a few people talking about doing the same. Can anyone provide feedback weather or not this is a good idea? Are there better alternatives for a data store that can handle this quantity of data effeciently? Thanks.
-
I am creating a windows application using c# and have the need for a robust data store. My application is similar to that of Outlook (different data, similar size + display) where the listbox that contains your mail items can have upwards of 10k entries and 100mb+ of data. I am researching different methods of storing this data so that the application can have easy access to it (not only for displaying but also random access and searching). Storing the data in an external database is not an option. The data store must be internal to the application (atleast from the user's point of view). I remember something about Outlook using a striped down version of sql server on the inside... I have looked a little into using embeded mysql server and I have seen a few people talking about doing the same. Can anyone provide feedback weather or not this is a good idea? Are there better alternatives for a data store that can handle this quantity of data effeciently? Thanks.
-
I am creating a windows application using c# and have the need for a robust data store. My application is similar to that of Outlook (different data, similar size + display) where the listbox that contains your mail items can have upwards of 10k entries and 100mb+ of data. I am researching different methods of storing this data so that the application can have easy access to it (not only for displaying but also random access and searching). Storing the data in an external database is not an option. The data store must be internal to the application (atleast from the user's point of view). I remember something about Outlook using a striped down version of sql server on the inside... I have looked a little into using embeded mysql server and I have seen a few people talking about doing the same. Can anyone provide feedback weather or not this is a good idea? Are there better alternatives for a data store that can handle this quantity of data effeciently? Thanks.
You can use classes from System.Data namespace and build the database only on the client. You would have DataSet, DataTable, DataView, constraints etc. Moreover you could serialize the data and read them when App start. Advantage: you work with database without any DB engine :). Tomas Rampas ------------------------------ gedas CR s.r.o. System analyst, MCP TGM 840, 293 01 Mlada Boleslav, Czech Republic Telefon/phone +420(326)711411 Telefax/fax +420(326)711420 rampas@gedas.cz http://www.gedas.com/ ------------------------------ To be or not to be is true... George Bool
-
I am creating a windows application using c# and have the need for a robust data store. My application is similar to that of Outlook (different data, similar size + display) where the listbox that contains your mail items can have upwards of 10k entries and 100mb+ of data. I am researching different methods of storing this data so that the application can have easy access to it (not only for displaying but also random access and searching). Storing the data in an external database is not an option. The data store must be internal to the application (atleast from the user's point of view). I remember something about Outlook using a striped down version of sql server on the inside... I have looked a little into using embeded mysql server and I have seen a few people talking about doing the same. Can anyone provide feedback weather or not this is a good idea? Are there better alternatives for a data store that can handle this quantity of data effeciently? Thanks.
Why not use MSDE? I'm not sure if this qualifies as an "external database". If you're looking at using mysql you're using an external database anyway. I really wouldn't go and reinvent the wheel though.
-
I am creating a windows application using c# and have the need for a robust data store. My application is similar to that of Outlook (different data, similar size + display) where the listbox that contains your mail items can have upwards of 10k entries and 100mb+ of data. I am researching different methods of storing this data so that the application can have easy access to it (not only for displaying but also random access and searching). Storing the data in an external database is not an option. The data store must be internal to the application (atleast from the user's point of view). I remember something about Outlook using a striped down version of sql server on the inside... I have looked a little into using embeded mysql server and I have seen a few people talking about doing the same. Can anyone provide feedback weather or not this is a good idea? Are there better alternatives for a data store that can handle this quantity of data effeciently? Thanks.
Internally, I'd work with DataSets and DataTables, no question. Because both MSDE and Access databases have quite expensive disk costs, I'd use the XML serialization features in conjunction with compression (SharpZipLib perhaps?) to persist these structures to disk. Here comes the clue: You can use the DPAPI (Data Protection API; look for CryptProtectData in MSDN) to encrypt them without worrying about key/password management.
-
Internally, I'd work with DataSets and DataTables, no question. Because both MSDE and Access databases have quite expensive disk costs, I'd use the XML serialization features in conjunction with compression (SharpZipLib perhaps?) to persist these structures to disk. Here comes the clue: You can use the DPAPI (Data Protection API; look for CryptProtectData in MSDN) to encrypt them without worrying about key/password management.
For compression you could also check out the J# libraries. They have built in Zip compression. -Nathan --------------------------- Hmmm... what's a signature?
-
For compression you could also check out the J# libraries. They have built in Zip compression. -Nathan --------------------------- Hmmm... what's a signature?
But do you need to ship a separate j# redistributable :~ Kannan
-
But do you need to ship a separate j# redistributable :~ Kannan
yeah, that is a down side... :( But with the app I am working on, it is a small thing compared to the rest (DirectX 9, MSDE, Framework 1.1)... so hell why not :) --------------------------- Hmmm... what's a signature?
-
Why not use MSDE? I'm not sure if this qualifies as an "external database". If you're looking at using mysql you're using an external database anyway. I really wouldn't go and reinvent the wheel though.
Sorry I didnt make this clearer in my original post. The particular flavor of mysql I was looking at is an embeded version that runs inside your application. You use their dll to interact with the database files. There is no 'external process'. What I am looking for is a solution that the user wont have to muck with. I want them to run my application, and that is it. I dont want them to have to start a database server first. Think Outlook Express. Thanks for the feedback, I will look into MSDE (not all that familiar with MS technologies).
-
Internally, I'd work with DataSets and DataTables, no question. Because both MSDE and Access databases have quite expensive disk costs, I'd use the XML serialization features in conjunction with compression (SharpZipLib perhaps?) to persist these structures to disk. Here comes the clue: You can use the DPAPI (Data Protection API; look for CryptProtectData in MSDN) to encrypt them without worrying about key/password management.
Forgive me if I am saying something that doesn't make sensen as I am not familiar with DataSets and tables... The amount of data I will be working with will typically be around 100mb (maybe 10k rows). If DataSets and DataTables keep everything in memory without using disk this would give my application took big of a memory footprint (although the access speed would be nice =) ). Also, I would be concerned with the amount of time it would take to serialize and compress the XML, then on load bring it all back in. A similar application to what I would like is Outlook Express. Potentially the user could have 3 years of email in several folders. In order to access their data all they do is run Outlook, they dont need to start an external database server of any kind... and the memory footprint is reasonable even if you have 10k email messages. Thanks for the incite, I will definitly look into DataSets and tables more to see what they are all about. It should definitly come in handy some day.
-
I have considered using an external database but realized it just isnt an option. I dont want the user to be required to run an external service just to use my application. They should be able to run it, and it alone, and have it display their data. Think Outlook Express and large quantities of email. Thanks.