Database engines Comparison - Windows Mobile - sql-server

What are the different database options on Windows Mobile available?
I have used CEDB and EDB for linear dataset needs.
I have heard of SQL server 2005 Mobile edition. But what are the advantages over others (if there is any)

I've found both sqllite and codebase to be easy to implement and install. Easier (and more stable) than the Microsoft options, which seem to be in serious flux.

Also take a look at SQLite for Windows CE. There are also .NET bindings available to use it from the Compact Framework.

I think it's called SQL Server Compact now. The advantages are that it's syntax-compatible with full sql server in that any query you write for it is guaranteed to work on an equivalent SQL Server Express/Standard/Enterprise DB. The reverse isn't necessarily true, though.

Do you need SQL support? If not, look at a lightweight embeddable DBM-like solution. I've used Tokyo Cabinet for a number of embedded solutions where SQL wasn't necessary and have greatly enjoyed the speed and flexibility it provides. YMMV.

We use Sybase Ultralite. Before that we were using Codebase to connect to foxpro tables. I'm not a mobile developer but I understand we chose it over SQL Server for performance and memory usage. Also we found they had pretty good support when we found any issues.

I would avoid using CEDB any more as I beleave that WM7 is dropping support for it.

Related

How To Store / Query Data In VB.NET?

At the moment I am using Access & an OleDb connection to store data. I went down this route originally because I though that this was the best way for applications that I am distributing to my clients.
I would prefer to use something like SQL Server but is this a good idea for software I am distributing? Does the average Joe's PC have SQL Server pre-installed? If not, I suppose I can provide them with a link to download it for free?
Is there any better alternatives to Access / SQL Server?
You can use SQL Server CE and bundle the database with your application.
See this How to on MSDN.
You haven't really given enough information to answer this specifically but I'll answer generally:
Does the average Joe's PC have SQL Server pre-installed?
No.
If not, I suppose I can provide them with a link to download it for free?
Yes, Microsoft has fairly generous 'free' versions of SQL server Express for small database sizes (<1GB) and small numbers of CPU's (1). Check here.
Are there any better alternatives to Access / SQL Server?
It depends on your app, your skill and how you define better.
If you are running sql-server you can very easily use linq2sql and have strongly typed data base objects that offer clean vb.net code. The linq technologies are worth learning IMO. The tools in VS2010 work well with sql-server databases. Other more modern Microsoft tools are available too that integrate very easily (entity framework and lightswitch (which I don't have experience with)).
For small local databases sqlite works well. If your project is very small and the sql is simple this is a very light weight solution. This is very small and very fast and is used everywhere.
If a server is needed and low cost matters mysqlis a solid open source server though it is now under private ownership.
Again depending upon your application off-site hosting of a database might be a viable solution. I have a client that is still running their db in the cloud with a low cost 2008 SQL Server provider.

Good Database Solutions for small-medium Traffic Sites and Silverlight

What are some good database solutions that support Silverlight and are solid for a small-medium traffic website
Easy to use/Manage is a very strong plus
edit: Forgot to mention that the database needs to be very smartphone-friendly, it needs to be able to work with devices on iOS, Android, and Windows Phone 7
It depends on what you term small-medium. I would say SQL Server Express should suit your needs.
It is free, but your database size cannot be more than 10 GB. It also limits the resources that can be used from the server.
http://www.microsoft.com/express/Database/Default.aspx
Silverlight is not bound to a database.
Every database available to ADO.NET is usable within .NET.
MSSQL Express is a good solution (especially in .NET env) as well as any other like MySQL.
SQL Server Express is a pretty obvious choice. Integrates very well, tons of first class documentation, very reliable, good management studio, upgradeable to more powerful versions etc.
Considering your edit, it appears to be a windows phone 7 app that you're going to make, and that you want the database stored on the phone (as opposed to connecting to an internet based datasource). In that case, you might want to take a look at SQL Server 2008 Compact.
Scott Hanselman has an article about using EF Code First with SQL Server Compact (His solution does not specifically include Silverlight, but it works just the same iirc) here.

Delphi - Database Server

Which of the Database servers would you people recommend for using in a moderate-to-large scale (will vary from customer to customer) application.
I know MS SQL but since the app will be developed using delphi the .net framework is kind of annoying to deploy aswell. Also how realiable is Interbase.
Thanks in advance.
Since I have been developing in Firebird for several years now, if I were in your situation, I would look no further. The fact that you can develop your own extension library (udf library) in Delphi makes it very attractive to start with. Some of the new SQL constructs like the List aggregator and Common Table Expressions are icing on the cake. Deployment is very light (under 5 MB), and the support is excellent including incredible tools like IBExpert. I used MS SQL Server in a big company I worked at a few years ago and I would choose Firebird over MS SQL Server.
Data Access to SQL Server has nothing to do with the .NET framework. Delphi can connect just fine to SQL Server.
In terms of database engines that work with delphi, another you can consider is the Sybase Advantage Database server
Interbase is as reliable as they come. In fact, I'd like to get a job as an Interbase DBA, because I could uses the sleep.
I would definitely recommend looking at Interbase by Embarcadero or the open-source sibling, Firebird. Both are very well supported by Delphi by means of native, high-performance db-access components and such.
Interbase is a totally rock-solid database - I would put it on a par with SQL Server or Oracle. It's totally capable of handling medium to high traffic for at least 50-100 users concurrently, no problem at all.
Another two worth competitor would be Elevate DB and Nexus DB. Both grew out of Delphi file-based database systems, and both have been around for quite some time (in one form or another) and are well proven, widely used, well tested.
Marc
This seems back-to-front to me. I would choose the database server first, then select the development environment that works best with the selected database.
SQL Server. For 2005, you can make your own SQL Server deployment application that automates installing of Windows Installer 3.1, .NET Framework 2.0, SQL Server 2005 then installing the database through generatated SQL script (Feel free to contact me if you need help with it, I'd gladly help you). If you still insist on not installing .Net framework which is 22MB, I'd say go with SQL Server 2000 as you can still upgrade it to 2005+ when you'd like to.
Also, I had been using Advantage Database Server for few years and it's alright, Few DLLs to copy and you're ready to go even if you'd like to switch to remote version.
Both Server and Client installations of MS SQL require the .NET framework on the target machine. That's about it. If we can use ms sql without .net on target machine then ms sql is fine.
I have being developing in Delphi for about 6 years using distinct editions of SQL Server, and this database server behaved very very well. All of them were critical applications.
So, I would recommend you to keep with it.If you don't want to use .NET with and keep SQL Server I would recommend an older version pre-2005.
This isn't really an answer, but some things you might like to consider before making your mind up.
What do you mean by moderate-to-large scale? Do you mean by the number of concurrent users or by the amount of data being stored?
Are you going to be supporting the database as well when it's deployed, or might the customer have their own DBAs and want to incorporate it into their infrastructure team's remit?
Do you need to build-in complex features like auditing or granular security that some databases might provide out-of-the-box? Do you need to be able to run an overnight batch process on the database in some controlled manner?
Do you need to be able to have robust high-volume transactional support, or is it more for just using as a sink for reporting data? i.e. is it more OLTP or OLAP?
Are you limited by cost? i.e. does it need to be free/open-source, or can you select paid-for vendor product?
Both Firebird & Interbase are great, but not generally well-received into an "enterprise" environment in my experience unless they're "hands-off" and embedded into the application. MS SQL Server is a "safe-bet" for most systems. There is a cost associated with it but, as you know, it does come with a complete toolset and very good support.
If you do go down the Firebird or Interbase route then do take a look at Jason Wharton's IBObjects library which provides a high-performance replacement for BDE when using these databases. http://www.ibobjects.com/

Planning to use PostgreSQL with ASP.NET: bad idea?

I'm currently planning the infrastructure for my future web project. I want to go the way Joel went with having one DB per client and now thinking which DB engine will be good for me. The best would be of course SQL Server, but I can't afford a full-blown version at this moment and I don't think SQL Server Express will be a good choice for the loaded service. Now I'm thinking of using PostgreSQL instead. Given that my development environment will be ASP.NET 3.5 with say NHibernate or LINQ to SQL, how much trouble will I have if I use PostgreSQL instead of SQL Server?
Thanks!
NHibernate works OK with PostgreSQL (whether the db is on Windows or UNIX-like OSes) and .NET works well with it using the Npgsql db provider.
The only "trouble" you'll get is of course PostgreSQL doesn't do T-SQL. In fact its PL/pgSQL stored proc language is closer to Oracle's PL/SQL than it is to MS SQL Server's T-SQL. So you'll have to recode your stored procs, and there will be some gotchas to watch out for if you do ADO.NET. If you use NHibernate, you probably won't have to worry much about that. No LINQ to SQL though, so tough luck for you.
PostgreSQL is scalable and works OK now with Windows (earlier versions didn't support Windows formally), and pgAdmin is a good management tool for it, you'll be able to do most of the stuff you can do with SQL Server's GUI tools with it in a short time.
I don't think it is a bad idea, but a great experience.
By the way NHibernate is the way to go Linq to Nhibernate is under heavy development and available in the trunk so if you do care "which I don't care" about Linq don't be scare to use it.
Why not start with SQL Server Express and migrate when you have the money? That way you can move toward what you consider ideal and reduce conversion costs.
If you go with PostgreSQL you won't be able to use LINQ to SQL. Currently LINQ only works with SQL Server (possibly Oracle). I'm not sure about NHibernate. Also, if you use PostgreSQL, last time I checked, they had dropped windows support. So you'll be looking into having a second box running Linux for the DB.
[EDIT]
It turns out PostgreSQL is supported on windows. I can't recall where I saw support being cancelled. Anyway, I've heard it runs better on Linux anyway, so you might want to look into doing that regardless.
These days,postgres works really fast with .net and it is as good or even better than the proprietary mssql

Choosing a desktop database

I'm looking for a desktop/embedded database. The two candidates I'm looking at are
Microsoft SQL Server CE and Oracle Lite. If anyone's used both of these products, it'd be great if you could compare them. I haven't been able to find any comparisons online.
The backend DB is Oracle10g.
Update: Clarification, the business need is a client-server app with offline functionality (hence the need for a local data store on the client)
If the backend database is Oracle 10g it will probably be easier for you to use Oracle Lite - that way you don't have to use two completely different SQL dialects in the same project.
BTW, In my product I use SQLite as the desktop database
I'll second the vote for SQLite. I'm not sure what you're trying to accomplish but if you're doing any sort of local storage with syncing SQLite is a good choice. It has very widespread adoption and a lot of community support.
I also used SQLite as a desktop database. It's lightning quick and doesn't need a seperate process or any prior installation. All you need is a library to access the data as part of your code.
In light of your clarification I'd evaluate both OracleXE and Oracle 10g Lite before the others. Stick with the same tech, SQL/Oracle have some funny disagreements about SQL syntax and datatypes. I imagine you'd get the same issue with SQLite.
Perhaps I'm not fully understanding the need here. You are developing against 10g, but for your own test/dev environment you want a more lightweight database?
Or, are you developing an application that synchs with 10g database when online, but when offline uses a local store?
In both cases, I'd recommend staying with Oracle only because it will simplify your code.
In the first case, I'd wonder why you don't have a 10g QA machine somewhere that all the developers can connect to.
One advantage you have with SQL Server CE is that it is free and you can use the Sync Framework to syncronize it with any ADO.NET accesible database.
Also, the same SQL CE file is usable from the PC and mobile devices, and if you develop your application using .NET, you can use the same code for the desktop and the mobile device without changes.
You might want to look at Oracle XE. I cannot remember all of the differences, but O-Lite didn't fit my project needs. Oracle XE is a very good database for local development.
Brad
As #Nir mentioned, it's better to have homogeneous environment. However if you decide to not use Oracle Light, I would highly recommend you to take a look at Firebird. It's one of best choices for desktop database scenarios.

Resources