0

Need suggestions for a database. I'm tasked to write a C# desktop application for a small business. The business owner does not want his data to be stored on the internet. He has two desktop computers. He would like for each desktop to have a copy of the application, and if one of the desktops suffers a catastrophic hardware failure he wants to be able to boot up the other desktop and continue his work.

I'm looking for a way to persist and share the data used by the application easily across two computers. I'll admit I'm not a network guru or database administration guru. The application will have only one user at a time. The data would probably be estimated at a max of a few hundred MB to a GB. The schema would be very simple, with 4 or 5 tables.

Things I can do: Some basic networking between the two desktops (I'm not sure how but willing to educate myself) Buy some cheap hardware to help facilitate this

Things I can't do: Buy another machine to be a dedicated server

Any suggestions are welcome. Thank you!

  • I’m not an expert at this, but I imagine GIT might be applicable. git-scm.com – Eric Shain Apr 5 at 14:37
  • Now that's something I hadn't thought of. Thank you! "Outside of the box" suggestions are awesome! – Jamie Apr 5 at 17:20
  • If computer A fails and computer B has been off for months git won't have had an opportunity to sync. You would have to have a GIT server loaded somewhere. – cybernard Apr 5 at 18:10
  • @cybernard I’m assuming both computers are always on. It seems a reasonable assumption. – Eric Shain Apr 5 at 22:33
  • @EricShain "he wants to be able to boot up the other desktop and continue his work." This implies the other computer is off all the time because he wouldn't have to boot it if it was on. – cybernard Apr 6 at 0:21
0

You could use mysql or open source equivalent of mariadb.

Then setup replication..caveat both computer have to be on so replication can happen.

If you want a true turn computer B on when computer A fails then the data has to live on another computer. You can setup a network share or just use native networking like mariadb or etc. You can literally load mariadb most operating system, and the computer it is on can be any computer. Especially with such a tiny database, a user using a PC with mysql on it would never even notice a database running 5 tables running in the background. Unless you start having hundreds of thousands of records.

Somewhere the data lives on a hard drive and that is your key point of failure.

Every other part of the computer doesn't matter! CPU dies replace it. done. RAM dies, replace it done. You can even install a database like mariadb on virtually an windows,mac,linux PC and copy the data over from the dead machines hard drive by connecting it to a new working PC via USB external enclosure. However, if the hard drive fails...game over.

You can reduce the odds in fails by swapping the hard drive for an SSD. Hard drive have moving parts subject to failure and SSD don't. SSD will still eventually fail, but you have eliminate one major factor in hard drive reliability.

Unfortunately the rest of standard practices cost significantly more.

RAID 5/6 can protect against single/dual hard drive failure but require 3/4 hard drives minimum.

You will still need backup with versioning to protect against a virus encrypting your files.

You can even up your game further by making it web based. Then in can be accessed from any PC. You can use the built-in windows firewall to block any IP you don't want accessing the PC. You can load apache,mariadb, and php on windows and then there is nothing to install, except on the server(can be any standard PC). Using a PHP framework like laravel(or any) you can make a beautiful GUI for the client to use. Many frameworks even make it possible to implement username/password logins easily for protection.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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