title: Best way to store remote database locally for offline usage (without running mysql server locally)?
body: <p>Good morning fellow friends of paleness. </p>
  
  <p>Please help me find a good approach to solve the following problem:</p>
  
  <p><strong>What am I trying to do?</strong></p>
  
  <p>I would like to create a c# software that does the following two things:</p>
  
  <ol>
  <li>The first part is a database where the user can store contact information. Each set of data consists of around 10 fields, not more than a couple of hundred contacts will be stored, and less than twenty users will have access to the database.</li>
  <li>Secondly the user shall be able to select a subset of the data by applying filters. He then should be able to send personalized emails to the contacts in these subsets.</li>
  </ol>
  
  <p><strong>What are the constraints?</strong></p>
  
  <ul>
  <li>I would like to store the contact data mainly on a remote server that has mysql capability</li>
  <li>However, when a user is offline, I want him to still be able to access the data, so a way to store the data locally is needed. Selecting subsets and saving email jobs for later execution shall be possible in offline mode</li>
  <li>I do not want the user need to install or start any server locally when he uses the program</li>
  <li>When the user goes online the local and the remote data will be synchronized</li>
  </ul>
  
  <p><strong>What is the problem?</strong></p>
  
  <p>The solution I came up with was to store the data locally either in an XML file or embed a database like sqlite in the program. But XML will not be a good choice for the "selecting a subset" feature and both approaches will need conversion to mysql I figured. I know the amount of data is not that big, so maybe either approach is fine. But maybe someone has a better idea altogether?</p>
  
  <p>It would be great to hear your thoughts on how to store the data locally.</p>
  
  <p>Cheers, Essi</p>