Replacement for SQL Server Compact (CE)?
-
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.
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
-
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
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.
-
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
NO! Not cloud FFS! No reliance on a network connection either.
-
NO! Not cloud FFS! No reliance on a network connection either.
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
-
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.
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.
-
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.
I've been using VistaDB for many years and recommend it highly.
Glen Harvy
-
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.
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.
-
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.
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.
-
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.
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
-
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