views:

118

answers:

5

All my (home) CF learning has so far been done using Access as a database, and as far as the DB goes I "get it". There's no database server, and no need to log on to the database or anything, and setting up table relationships is easy and visual. Oh and its essentially free to deploy.

However, I'm now working on an application that's likely to be used across several businesses and probably up to 50 concurrent users. I've heard that Access really isn't up to multi user use or production use on an app. What would you recommend as more suitable, preferably easy to grasp, with minimal tweeking needed for my SQL (I used a tool to convert to MySQL and it certainly handles concatenation differently, I dont want to have to do too much debugging), visual interface available, scalable, backupable, and whatever else I need that I don't yet know I need!

A: 

If you're merely using Access as a database, then naturally, Microsoft SQL Server is closest in concept (and SQL dialect) to access.

However, if your focus is on web development, the LAMP stack and specifically MySQL are a better choice. You should at least have an idea of some basic administration.

My experience is that the main challenge is going to be with data types and with string operations (sound like you have similar issues).

Generally, strive to write SQL that is portable, so it's good to read up on things that make it not portable or avoid using special tricks. If you can't do that, then abstract away using code, or even use an ORM tool.

The main benefit of Access, IMHO, is its built in support for generating UIs and reports, while hiding much of the underlying SQL. Most of the Microsoft languages (especially VB) offer similar capabilities. If you've used the UI or the forms, you'll now have to both learn a language or tool for generating UIs/forms/pages, and how to use SQL. Since you mentioned ColdFusion, I'll assume you have most of these skills already.

Uri
+8  A: 

I recommend SQL Server 2008 Express. It has a great feature set, graphical UI admin tools, and you can step up easily from it to more commercial solutions as you continue to grow.

JYelton
+3  A: 

You could go with either MySQL or Microsoft SQL Server Express. Both are free and both work well.

Unfortunately you're going to have headaches converting your database no matter what you go with. Microsoft Access doesn't use standard SQL so string concatenation, functions, etc. will be different.

Justin Niessner
I did try MySQL on Ubuntu briefly, but for a non Linux experienced person it was a step too far and and I had to abandon my tinkering just to get the job done in timescale. File/directory permissions and case sensitivity were a real hurdle to someone used to windows and CF.I think I will have a go at SQL server Express in the hope of least difference in SQL statements.
Saul
A: 

Before doing anything at all, I'd choose a database abstraction layer and refactor the existing code to use that.

Then it's relatively trivial to swap out your back end pretty much completely ecumenically.

If you use prepared statements, you'll also get protection against many forms of SQL injection.

I would also point out that a Jet/ACE back end was never a good choice for a web-based application because of the mismatch between the threading models and memory management of the web server and the Jet/ACE database engine (though if you use ADO, Jet is reported to be threadsafe; I don't quite understand how you can magically transform a non-threadsafe db engine into a threadsafe one with a data interface layer, but Michael Kaplan said it was so, and he is the type of person you can trust on that type of subject).

David-W-Fenton
Can you give me any more pointers as to what you mean by this. Are you referring to ORM? If you mean more generally, I have all my sql in cfcs which is a certain amount of abstraction, but of course Ilm still going to have to debug my sql statements.
Saul
You can look at ColdFusion ORM for this type of database abstraction: http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSD628ADC4-A5F7-4079-99E0-FD725BE9B4BD.html
David Collie
I don't know from CF, as I wanted to use it back in the 1998-99 period but couldn't find any reasonably-priced web hosting that offered it. Anyway, what I mean is something like PearDB with PHP, or ADODB (I chose PHP, if that's not clear). I expect there are such db abstraction libraries that work with CF, I just wouldn't know what they are.
David-W-Fenton
There's an easy to use, but decently powerful DB abstraction layer called DataManager for CF that I've used on a couple simple projects: http://www.bryantwebconsulting.com/cfcs/
Edward M Smith
A: 

I don't have any experience with the Microsoft SQL Server Express, so I can't speak for. However, I do use MySQL with ColdFusion 8 and I'm continually impressed with the capability, flexibility, ease, community support, and speed of MySQL. PHP MyAdmin is pretty straight forward and a good web interface for MySQL. My $.02, spend it how you may.

Travis