I have a database of approximately 8,000 records. Each record has 1 text field (300 chars max) and about 20 numeric fields.
Operations on this database are mostly read-only: search and sort. No updating.
For my WPF app,
I like XML because it is simple to deploy but the text search is somewhat slow because I do a search on every keystroke entered on the search textbox. My current considerations are: XML, Microsoft Access, SQLCE.
What (other) database technologies should I consider and what would you choose for speed and ease of deployment? Thanks.
The one advantage of using JET is of course all versions of windows since windows 98SE have a copy installed. This means no installing of the data engine is required.
And such an engine is fast and such file based data engines tend to be much faster than SQL server or any server based engine in which you usually are forced to talk to that system through a network socket layer even when running local.
And regardless of often being forced to go through a network layer, you are working though a transaction log and “ACID” database architecture with roll back etc. So tons of additional memory, additional processing and there almost always an extra file layer you “suck” data through for transactions. All in all these things add up to more memory, more processing and really much get in your way when such features are not required.
A file based data engine like JET when used without a network tends to run circles around the huge transaction based server editions of SQL, MySql or whatever.
So the JET database engine still is not a bad choice since you don’t have to install it on your target computer. All of the other suggestions here require distribution issues and that of installing issues.
So some bonus parts are:
So no install required, been installed on all windows for 12+ years
Lighter weight and less software layers between your code and the data on disk.
Small memory foot print
Non service architecture and thus the code runs “in process” and thus no inter application communication occurs to slow down reading
of data (to be fair, some of this is ActiveX).
You not forced to communicate through a network socket.
You can use some indexing commands with JET and some options are available which even allow you to by-pass using SQL.
On your development box you can fire up MS-access to manage and work on those data tables.