【问题标题】:Database solution for client server application with encrypted database?具有加密数据库的客户端服务器应用程序的数据库解决方案?
【发布时间】:2010-09-06 21:37:51
【问题描述】:

我们在 .net 2.0 上有一个使用嵌入式加密数据库的 Windows 应用程序。该数据库包含秘密数据 - 大约 350mb,它是只读的,每 4 个月更新一次。

到目前为止,我们使用 SQLite 文件作为数据库并且效果很好,但是我们需要迁移到客户端-服务器版本,因为有些客户有 20-40 个客户端,他们不想单独许可和更新每个客户端。

您可以为此建议我们什么数据库解决方案:

  • 数据库应保持加密状态,这样即使管理员也无法读取数据。

  • 我们应该继续每 4 个月交换一次数据库。

  • 我们计划将服务器应用程序作为 Windows 服务,以便该服务从数据库中读取数据并将数据发送到客户端。但如果可以提供可接受的加密,我们也可以使用一些免费的 sql server。

  • 最好为我们的客户端-服务器和单客户端版本使用相同的数据库,这样在发布时不需要额外的转换。

由于数据库是只读的,也许我们在这里再次使用 sqlite 不会有问题。有什么想法吗?

【问题讨论】:

    标签: .net database sqlite encryption client-server


    【解决方案1】:

    显而易见的答案是迁移到 MySQL,但并不是那么简单。

    特别是您说您的数据库是只读的。在这种情况下,SQLite 根本不需要使用事务或直接锁定数据库文件。

    这是一个巨大的优势,因为它是数据库文件的物理锁定导致多用户访问 SQLite 数据库的最大可伸缩性问题

    (但即使使用读/写数据库,SQLite 文档也表示它适用于每天点击 100,000 次的网站。

    听起来您还打算使用单个集中式 Windows 服务来为所有客户端提供服务。在这种情况下,所有数据库访问都将由该服务序列化,因此 SQLite 永远不会有两个并发连接竞争访问。在这种情况下,SQLite 不会成为瓶颈,服务会。

    如果服务当然是多线程的,那么是的,可能会并发访问 SQLite,但又是只读的,所以仍然不是实际问题..

    此外,SQLite 比 MySQL 更容易满足您对数据库加密和 4 个月交换的要求。

    你在 StackOverflow 上读过这个 earlier question 吗? Kyle Cronin 对他的经历进行了有趣的评论,并最终表示 SQLite 对于容量较小的多用户网站来说是一个不错的选择。

    希望我提供了一些思考。

    【讨论】:

    • 好主意,必须检查如何避免服务成为瓶颈。也许 WCF 可以帮助...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    • 2012-07-15
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 2018-09-08
    相关资源
    最近更新 更多