我正在重新开发一个简单的应用程序,该应用程序现在作为面向公众的网站使用我们的DMZ中的SQL Server,另一个Access前端&我们桌面用户的后端。我还必须在本地安装没有网络访问(或互联网访问)的现场工作人员的访问版本。
我正在尝试从头开发一个可以完成所有3种使用场景的应用程序:
关于应用程序的一点点。它由文件系统上的100,000多个tiff图像组成。数据库存储有关图像的元数据以及图像的相对URL。有图像表,用户表(跟踪谁使用它和权限)和历史表(跟踪谁在图像表上编辑了什么)。该系统仅由约3人进行网络连接编辑,主要是查找系统。
我从winforms和EF 4开始,并意识到这对我的需求来说太过分了。所以问题是: 有没有办法支持在运行时在本地缓存数据库和文件以“使应用程序脱机”然后在办公室时同步? (如果有的话,我希望如果他们从不选择那个选项,它在安装时不会在他们的PC上放置一个空的SQL数据库,因为我可以预先在每台笔记本电脑上安装数据库,因为它们只是需要它的人)
我应该只使用ADO.net作为数据库并且查询非常简单吗?我从EF获得了什么?几乎没有关系,不同的业务逻辑等。唯一复杂的查询是使用AND / OR的字段值列表等查找文件元数据的搜索。
答案 0 :(得分:0)
我认为您的场景是一个匹配良好的NoSQL数据库的数据库。查看CouchDB并将其用作存储与同步(复制)。
引用CouchDB:
CouchDB支持在不同的计算机上运行多个数据库副本 并提供同步其数据的机制。这很有用 偶尔连接的应用程序(例如PDA)。在这种情况下,用户可以 在断开模式下工作一段时间并存储他的数据 在本地改变。后来当他连接回公司时 网络,他可以将他的更改同步回他的公司数据库。
您可以在“CouchDB:The Definitive Guide”here或CouchDb site上阅读。
CouchDb具有REST API,因此您可以使用任何REST客户端(甚至是WebClient / HttpWeRequest),例如RestSharp library。
或者查看Mongo NoSQL数据库的一面。它有一个名为GridFS(分布式文件存储)的很酷的功能,可以帮助处理大量的二进制数据。而且使用Mongo复制功能几乎相同。