+// Backends must include implementations of all these functions, but with their own prefix instead of "cdb_".
+// The initialization function of the selected backend will map them.
+void (*cdb_open_databases)(void) = NULL;
+void (*cdb_close_databases)(void) = NULL;
+int (*cdb_store)(int, const void *, int, void *, int) = NULL;
+int (*cdb_delete)(int, void *, int) = NULL;
+void (*cdb_free)(struct cdbdata *) = NULL;
+struct cdbdata * (*cdb_next_item)(int) = NULL;
+void (*cdb_close_cursor)(int) = NULL;
+void (*cdb_begin_transaction)(void) = NULL;
+void (*cdb_end_transaction)(void) = NULL;
+void (*cdb_check_handles)(void) = NULL;
+void (*cdb_trunc)(int) = NULL;
+void (*cdb_chmod_data)(void) = NULL;
+void (*check_handles)(void *) = NULL;
+void (*cdb_compact)(void) = NULL;
+void (*cdb_checkpoint)(void) = NULL;
+void (*cdb_rewind)(int) = NULL;
+struct cdbdata * (*cdb_fetch)(int, const void *, int) = NULL;
+
+// This function is responsible for choosing and initializing a back end.