简体   繁体   中英

Serverless database replication

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.

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.

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.

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?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM