views:

517

answers:

7

I am writing a distributed DB Application with an Access Front end. Essentially an mde with some forms and reports. Should I use an access mdb to hold the backend tables or use MySQL or some other database?

+4  A: 

Personally I would use SQL Server Express or MySQL. They scale better than an Access backend and when you are ready to move away from Access, you can do it without having to convert the backend as well as the front end.

HLGEM
If you're OK with windows, then definitely SQL Server Express.
Nick DeVore
is SQL Server Express free?
Mike Pone
@Mike Pone - yes it is free
ck
It does have a 4GB limit on the total datastore, though.
David-W-Fenton
A: 

MySQL. Access is good for testing or proofing, but it is not a good option for a production database.

Matt Grande
It can be a perfectly good back end for a production environment assuming the user population and operating environment are appropriate.
David-W-Fenton
+4  A: 

SQL Server Express may be a good solution, but it has some pretty strict limitations, too. Also, you'd need to make sure that its license fits your needs.

If your concurrency and scalability needs are limited (say 10-15 concurrent users with moderate amounts of I/O), there's nothing wrong with using an MDB back-end. I'm not an Access fan, but I know from experience that this will usually work.

Also, administering an MDB back-end is almost free, whereas MySQL or SQL Server Express will require some actual DBA work. There's no point going with something bigger if you're reasonably sure you'll never need it.

John M Gant
+1  A: 

For actual deployment you would wan to use a real database, not the Access jet.

That being said, the great thing about access is that it has a tool (look in the menu) to split a single MDB file into database and code. Do that, and then aim the code at the new data source.

You may have to slightly modify some queries.

Uri
this is a good tip. I didn't know that.
Mike Pone
Jet is a real database. Please stop saying such stupid things.
David-W-Fenton
@David: When I used Access a lot (early-late 90s) Jet was severely handicapped compared to SQL Server. Maybe things have changed.
Uri
It was a good database then, too. Perhaps you weren't trained in how to use it properly, or didn't care to learn.
David-W-Fenton
@David: Let's try and keep this respectful rather than turn it into a flame war. Access is great and I loved working in it. However, I felt that it had SQL compatibility issues, and that Jet didn't deal well with multiple concurrent connections. Jet is great for being lightweight and free to distribute.
Uri
A: 

I think SQL Server Express would be your best option. MySQL is a good DB for your backend, but Access integrates better with SQL Serv Express (of course MS wants you to use it's own products, even if it's free) and Express edition is pretty good considering it's free. If the application ends up needing to scale big time later, then an upgrade to the paid-for SQL Server is simple and the driver is the same.

NathanD
A: 

I think you should define what you mean by "distributed DB Application." That term as I understand it would usually put Jet out of the running for the back end.

No one can actually answer your question without an indication of user population, operating environment, security and reliability requirements, etc. If it's for 10 users and it's not line-of-business data, a Jet back end could be perfect and make development and administration a piece of cake. If you have 100 users, you'd definitely want to go with a server back end. If you have important security considerations (e.g., HIPAA compliance) you'd probably want to go with a database that has server-level security built in and not go with Jet.

But there are plenty of applications where a Jet back end would be just fine -- fast and completely reliable.

David-W-Fenton
A: 

There's a third option: you could use something like EQL Data so that you can use the normal Access backend, but give each person their own copy (and sync between them) to help with multi-user scalability issues. That way you don't need to go into the complexity of using a "real" DB backend.

apenwarr