Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C#
  4. C# Windows application and data store

C# Windows application and data store

Scheduled Pinned Locked Moved C#
databasecsharpmysqlsql-serversysadmin
11 Posts 6 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R Offline
    R Offline
    ryc
    wrote on last edited by
    #1

    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.

    K R R S 4 Replies Last reply
    0
    • R ryc

      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.

      K Offline
      K Offline
      Kannan Kalyanaraman
      wrote on last edited by
      #2

      Have you considered using MS Access. You dont have to install anything spl(drivers et al) for accessing them also you can password protect the db, I know CityDesk[^](a content mgmt. system) uses them extensively. Regards, Kannan

      R 1 Reply Last reply
      0
      • R ryc

        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.

        R Offline
        R Offline
        Rampas Tomas
        wrote on last edited by
        #3

        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

        1 Reply Last reply
        0
        • R ryc

          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.

          R Offline
          R Offline
          Rein Hillmann
          wrote on last edited by
          #4

          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.

          R 1 Reply Last reply
          0
          • R ryc

            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.

            S Offline
            S Offline
            StealthyMark
            wrote on last edited by
            #5

            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.

            N R 2 Replies Last reply
            0
            • S StealthyMark

              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.

              N Offline
              N Offline
              Nathan Blomquist
              wrote on last edited by
              #6

              For compression you could also check out the J# libraries. They have built in Zip compression. -Nathan --------------------------- Hmmm... what's a signature?

              K 1 Reply Last reply
              0
              • N Nathan Blomquist

                For compression you could also check out the J# libraries. They have built in Zip compression. -Nathan --------------------------- Hmmm... what's a signature?

                K Offline
                K Offline
                Kannan Kalyanaraman
                wrote on last edited by
                #7

                But do you need to ship a separate j# redistributable :~ Kannan

                N 1 Reply Last reply
                0
                • K Kannan Kalyanaraman

                  But do you need to ship a separate j# redistributable :~ Kannan

                  N Offline
                  N Offline
                  Nathan Blomquist
                  wrote on last edited by
                  #8

                  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?

                  1 Reply Last reply
                  0
                  • R Rein Hillmann

                    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.

                    R Offline
                    R Offline
                    ryc
                    wrote on last edited by
                    #9

                    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).

                    1 Reply Last reply
                    0
                    • S StealthyMark

                      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.

                      R Offline
                      R Offline
                      ryc
                      wrote on last edited by
                      #10

                      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.

                      1 Reply Last reply
                      0
                      • K Kannan Kalyanaraman

                        Have you considered using MS Access. You dont have to install anything spl(drivers et al) for accessing them also you can password protect the db, I know CityDesk[^](a content mgmt. system) uses them extensively. Regards, Kannan

                        R Offline
                        R Offline
                        ryc
                        wrote on last edited by
                        #11

                        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.

                        1 Reply Last reply
                        0
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • World
                        • Users
                        • Groups