CEDB vs. EDB

Posted by: Sue Loh

CEDB was created as a lightweight database API for Windows CE.  A long time back, before I started at Microsoft, maybe the CE 2.0 days or even earlier.  It originally ONLY stored its data in the object store.  But then as flash got cheaper and people started building more devices with persistent storage, we needed a database that could store its data in other places.  So some APIs were added to CEDB, to let it store its databases inside a "volume" (file) on any store.  However CEDB was really built to operate on a RAM-based store, does not work efficiently for storing data in slower media like flash.  It can end up writing to flash much more than you'd really want.

As CEDB started showing its age, the SQL team took up the challenge of providing a better database engine for Windows CE.  We had SQL-CE but that was much heavier weight than CEDB.  The SQL team built a lighter engine, and put an API on top of it that closely mimicked the CEDB APIs.  That makes it easier to migrate existing applications that use CEDB over to use EDB.  EDB is much more efficient about storing its data (and it better be, considering it was written by database experts instead of device hacks like myself).

For now Windows CE and Windows Mobile support both CEDB and EDB, but over time we'd like to get rid of CEDB.

Unfortunately there aren't any tools to convert your code from using CEDB APIs to using EDB APIs, or to convert your existing CEDB databases to EDB.  Maybe someone could update our database conversion wizard (https://www.microsoft.com/windowsmobile/downloads/powertoys.mspx) to do that.  But to be honest I'm not aware of any effort to do that.