无服务器数据库复制
TLDR:是否有任何嵌入式数据库系统支持无需服务器的复制?最好与.Net一起使用
背景:过去我被要求创建几个MS Access数据库,这些数据库现在正在网络上使用,并且性能相当慢。我现在被要求更新这些数据库以添加一些新功能并提高性能。理想情况下,我希望有一个基于服务器的后端,例如 MS SQL Server,不幸的是,这似乎不会发生。我正在寻找某种形式的数据库,我可以使用它在网络共享上有一个主副本,并且客户端副本可以使用该主副本进行复制,而无需在服务器上运行主副本。与 MS Access 复制类似。我最喜欢使用 C# 等 .Net 语言。如果一切都失败了,我可能不得不尝试 MS Access 复制,但我希望有更强大的东西。
补充信息: 我不在公司的 IT 部门,因此无法访问服务器系统。我们正在尝试获得一个可以在现有 SQL Server 上拥有管理权限的数据库,但这是一场艰苦的战斗。我正在寻找提供对等复制的替代方案,以克服我在使用 MS Access 时遇到的性能问题。我也在寻找在 .Net 中得到更多支持的东西,因为 Access 不能与 Linq 或 EF 一起使用。
TLDR: Are there any embedded db systems that support replication without a server? Preferably usable with .Net
Background: In the past I was asked to create several MS Access databases that are now being used across the network and performance is rather slow. I have now been asked to update these databases to add some new features and improve performance. Ideally I would like to have a server based backend like MS SQL Server, unfortunately it doesn't look like that will happen. I am looking for some form of database I can use where I have a master copy on a network share and client copies can replicate with this master without the master running on a server. Similar to MS Access replication. I am most comfortable working with .Net languages like C#. If all else fails I will probably have to try MS Access replication, but I was hoping for something a little more robust.
Added Information:
I am not in the IT department at my company and therefore do not have access to a server system. We are trying to get a single database that we can have admin rights over on an existing SQL Server, but it is an uphill battle. I am looking for alternatives that provide peer to peer replication to overcome the performance issues I am experiencing with MS Access. I was also looking for something that would have more support in .Net since Access doesn't work with Linq or EF.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用 SQL Server Compact。早期版本支持从中央存储同步,但在 4.0 中,您可以使用类似这样的 快照同步来同步数据。
You could use SQL Server Compact. Earlier versions support synchronization from a central store but in 4.0 you could use something like this Snapshot Synchronization to synchronize the data.
大多数实体复制架构都是基于面向文档的数据库。
在 .NET 世界中,您可以检查 NoSql 数据库:性能和性能。可扩展性。检查NoSQL 解决方案中的无主复制。
另外,也许您在 2011 年不会选择这种架构,而是 Lotus Notes/Domino< /a> 提供跨服务器和客户端的强大复制(具有离线模式)。
然而,即使您可以以某种方式将数据库与 SQL 服务器“同步”,数据库也不是基于 SQL 的。
Most of solid replication architecture are based on Document-oriented databases.
In the .NET world, you can check NoSql databases : peformance & scalability. Check Masterless Replication in NoSQL solutions.
Also, maybe you'll not choose this architecture in 2011 but Lotus Notes/Domino provides strong replication accross servers and clients (with an offline mode).
However, the databases are not SQL-based even if you can somehow "synchronise" them with a SQL server.
如果您没有唯一的数据入口点(例如单个数据库服务器),您将自动需要处理大量复制麻烦:并发性,仅举一例。
听起来您的问题是性能问题,并且您认为复制是一种途径,对吗?如果不用复制就能达到很好的分布式性能,合适吗?
有一些 No-SQL 工具(如 JoeBilly 所说),例如 Memcached 或 Sterling 框架。背后的想法是处理内存中的对象集,而不将它们持久保存到常规 SQL 数据库中。但您也可以以不同的方式保留它们(框架为此处理一些场景)。
如果您要恢复到 MS-Access,那么我认为即使是免费的 SQL Server Express 也会更好。但这仍然需要一台服务器(根据容量,普通台式机就可以做到)。其他一些数据库引擎可以处理复制(我认为 PostgreSQL (http://www.postgresql.org/) 就是其中之一 - 而且它是免费的)。
也许您可以详细说明您的场景和限制?
If you don't have a unique point of entry to your data (like a single database server) you automatically need to handle a lot of replication hassle : concurrency, just to name one.
It sounds like your problem is a performance one, and you tought about replication as an avenue, am I right? If you can achieve a good distributed performance without replication, does it fit?
There are No-SQL tools (like JoeBilly said) like Memcached or the Sterling framework. The idea behind is that you handle in-memory sets of objects, without persisting them to a regular SQL database. But you can also persist them anyway in different ways (the frameworks handle some scenarios for that).
If you are to revert to MS-Access, then even the free SQL Server Express would be better in my opinion. But this still requires a server (depending on volume, a regular desktop could do). Some other database engines handle replication (I think PostgreSQL (http://www.postgresql.org/) is one - and it's free).
Maybe you could elaborate on your scenario and constraints?