views:

97

answers:

2

I have a prickly design issue regarding the choice of database technologies to use for a group of new applications. The final suite of applications would have the following database requirements...

Central databases (more than one database) using mysql (must be mysql due to justhost.com).

An application to be written which accesses the multiple mysql databases on the web host. This application will also write to local serverless database (sqlite/firebird/vistadb/whatever).

Different flavors of this application will be created for windows (.NET), windows mobile, android if possible, iphone if possible.

So, the design task is to minimise the quantity of code to achieve this. This is going to be tricky since the languages used are already c# / java (android) and objc (iphone). Not too worried about that, but can the work required to implement the various database access layers be minimised?

The serverless database will hold similar data to the mysql server, so some kind of inheritance in the DAL would be useful.

Looking at hibernate/nhibernate and there is linq to whatever. So many choices!

A: 

but can the database access layer be reused?

Yes it can be but you have to be carefully create a loosely coupled datalayer with no dependeny on other parts.

Vinay Pandey
+1  A: 

Get a better host. Seriously - SQL Server hosts don't cost that much more. An hour development time possibly per month - and that is already non-conervative.

Otherwise - throw out stuff you do not need. Neutralize languages to one. If that is an internet access stuff, check out OData for exposing data - nice nidependant protocol

The resit sis architecture. and LINQ (2Sql) sucks - compared to nhibernate ;)

TomTom
Hi TomTom. What advantage will a central SQL db give me over a mysql one? I expect nhibernate or linq can cannect to either.How can I neutralize languages to one? I suppose I can use phonegap for all mobile versions and .NET for the windows one (so that's down to two languages).Will look at odata, thanks.
well, I just think if you develop in c# anyway a large part, you should use a databsae with full support. .NET hosters and mysql sounds cheapo.
TomTom
odata is a perfect protocol for generic data exposure to clients - seriously ;) WOrking with it myself, and it has a lot of tooling support (excel, MS report server etc. all can deal with it).
TomTom
Are there any database technologies which are available across all platforms? You mention odata - is that the only choice you know of?
No, there is no real cross platform technology. OData is not a database technology, it is a protocol.
TomTom
Ok, looks like a plan could be...Implement oData services for the database(s) on a development windows machine. Looks like Microsoft might make odata server available to unix. If they don't then I have to go with a windows web host and ditch justhost.com. The client side code for all platforms will all be consuming odata so that aspect of them will be similar. Just need a different UI for each platform - .NET for windows and phonegap for mobiles.
That would be the idea. I definitely use oData like that - nice little platform independant AND toolabl little protocol.
TomTom