Using Access database in embedded XP

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

We are considering using Access as our database - has anyone used this is in
a real time application with XP on a compact flash. I am worried about writes
taking a long time and the system crashing because of access. Would SQL be
better? Our application does not have a hugh amount of data to save. One of
the reasons we are looking at Access is that we want to use Crystal report.
 
Kasey said:
We are considering using Access as our database - has anyone used
this is in a real time application with XP on a compact flash. I am
worried about writes taking a long time and the system crashing
because of access. Would SQL be better? Our application does not have
a hugh amount of data to save. One of the reasons we are looking at
Access is that we want to use Crystal report.

That depends on how you really define "real time". I used to work in the
Jet and SQL server teams at Microsoft and then eventually in the SQL Server
for CE team.

"Real time" has a much different meaning in the embedded world than Jet can
guarantee. Do you need an absolute upper bounded latency for writes to the
file system (through the database engine) or do you need "good performance".
"Real time" is typically only guaranteed in the device driver interrupt
responsiveness space.

That being said, SQL CE has done work to make sure they perform well in the
compact flash space. The Jet team never focused on compact flash
specifically. One problem Jet will face in this space (if crashes are a
concern as mentioned above), is the lack of logging/recovery. Jet does have
a repair facility, but is not designed to survive partial writes. Each
"page" in Jet spans multiple sectors on disk. If only some of the sectors
make it to disk, Jet can notice but doesn't auto-repair the data. Within a
given transaction, Jet can obviously attempt to write multiple pages. This
further widens the window for corruptibility. Jet does it's best to write
pages in a logical order (newly allocated written before
existing-but-updated pages for example).

If you want a bulletproof data integrity story, you're going to need to go
with SQL Server. However, that bulletproof capability does come with a
price. In very general terms, recovery can only be guaranteed through
redundancy (ie: logging or some similar mechanism). Efforts can be made to
try to minimize the overhead, and SQL Server does it's best to do so,
however that overhead won't ever be zero.

So, short answer. "Real time" - never. "Perform well enough" - likely.
Jet -vs- SQL Server? That depends on a lot of variables. If you're trying
to run off of compact flash (including your OS), one of those variables will
be the size of your image. Jet requires much less than SQL Server (dlls,
etc.).

Make sense?
 
Kasey said:
We are considering using Access as our database - has anyone used this is in
a real time application with XP on a compact flash. I am worried about writes
taking a long time and the system crashing because of access. Would SQL be
better? Our application does not have a hugh amount of data to save. One of
the reasons we are looking at Access is that we want to use Crystal report.

My understanding of Microsoft SQL licensing is that you are not
allowed to use on Embedded XP. You can get around this by using
MySQL, its free, you get all the source and you can build a low profile
version to match the needs of an embedded system.
 
Back
Top