Greenfield project: What is the best course of action? Is single node cluster ready for production?

Hello all,

I have been working on a project for a few months (if not more). Now I think is the time, I start the implementation that should go in production.

I am wondering whether to build my application directly using FDB starting from single node cluster and continue with that. Or should I rely on another storage engine namely WiredTiger (WT) until I outgrow my server. The tooted advantage of WiredTiger is that it requires Minimal Maintenance™.

I have no experience of production/operation whether it is FDB or WiredTiger (WT).

It seems to me going first with FDB could save time in the long run.

tl;dr: I am concerned single node cluster of FDB is not well supported. Have people already started projects from scratch and are now in production using single node cluster? Could you give some advice on how to jump into the wagon?

1 Like

I don’t have experience with WiredTiger (although so far I only heard good things about it). But I do have experience with FDB.

In general I see no reason FDB would not work on a single machine. You should even be able to scale up by adding more processes (with one process you will only utilize one core, so you probably would want to have more than one).

Running FDB on a single machine will have the obvious disadvantage that you will lose data if you lose this machine. But the same is true for WiredTiger (or any database that runs on a single machine). So as long as you take backups on a regular basis you should be fine

To address your specific concern: I guess there are very few single-node clusters in production systems out there (most people chose FDB because it is distributed). However:

  1. We (and I assume many others) use FDB single node extensively in development. We never saw issues apart from disk failures (and again: WiredTiger won’t make these go away magically).
  2. FDBs storage engine (sqlite) is probably one of the best tested pieces of software in the world and it is mostly used on single machines.
  3. FDB testing happens in a simulator. This simulator will chose cluster-size and replication-factor randomly. So ~1/3rd of all tests are done without replication. A single-machine cluster will probably run more stable than a distributed cluster with no replication (as you won’t have network partition and other kinds of nasty things).

If you expect your software to grow, choosing FDB will give you the big benefit that you can easily scale-out and add replication later. If you first chose WiredTiger and want to add more machines later I would expect that you will have a much harder time.