I'm current on POS project. User require this application can work both online and offline which mean they need local database. I decide to use SQL Server replication between each shop and head office. Each shop need to install SQL Server Express and head office already has SQL Server Enterprise Edition. Replication will run every 30 minutes as schedule and I choose Merge Replication because data can change at both shop and head office.
When I'm doing POC, I found this solution not work properly, sometime job is error and I need to re-initialize its. This solution also take a very long time, which obviously unacceptable to user.
I want to know, are there any solutions better than one that I'm doing now?
Update 1:
Constraints of the system are
- Almost of transactions can occur at both shop and head office.
- Some transaction need to work in real-time mode, that being said, after user save data to their local shop that data should go to update at head office too. (If they're currently online)
- User can working even their shop has disconnected from head office database.
- Our estimation about amount of data is at-most 2,000 rows in each day.
- Windows 2003 is OS of Server at head office and Windows XP is OS of all clients.
Update 2:
- Currently they're about 15 clients, but this number will growing in fairly slow rate.
- Data's size is about 100 to 200 rows per replication, I think it may not more than 5 MB.
- Client connect to server by lease-line connection; 128 kbps.
I'm in situation that replication take a very long time (about 55 minutes while we've only 5 minutes or so) and almost of times I need to re-initialize job to start replicate again, if I don't re-initialize job, it can't replicate at all. In my POC, I find that it always take very long time to replicate after re-initialize, amount of time doesn't depend on amount of data. By the way, re-initialize is only solution I find it work for my problem.
As above, I conclude that, replication may not suitable for my problem and I think it may has another better solution that can serve what I need in Update 1: