【问题标题】:What embedded database with Isolated Storage support can you recommend?您可以推荐哪些具有独立存储支持的嵌入式数据库?
【发布时间】:2008-09-20 14:59:38
【问题描述】:

我正在寻找支持isolating storage 的嵌入式数据库引擎。目前我知道 VistaDB。还有什么可以推荐的?

要求很简单:

  • xcopy 部署
  • 支持隔离存储
  • 最好是免费的

请注意,使用 IS 时您不知道文件的确切路径。

【问题讨论】:

    标签: database embedded-database isolatedstorage


    【解决方案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做类似的事情。
      虽然它本身不支持独立存储,但为每个用户创建一个新数据库应该很容易。

      【讨论】:

        猜你喜欢
        • 2019-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-16
        • 2010-11-29
        • 1970-01-01
        相关资源
        最近更新 更多