Question

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?

Was it helpful?

Solution

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.

OTHER TIPS

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.

For actual deployment you would want to use a real database, not the Access/Jet DB Engine.

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.

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.

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.

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.

Choosing MySQL you would need to install MySQL Connector (ODBC) in each client. SQL Server Express would be a good choice if you don't like to distribute aditional components, plus, ADO works better with MS SQL.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top