Take the 2-minute tour ×
Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. It's 100% free, no registration required.

We are currently thinking about a target architecture for a geographically distributed application.

This application tracks and schedules the movements of all material units across various production sites.

There will be two logical entities:

  • The first one is responsible of the operational/local management of a specific store - there are as many instances of this entity as there are stores
  • The second one is responsible of the global management (for example: units transfers between stores) and therefore communicates with all operational/local entities

Here is the logical diagram of the application:

Logical architecture

The implementation of this application cannot be directly derived from the previous diagram because we have to take into account the following constraints:

  • Stores are located in different areas (typically a few stores per area) and if the area is temporarily isolated from the global network, the system should still be functional for a limited amount of time.
  • The operational entity requires the global entity to work

Therefore, I thought about a new architecture where we would create identical instances of the global entity (same executables) with synchronized databases for each area:

enter image description here

I was wondering if anyone already used SQL Server replication to achieve the same kind of goal.

Is it the right way to proceed ? All recommendations/warnings are welcome !

Thanks a lot, Sébastien.

share|improve this question

migrated from stackoverflow.com Jun 2 '13 at 1:55

This question came from our site for professional and enthusiast programmers.

2  
Is there an actual need to replicate the data to each of the stores? Is this for a vendor application, or is this a new project? Have you considered something like a SaaS model where the web/application servers are geographically located in different regions, with a Peer-to-Peer replicated copy of the database local to each web farm? –  Jon Seigel Jun 2 '13 at 13:37
    
Hello Jon and thanks for the reply. This is a new project: it's a whole new version of an already existing application. I'm not sure if the SaaS model would suits our needs since global servers would be exactly identical (same data). However the databases peer-to-peer replication seems really appropriate for our case. –  Seb_Lz Jun 3 '13 at 7:33
    
Okay. Let me mention now that you may not be able to get a good answer to your question because of specific requirements for this application. What I will say is that in general the fewer copies of the data you have, and the fewer databases with different data, the easier it is to manage the system. That's why I'm asking if doing the kind of distribution you're asking for is really necessary. I don't know how many stores you have now, but scaling the system that way may lead to limits or challenges in the future, instead of centralizing things, at least a little bit as I suggested. –  Jon Seigel Jun 3 '13 at 15:15
    
Ok, I perfectly understand this and the replies I got already helped me in my thoughts. I think there are most likely quite a few different solutions to my problem. Since I'm not too sure about the best practices in this area, I wanted to make sure I wasn't going in a completely wrong direction. –  Seb_Lz Jun 4 '13 at 13:37

2 Answers 2

Replication from one box to area servers, then having those area servers replicate to the store servers within that area is easy. Setting up the replication to feed from two different area servers to each store server isn't really going to be doable. You could probably hack it to work, but it wouldn't be all that easy.

You would be better off setting up the area servers with high availability so that the chance of the area server going offline in minimal.

share|improve this answer
    
Hello mrdenny and thanks for the reply. The replication should only happen between global servers (not between global and local servers). Each global server will modify its database due to interactions with local stores. Those changes should be replicated to every other global servers. In that architecture, there would be about 5-6 global servers. –  Seb_Lz Jun 3 '13 at 7:19
    
It's doable, but it's a big design. This is one of those configurations that will need to be designed very carefully and put together very carefully with a big proof of concept to make sure that everything works correctly. –  mrdenny Jun 8 '13 at 9:09

It depends on how many areas do you have. If you have a lot of these than management of database replication between these is going to be a nightmare.

I’d try my best to have all data in one centralized place with every possible high availability option on. If that’s not possible you might try with only two or three global servers and not one per each area.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.