tags:

views:

174

answers:

15

I have to develop a new (desktop) app for a small business. This business currently has an Access database with millions of records. The file size is about 1.5 GB. The boss told me that searching on this DB is very slow. The DB consists of a single table with about 20 fields.

I also think the overall DB design isn't great. I thought to use another DB server with a new design to improve both performance and efficiency.

Considering this is a relatively small business, I don't want to spend much for a DB license, so I want to ask you what would you do.

  • Continue to use Access, maybe improving and optimizing the DB in some way
  • Buy a DB server license (in this case, which one?)
  • ? (any idea?)
+1  A: 

SQL Server Express. Free for database size up to 10 GB.

Jon
Actually, I believe SQL Server Express will only databases sizes up to 4 GB. Check this site for to confirm http://www.microsoft.com/sqlserver/2008/en/us/compare-specialized.aspx
Waleed Al-Balooshi
@Waleed no, check my link. 2008 R2 Express now supports 10GB
Jon
Didn't know MS SQL Server was free even for businesses (up to 10GB). Thanks for the info.
Alex
Thanks for the info Jon. I didn't realize that they upped the cap on R2.
Waleed Al-Balooshi
+5  A: 

Things like SQL Server Express, MySQL and PostgreSQL are available for free, no license purchase necessary.

For improving search speeds, you will probably also want to look at things like what indexes are defined for the table, what exactly searches are doing, et cetera.

Amber
SQL Server Express is free but MS can change licence when they want.MySQL is free only for GPL. If you want to sell your soft with MySQL DB : you have to pay to MySQL or Oracle now.
Hugues Van Landeghem
@Hugues reference needed?
Earlz
@Earlz : just check MySQL site http://www.mysql.com/about/legal/licensing/oem/
Hugues Van Landeghem
Firebird ( www.firebirdsql.org ) is a free open source database system.
Martijn Tonies
+1  A: 

I warmly recommend MySQL. Its sometimes free and is easy to install on both Windows and linux.

There are also a lots of great free tools to manage its content like tables, users, indexes etc...

PHP_Jedi
Also, didn't know MySQL is free for businesses. I'll consider it also, even if I think it suits better for a web based app.
Alex
I edit and add link the dual license of MySQL who is not allways free.
Hugues Van Landeghem
+2  A: 

Your could replace the Access Database with a SQL Server database that will scale well moving forward. You can use SQL Server Express which is free and supports databases up to 4Gb I beleive.

Mark Redman
SQL Server 2008 R2 Express now supports databases up to 10GB - see http://www.microsoft.com/express/Database/.
Jon
Thats great news!
Mark Redman
+1  A: 

SQL Server Express is a perfect fit for this. http://www.microsoft.com/express/database/

Josh OD Brown
+1  A: 

You can take a look at Firebird

Firebird is one of the best database for desktop application and will allways be free.

Some tools exist to convert database from access to firebird.

Hugues Van Landeghem
+1  A: 

I would look into if the big table needs to be broken up into smaller ones(rarely needed, but still) and also what indexes are on it. And for Database software I would recommend PostgreSQL. It is free, easy to use(and I consider it easy to setup, though others beg to differ), and it is fast enough for enterprise applications.

Earlz
+1  A: 

I also recommend Firebird.

Its key advantages for your scenario are (from top of my head):

  • embedded version. You can ship it with your application - no separate installation kit needed, no .NET dependencies etc.

  • later on you can scale seamlessly to the full client-server model. No code changes required.

  • very small footprint

  • the entire database is stored in a single file. Much easier to deploy compared with other solutions.

  • you can have your server on any platform you want: Windows, Linux, MacOSX etc. Of course, you can have your client also on the same platforms but since you mentioned Access, I suppose that you have a Windows application.

  • no need for server administration. It just works.

+3  A: 

2nd the recommendation for Firebird. We've been using it for about 5 years and never had an issue. Cross platform, embedded & server deployments... brilliant. Oh, and Free as in Beer. Mozilla Public LIcense.

VladTheImpaled
+3  A: 

Put me down as another recommendation for Firebird. We use it with our commercial Point of Sale product. We have it installed at over 1,000 sites, with databases as large as 40+ Gigabytes. It's fast, stable, simple, easy to deploy, and requires no management.

SESummers
A: 

I recommend PostgreSQL as well (especially as an alternative to MySQL)

a_horse_with_no_name
A: 

No-one ever seems to mention it, but Oracle also do a free-as-in-free-beer version of their database: Oracle Express Edition (aka XE). It is limited to 1 CPU, 1GB RAM and 4GB of user data but that sounds plenty big enough for your application.

As for your database design, just one table sounds more like a spreadsheet than a database application. Probably you have lots of denormalised data. Splitting those out into smaller de-duplicated tables might well speed up certain queries. However if you only have twenty columns there may not be a lot of scope for tuning.

As for recommendation, the question is, which products do you know? If you have a familiarity with Access then I suggest you try to optimize your existing database. I have worked with Access databases which store several million rows and they performed well enough. After all, there is no guarantee that moving the same design to a different product will automatically make things run x times faster. Another advantage of Access as a tool is that it comes with a built-in front-end tool. If you move from Access you may need to think about re-building your application.

APC
A: 

Wow, folks have a lot of platform recommendations for you.

Let me just say this.

If you feel like there are design issues as well as platform issues, why not try the design changes first? These are changes you are likely to make anyway.

If they make no performance difference in Access, you are no worse off, since these changes improve maintainability on any platform.

Then you can try other platforms with the knowledge that you have a solid design, and that you have not wasted any time.

harpo
A: 

SQLite can also be a candidate.

RC
A: 

I would recommand not going with express anything - yep your small but what if the busness takes off and need much higher loads in the future - surely thats the way you want it to go ?? do not want to have to switch db layers / run 2 ..

I would look at MySQL or Firebird (used to borland interbase) both very high quality.

Simon Thompson