4

I'm currently trying to write a backup/sync system for myself (Dropbox etc don't cut it for my purposes), and I think I've identified the best way to do it.

The issue is, using a relational DB (like the local DB I just added into my .Net 4 project) is going to be insane, unless I were to break it up into heaps of ridiculous tables, and possibly modify the DB at runtime.

I was hoping someone would be able to point me to a no-rel/nosql DB built in .Net that doesn't require other running processes (e.g. works from a flat file, perhaps?) Due to the nature of this project though, it's going to get big. Like GBs big. (I have to store the latest version of each file, + the history diffs).

Thanks for your time.

P.S. Something like MongoDB would work for me, but I'm sure other NoSQL styles would be fine too.

[Edit for extra detail]

Seeing this project is going to be used as a local backup system, I'm looking for a DB system that doesn't require a process to be running etc. Unfortunately, this rules out RavenDB.

Also, the size of the database is going to exceed RAM, in some cases. As I understand it, this rules out dbo4.

[/Edit]

Liam Dawson
  • 1,189
  • 13
  • 27
  • 1
    Not really an answer to your question - but it sounds like Git version control will do this for you. While its mostly used for programming source code control, it will work really well for what you are trying to do (I think). And you can store your files remotely using git remotes. http://git-scm.com/ – MattW May 22 '12 at 15:07
  • I honestly only just started thinking about source control outside of programming contexts. Brilliant idea, just started to do something similar for my config files in Linux ( /etc as a repo ) – Liam Dawson May 23 '12 at 09:35
  • Glad it could help. I actually use git to publish my web app to different servers (and create "restore points"). Works really well. Git is pretty awesome. – MattW May 23 '12 at 16:40
  • I'm a mercurial fan myself, particularly since git has always been a pain to configure on Windows. Probably going to move to github now though, thanks to their better tooling for Windows (as of a week or so ago). – Liam Dawson May 25 '12 at 05:36
  • Yeah I saw that too. I am using http://code.google.com/p/msysgit/downloads/detail?name=Git-1.7.6-preview20110708.exe&can=2&q= but will probably switch soon. I have heard good things about mercurial too though. – MattW May 25 '12 at 11:55
  • The github tools uses msysgit, but just eliminates the need to use bash all the time. I just wished github allowed mercurial. – Liam Dawson May 26 '12 at 23:41
  • Im pretty sure codeplex and bitbucket will let you use mercurial. – MattW May 27 '12 at 13:49
  • Correct on both counts, but I'll be using bitbucket only for person repos, because github is the more popular for open-source. – Liam Dawson May 28 '12 at 08:45

3 Answers3

5

Another option is RavenDB which (quote):

Raven is an Open Source (with a commercial option) document database for the .NET/Windows platform. Raven offers a flexible data model design to fit the needs of real world systems. Raven stores schema-less JSON documents, allow you to define indexes using Linq queries and focus on low latency and high performance.

AdaTheDev
  • 142,592
  • 28
  • 206
  • 200
  • Unfortunately, that requires an actual DB service to be running, as far as I can see. This is highly undesirable... – Liam Dawson Apr 20 '11 at 04:17
  • 4
    Actually it doesn't require a Windows Service to be running. You can run RavenDB in an embedded mode from within the same process that executing your backup code... you wouldjust use ravend embedded dll and you're done. – bbqchickenrobot Jun 16 '11 at 03:55
1

I think you may use Berkeley DB

acoolaum
  • 2,132
  • 2
  • 15
  • 24
0

Check out db4o, I briefly used it in the past, no real complaints about it.

wsanville
  • 37,158
  • 8
  • 76
  • 101
  • Thanks for the response, but by the time this app has run for a while, the computer will be unable to keep the whole DB in memory at once, which would be the case when you loaded the object from the DB. – Liam Dawson Apr 19 '11 at 00:14