我们在.net 2.0上有一个使用嵌入式加密数据库的Windows应用程序。该数据库由秘密数据组成 - 大约350mb,是只读的,每4个月更新一次。
直到现在我们使用SQLite文件作为数据库并且它运行良好,但我们需要转移到客户端 - 服务器版本,因为一些客户有20-40个客户端,他们不想单独许可和更新每个客户端。
您可以为此建议我们使用哪种数据库解决方案:
数据库应保持加密状态,以便管理员无法读取数据。
我们应该每4个月继续交换数据库。
我们计划将服务器应用程序设置为Windows服务,以便服务从数据库中读取并将数据发送到客户端。但是如果可以提供可接受的加密,我们也可以使用一些免费的sql server。
对我们的客户端服务器和单客户端版本使用相同的数据库会很好,因此在重新发布时不需要额外的转换。
由于数据库是只读的,或许我们再次使用sqlite也没有问题。有什么想法吗?
答案 0 :(得分:0)
显而易见的答案是迁移到MySQL,但不是那么简单。
特别要说你的数据库是只读的。在这种情况下,SQLite根本不需要使用事务或直接锁定数据库文件。
这是一个巨大的优势,因为它是数据库文件的物理锁定,导致多用户访问SQLite数据库时出现最大的可伸缩性问题
(但即使使用读/写数据库,SQLite文档也说它适用于每天点击100,000次的网站。)
听起来您还打算使用单个集中式Windows服务来为所有客户端提供服务。在这种情况下,所有数据库访问都将由此服务序列化,因此SQLite永远不会有两个并发连接竞争访问。在那种情况下,SQLite不会成为瓶颈,服务会。
如果服务当然是多线程的,那么是的,可能会同时访问SQLite,但是再次只读,所以仍然不是实际问题..
此外,您加密数据库和4个月交换的要求使用SQLite比MySQL更简单。
您是否在StackOverflow上阅读了此earlier question? Kyle Cronin对他的经历进行了有趣的评论,并最终表示SQLite对于小批量多用户网站来说是个不错的选择。
希望我提供了一些值得思考的东西。