我们可以推荐哪些支持隔离存储的嵌入式数据库?
我正在寻找支持隔离存储的嵌入式数据库引擎。目前,我知道VistaDB。我们还能推荐什么?
要求非常简单:
- xcopy部署
- 支持隔离存储
- 最好是免费的
请注意,使用IS时我们不知道文件的确切路径。
解决方案
Sqlite完全可以嵌入并且是免费的。
它不直接支持隔离存储,但是我们自己调用隔离存储API,然后将生成的文件名作为应使用的文件名传递给Sqlite似乎很简单。
我们可以使用Firebird Embedded做类似的事情。
尽管它本身不支持隔离存储,但是为每个用户创建一个新数据库应该很容易。
在劳埃德(Lloyd)的回答之后,有一个名为uSqlite的sqlite包装库,可以直接或者以最小的改动实现我们所追求的目标。
为了详细说明(针对Aku的后续问题),我建议修改uSQLstPoll()例程(包含在uSQLst.c中)。
在此阶段,我们可以从客户端连接到端口和地址信息(包含在sockaddr中)。根据这些信息,我们可以修改uSQLst结构,以修改我们要连接的本地数据库文件的文件名。
免责声明:请注意,这是一个可能的解决方案,基于很少的调查。建议在部署之前进行更彻底的调查。
VistaDB似乎支持隔离存储。我已经使用了将近一年,对它的使用感到非常满意。
它不是免费的,但其版本4的起价为60美元(很快就会发布)。有一个免费的Express Edition,但这仅适用于非商业项目。
我知道这个问题已经很老了,但是VistaDB确实支持隔离存储,并且可以部署XCopy。我们没有免费版本,它是一种商业产品。
请参阅关于VistaDB优势的SO帖子,以获取有关我们支持的其他内容的更多信息。
隔离存储支持不只是不知道文件名而已。我们必须使用流,不需要文件级锁定,不能在同一路径中创建临时文件,必须了解UAC和空间限制。
AFAIK VistaDB是唯一支持隔离存储的嵌入式sql数据库。