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. The Lounge
  3. Replacement for SQL Server Compact (CE)?

Replacement for SQL Server Compact (CE)?

Scheduled Pinned Locked Moved The Lounge
databasecsharpmongodbsql-serversqlite
24 Posts 11 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.
  • P PIEBALDconsult

    Back in 2009, I began a personal project, using SQL Server (Express) and -- after a month or two -- got it to a certain point before losing interest. Around 2014 (if I recall correctly), I had the idea of reworking it to use SQL Server or SQL Server Compact depending on what the user specifies at run-time. This is not difficult. If I recall correctly, Subversion can be configured to use one of two (?) database backing stores. I have long sought a project to show off my ideas about implementing an SQL-based application which can be configured to use any one of a number of supported ADO.net providers. I just didn't want to expend a lot of effort on it at that time. Yet it has remained in the back of my mind. This summer I have some time to have another look at it and I see that SQL Server Compact is currently out of support. (As with OleDB, I hope Microsoft reconsiders and releases a new version, but I'm not holding my breath.) As you may know, I don't really care that something is out of support, but finding some other product is still desirable. What I envision is the ability to have the application, it's data file(s), and whatever DLL(s) is required on a flash drive, and just run it from the flash drive on "any" suitable Windows PC -- not relying on the host to have anything more than a vanilla .net install. What I am looking for: SQL-92 compliance ADO.net provider No software/driver to be installed on the host From my few experiments, SQL Server Compact satisfies all of these criteria. From what I can tell, SQL Server LocalDB does not meet all of these criteria -- but maybe I misread something. Of course, I could add support for that as well anyway. I have looked around online a bit and not found anything which seems to be what I want. The term "embedded database" comes up a lot, but I don't want NoSQL or a Key/Value store or anything which must be installed. I will likely proceed with using SQL Server Compact and add support for other systems as they come to light. This particular application is really just a proof-of-concept anyway. I just wonder whether or not anyone here knows of something I've missed.

    J Offline
    J Offline
    jkirkerx
    wrote on last edited by
    #15

    I can that happening, having the app on a flash drive, plug it in, but have the app just use a cloud database service instead. AWS will give you a year free if you sign up a personal account for learning, and the monthly fee may not be that expensive after the year is over. But consider how much you can learn, and how awesome your flash drive app can be, by using a cloud database provider. Plus you can build in other cloud services as well. There are many choices of database technologies available to choose from, and lots of current support for them.

    If it ain't broke don't fix it Discover my world at jkirkerx.com

    P 1 Reply Last reply
    0
    • D DerekT P

      Sounds as if (unless I've misunderstood) that you've got two separate requirements: 1. Build an app where you can just "plug in" any suitable datastore at runtime. 2. Build an app that has no dependencies on any dbms already existing, just install and run a single package #1 is basically around separating out logic and data access layers; the .Net apps I write have a separate data layer that is provider-agnostic and just tweaking a single constant switches between MySql, SqlServer, Postgres etc. The value could just as well be provided at runtime. #2 Once you've done #1, #2 becomes easier as there's no "dependence" in the app on SQL standards, since that's all the "other side" of the separation. Hence I can swap MySql for SqlServer (though the d/b does need to have stored procs that manage the database logic - queries etc). You could even consider embedded MySql (runs on Win10/11, and Win Server 12/16/19/22)

      Telegraph marker posts ... nothing to do with IT Phasmid email discussion group ... also nothing to do with IT Beekeeping and honey site ... still nothing to do with IT

      C Offline
      C Offline
      chrisseanhayes
      wrote on last edited by
      #16

      the biggest drawback to "separating your data layer" idea is that people forget just how much logic is baked into their SQL calls. people are writing business logic in their SQL. the challenge is to see if you can "separate" that into a layer. the only idea I had was DSLs. those are really hard to implement. this is why i can see someone wanting to keep the sql and switch the implementation.

      J 1 Reply Last reply
      0
      • J jkirkerx

        I can that happening, having the app on a flash drive, plug it in, but have the app just use a cloud database service instead. AWS will give you a year free if you sign up a personal account for learning, and the monthly fee may not be that expensive after the year is over. But consider how much you can learn, and how awesome your flash drive app can be, by using a cloud database provider. Plus you can build in other cloud services as well. There are many choices of database technologies available to choose from, and lots of current support for them.

        If it ain't broke don't fix it Discover my world at jkirkerx.com

        P Offline
        P Offline
        PIEBALDconsult
        wrote on last edited by
        #17

        NO! Not cloud FFS! No reliance on a network connection either.

        J 1 Reply Last reply
        0
        • P PIEBALDconsult

          NO! Not cloud FFS! No reliance on a network connection either.

          J Offline
          J Offline
          jkirkerx
          wrote on last edited by
          #18

          Oh.... Tin Foil hat stuff, sounds cool! Reminds me of that movie "Enemy of the State" SQLite, I don't like it, but could like it if I want to keep secrets. That's something that could be monetized.

          If it ain't broke don't fix it Discover my world at jkirkerx.com

          1 Reply Last reply
          0
          • C chrisseanhayes

            the biggest drawback to "separating your data layer" idea is that people forget just how much logic is baked into their SQL calls. people are writing business logic in their SQL. the challenge is to see if you can "separate" that into a layer. the only idea I had was DSLs. those are really hard to implement. this is why i can see someone wanting to keep the sql and switch the implementation.

            J Offline
            J Offline
            jschell
            wrote on last edited by
            #19

            chrisseanhayes wrote:

            people are writing business logic in their SQL.

            Hopefully because they realized there is a business need for that. One that is solved by that exact logic. Absolutism such as 'no business logic in the database' can lead to very problematic business solutions. I saw that first hand at a company where the product that was bought as 'database independent' had two guys on site for weeks (and our DBA dedicating a lot of time too) trying to get their app to run anywhere close enough that the company could even conceivably attempt to use it. When I quit that job they were still trying and it was still hours longer than it needed to be. The DBA and I both agreed that the problem was because they were dragging the entire database across the network so they could process it.

            C 1 Reply Last reply
            0
            • P PIEBALDconsult

              Back in 2009, I began a personal project, using SQL Server (Express) and -- after a month or two -- got it to a certain point before losing interest. Around 2014 (if I recall correctly), I had the idea of reworking it to use SQL Server or SQL Server Compact depending on what the user specifies at run-time. This is not difficult. If I recall correctly, Subversion can be configured to use one of two (?) database backing stores. I have long sought a project to show off my ideas about implementing an SQL-based application which can be configured to use any one of a number of supported ADO.net providers. I just didn't want to expend a lot of effort on it at that time. Yet it has remained in the back of my mind. This summer I have some time to have another look at it and I see that SQL Server Compact is currently out of support. (As with OleDB, I hope Microsoft reconsiders and releases a new version, but I'm not holding my breath.) As you may know, I don't really care that something is out of support, but finding some other product is still desirable. What I envision is the ability to have the application, it's data file(s), and whatever DLL(s) is required on a flash drive, and just run it from the flash drive on "any" suitable Windows PC -- not relying on the host to have anything more than a vanilla .net install. What I am looking for: SQL-92 compliance ADO.net provider No software/driver to be installed on the host From my few experiments, SQL Server Compact satisfies all of these criteria. From what I can tell, SQL Server LocalDB does not meet all of these criteria -- but maybe I misread something. Of course, I could add support for that as well anyway. I have looked around online a bit and not found anything which seems to be what I want. The term "embedded database" comes up a lot, but I don't want NoSQL or a Key/Value store or anything which must be installed. I will likely proceed with using SQL Server Compact and add support for other systems as they come to light. This particular application is really just a proof-of-concept anyway. I just wonder whether or not anyone here knows of something I've missed.

              G Offline
              G Offline
              Glen Harvy 0
              wrote on last edited by
              #20

              I've been using VistaDB for many years and recommend it highly.

              Glen Harvy

              1 Reply Last reply
              0
              • J jschell

                chrisseanhayes wrote:

                people are writing business logic in their SQL.

                Hopefully because they realized there is a business need for that. One that is solved by that exact logic. Absolutism such as 'no business logic in the database' can lead to very problematic business solutions. I saw that first hand at a company where the product that was bought as 'database independent' had two guys on site for weeks (and our DBA dedicating a lot of time too) trying to get their app to run anywhere close enough that the company could even conceivably attempt to use it. When I quit that job they were still trying and it was still hours longer than it needed to be. The DBA and I both agreed that the problem was because they were dragging the entire database across the network so they could process it.

                C Offline
                C Offline
                chrisseanhayes
                wrote on last edited by
                #21

                every time you use sql server for more than crud then you are married to sql server. joining, aggregating, filtering, projections, unions these are just a few of the business logic decisions totally married to your database implementation. they are next to impossible to implement solely in code without reinventing the wheel. that's just what all these other databases are doing. No-Sql (like Cassandra), kvp (Redis) outside of crud operations they present just as hard of a curve for creating the above needs.

                J 1 Reply Last reply
                0
                • C chrisseanhayes

                  every time you use sql server for more than crud then you are married to sql server. joining, aggregating, filtering, projections, unions these are just a few of the business logic decisions totally married to your database implementation. they are next to impossible to implement solely in code without reinventing the wheel. that's just what all these other databases are doing. No-Sql (like Cassandra), kvp (Redis) outside of crud operations they present just as hard of a curve for creating the above needs.

                  J Offline
                  J Offline
                  jschell
                  wrote on last edited by
                  #22

                  chrisseanhayes wrote:

                  every time you use sql server for more than crud then you are married to sql serve

                  False. And I have experience in the following # Applications which used multiple databases. Including stored procedures. # Migrating from one database to another. In one case I did that (me alone) in one week when switching from SQL Server to Oracle. For that case I did have the advantage that I designed and implemented the original layer. What ties one to a database is not the database nor the actual interface to the database but rather inexperienced developers who attempt to solve problems with a lack of knowledge about applications and databases.

                  chrisseanhayes wrote:

                  joining, aggregating, filtering, projections, unions

                  You mean of course...SQL. Yes if one lacks knowledge in that and attempts to roll large enterprises with an ongoing lack of knowledge then that will be a problem. But that is true for everything. If one decides that an entirely new tech stack (with no experience) is the way to go. Or even if one starts a company with only tech guys with no idea how to actually sell or even what the market is.

                  chrisseanhayes wrote:

                  they are next to impossible to implement solely in code without reinventing the wheel.

                  Not even sure what that means. Databases are in fact written code. So yes code can implement joins, etc. But I have also seen inexperienced people attempt to do that in non database code. And I already provided an example of that in the post that you responded to.

                  chrisseanhayes wrote:

                  No-Sql (like Cassandra), kvp (Redis) outside of crud operations

                  I don't believe either example you mentioned is intended to be a full persistence store solution. So not really sure what your point is.

                  C 1 Reply Last reply
                  0
                  • J jschell

                    chrisseanhayes wrote:

                    every time you use sql server for more than crud then you are married to sql serve

                    False. And I have experience in the following # Applications which used multiple databases. Including stored procedures. # Migrating from one database to another. In one case I did that (me alone) in one week when switching from SQL Server to Oracle. For that case I did have the advantage that I designed and implemented the original layer. What ties one to a database is not the database nor the actual interface to the database but rather inexperienced developers who attempt to solve problems with a lack of knowledge about applications and databases.

                    chrisseanhayes wrote:

                    joining, aggregating, filtering, projections, unions

                    You mean of course...SQL. Yes if one lacks knowledge in that and attempts to roll large enterprises with an ongoing lack of knowledge then that will be a problem. But that is true for everything. If one decides that an entirely new tech stack (with no experience) is the way to go. Or even if one starts a company with only tech guys with no idea how to actually sell or even what the market is.

                    chrisseanhayes wrote:

                    they are next to impossible to implement solely in code without reinventing the wheel.

                    Not even sure what that means. Databases are in fact written code. So yes code can implement joins, etc. But I have also seen inexperienced people attempt to do that in non database code. And I already provided an example of that in the post that you responded to.

                    chrisseanhayes wrote:

                    No-Sql (like Cassandra), kvp (Redis) outside of crud operations

                    I don't believe either example you mentioned is intended to be a full persistence store solution. So not really sure what your point is.

                    C Offline
                    C Offline
                    chrisseanhayes
                    wrote on last edited by
                    #23

                    thank you, everything you said supported what I said, you just slapped some "no"s in there to make it sound like your answer. kudos superman

                    J 1 Reply Last reply
                    0
                    • C chrisseanhayes

                      thank you, everything you said supported what I said, you just slapped some "no"s in there to make it sound like your answer. kudos superman

                      J Offline
                      J Offline
                      jschell
                      wrote on last edited by
                      #24

                      "every time you use sql server for more than crud then you are married to sql serve" And that is still absolutism. Which in practical programming does not work.

                      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