Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 639061
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 13, 20262026-05-13T20:48:01+00:00 2026-05-13T20:48:01+00:00

Following on from this question… What to do when you’ve really screwed up the

  • 0

Following on from this question…

  • What to do when you’ve really screwed up the design of a distributed system?

… the client has reluctantly asked me to quote for option 3 (the expensive one), so they can compare prices to a company in India.

So, they want me to quote (hmm). In order for me to get this as accurate as possible, I will need to decide how I’m actually going to do it. Here’s 3 scenarios…

Scenarios

Split the database

My original idea (perhaps the most tricky) will yield the best speed on both the website and the desktop application. However, it may require some synchronising between the two databases as the two "systems" so heavily connected. If not done properly and not tested thouroughly, I’ve learnt that synchronisation can be hell on earth.

Implement caching on the smallest system

To side-step the sync option (which I’m not fond of), I figured it may be more productive (and cheaper) to move the entire central database and web service to their office (i.e. in-house), and have the website (still on the hosted server) download data from the central office and store it in a small database (acting as a cache)…

  1. Set up a new server in the customer’s office (in-house).
  2. Move the central database and web service to the new in-house server.
  3. Keep the web site on the hosted server, but alter the web service URL so that it points to the office server.
  4. Implement a simple cache system for images and most frequently accessed data (such as product information).

… the down-side is that when the end-user in the office updates something, their customers will effectively be downloading the data from a 60KB/s upload connection (albeit once, as it will be cached).

Also, not all data can be cached, for example when a customer updates their order. Also, connection redundancy becomes a huge factor here; what if the office connection is offline? Nothing to do but show an error message to the customers, which is nasty, but a necessary evil.

Mystery option number 3

Suggestions welcome!

SQL replication

I had considered MSSQL replication. But I have no experience with it, so I’m worried about how conflicts are handled, etc. Is this an option? Considering there are physical files involved, and so on. Also, I believe we’d need to upgrade from SQL express to SQL non-free, and buy two licenses.

Technical

Components

  • ASP.Net website
  • ASP.net web service
  • .Net desktop application
  • MSSQL 2008 express database

Connections

  • Office connection: 8 mbit down and 1 mbit up contended line (50:1)
  • Hosted virtual server: Windows 2008 with 10 megabit line
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-13T20:48:02+00:00Added an answer on May 13, 2026 at 8:48 pm

    Having just read for the first time your original question related to this I’d say that you may have laid the foundation for resolving the problem simply because you are communicating with the database by a web service.

    This web service may well be the saving grace as it allows you to split the communications without affecting the client.

    A good while back I was involved in designing just such a system.

    The first thing that we identified was that data which rarely changes – and immediately locked all of this out of consideration for distribution. A manual process for administering using the web server was the only way to change this data.

    The second thing we identified was that data that should be owned locally. By this I mean data that only one person or location at a time would need to update; but that may need to be viewed at other locations. We fixed all of the keys on the related tables to ensure that duplication could never occur and that no auto-incrementing fields were used.

    The third item was the tables that were truly shared – and although we worried a lot about these during stages 1 & 2 – in our case this part was straight-forwards.

    When I’m talking about a server here I mean a DB Server with a set of web services that communicate between themselves.

    As designed our architecture had 1 designated ‘master’ server. This was the definitive for resolving conflicts.

    The rest of the servers were in the first instance a large cache of anything covered by item1. In fact it wasn’t a large cache but a database duplication but you get the idea.

    The second function of the each non-master server was to coordinate changes with the master. This involved a very simplistic process of actually passing through most of the work transparently to the master server.

    We spent a lot of time designing and optimising all of the above – to finally discover that the single best performance improvement came from simply compressing the web service requests to reduce bandwidth (but it was over a single channel ISDN, which probably made the most difference).

    The fact is that if you do have a web service then this will give you greater flexibility about how you implement this.

    I’d probably start by investigating the feasability of implementing one of the SQL server replication methods

    Usual disclaimers apply:

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Following on from this question (that I asked) and this question (that Simon asked),
Following up from this question: designing application classes What is wrong (from a design
Following on from this question , I have a menu system as follows: MainMenu
Following on from this question MVC3 - Should I design my Model to be
From this question I asked 5 minutes ago, it's clear that the following code
Following on from this question I asked yesterday: Can I shorten this regular expression?
Following on from this question , I am interested in finding out how you
following on from this question (Developing to an interface with TDD), I'm still having
Following on from this question...I'm trying to unit test the following scenario: I have
Following the CSS style trick from this question I was able to create a

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.