您可以推荐哪些具有独立存储支持的嵌入式数据库?
Posted
技术标签:
【中文标题】您可以推荐哪些具有独立存储支持的嵌入式数据库?【英文标题】:What embedded database with Isolated Storage support can you recommend? 【发布时间】:2008-09-20 14:59:38 【问题描述】:我正在寻找支持isolating storage 的嵌入式数据库引擎。目前我知道 VistaDB。还有什么可以推荐的?
要求很简单:
xcopy 部署 支持隔离存储 最好是免费的请注意,使用 IS 时您不知道文件的确切路径。
【问题讨论】:
【参考方案1】:VistaDB 似乎有 support 用于隔离存储。我已经使用它将近一年了,并且对它非常满意。
它不是免费的,但它的价格从$60USD 开始,版本 4(很快就会发布)。有一个免费的Express Edition,但这仅适用于非商业项目。
【讨论】:
哈 - 刚刚注意到您在一年前的 9 月问过这个问题 - 哦!希望您现在已经找到了解决方案 :) !! AFAIK Sean VistaDB 仍然是唯一支持隔离存储的嵌入式 SQL 数据库引擎...所以我认为您的答案仍然是一个很好的答案。【参考方案2】:继Lloyd's 的回答之后,有一个名为uSqlite 的sqlite 包装库,它应该可以直接或通过最小的改动实现您所追求的目标。
为了详细说明(对于 Aku 的后续问题),我建议修改 uSQLstPoll()
例程(包含在 uSQLst.c 中)。
在这个阶段,您拥有来自连接到您的客户端的端口和地址信息(包含在 sockaddr 中)。根据该信息,您可以修改uSQLst
结构,以修改您要连接的本地数据库文件的文件名。
免责声明:请注意,这是基于少量调查的可能解决方案。建议在部署之前进行更彻底的调查。
【讨论】:
【参考方案3】:Sqlite 非常适合嵌入并且是免费的。
它不直接支持隔离存储,但是看起来它自己调用隔离存储 API 并将生成的文件名作为它应该使用的文件名传递给 Sqlite 是相当简单的。
【讨论】:
IS 的全部意义在于你不知道文件的实际路径 @Lloyd:不知道为什么你被否决了,当你实际上可以将文件名获取到 sqlite 时。投票支持你。 sixlettervariables,Q 明确指出“支持独立存储的数据库”如果你能证明我可以使用带有独立存储的 SQLLite,我会道歉并投票甚至选择接受这个答案。跨度> 同样的事情也适用于 Firebird。 在我看来,真正的问题是将独立存储添加到 SQLLite 有多么困难。 AFAIK,SQLLite 需要一个路径名。接下来,将是如何从某个 IS 抽象派生该单个路径名,然后理想情况下将其插入当前的 SQLLite 代码库。【参考方案4】:我知道这个问题已经很老了,但是 VistaDB 确实支持独立存储并且是 XCopy 可部署的。虽然我们没有免费版本,但它是商业产品。
查看Advantages of VistaDB 上的 SO 帖子,了解有关我们支持的其他内容的更多信息。
隔离存储支持不仅仅是不知道您的文件名。您必须使用流,您不必要求文件级锁定,您不能在同一路径中创建临时文件,您必须了解 UAC 和空间限制。
AFAIK VistaDB 是唯一支持独立存储的嵌入式 sql 数据库。
【讨论】:
是的,看来VistaDB是最好的选择。我已经在几个项目中尝试过,这是一次非常好的体验。【参考方案5】:你可以用Firebird Embedded做类似的事情。 虽然它本身不支持独立存储,但为每个用户创建一个新数据库应该很容易。
【讨论】:
以上是关于您可以推荐哪些具有独立存储支持的嵌入式数据库?的主要内容,如果未能解决你的问题,请参考以下文章