Foundation DB

My company is starting to make use of Datomic. Coincidentally, we are also adding FoundationDB to our stack and we have an interest in making FoundationDB usable as a storage back-end for Datomic. FoundationDB had an SQL layer that was implemented at one point but I do not think that it has been maintained and I believe we will need to do some work to expose FoundationDB properly to Datomic.

If I was interested in implementing a new storage target for Datomic (i.e. FoundationDB), where would I begin? Does Datomic have a set of Clojure protocols or something similar that would need to be implemented or is it more like a standard JDBC driver? If it is JDBC, does it have to be a full implementation or are their specific interfaces/levels that would be sufficient to satisfy Datomic’s requirements? Any guidance would be very much appreciated.

And of course, if this has already been done, please point me toward any resources that explain how.

Thank you!

There is no public storage SPI, your only path would be to emulate one of the supported storage services’ APIs sufficiently to support what datomic needs. Datomic only uses a small fraction of what something like SQL or Cassandra offer, but it is an implementation detail, so you’d be in pretty tough territory. Probably not worth the effort…especially considering that support for storage backends have been removed more than added over the years.

Hi MafcoCinco,

Datomic SQL storage should work with any correct JDBC implementation.

While Datomic does not currently require every corner of JDBC, we have not specified a subset, so you should stick to complete JDBC implementations.

Stu

Thanks @stu and @adam, I appreciate the feedback. Seems like a JDBC implementation will be the way to go.