[abacus] MongoDB client


Hristo Iliev
 

Hi,

I now have the first version of a drop-in replacement client for MongoDB:
https://github.com/hsiliev/cf-abacus/commit/c29700aa996bf8169767f99ff3d815d4768a2608

The client still has some limitations:
* no support for ajax.rejectUnauthorized CouchDB option
* no support for skip_setup CouchDB option
* no support for keys, starting with $ (Mongo restriction)
* no support for custom backends (in-memory, lrudown cache, ...)

The eureka stub in my fork stores the port number with key different than $ to overcome the Mongo restrictions.

The client was tested with 2.x and 3.x versions of Mongo. All unit-tests pass without modification, and I started working on the integration tests.

We can add the mongo client as a new sub-module to:
* make the work on integrating and polishing the Mongo code more transparent
* allow reporting of issues for the new code (bugs, improvements, suggestions, requirements)
* start creating abstraction layer that can select one of the DB clients

What do you think?

Regards,
Hristo Iliev


Jean-Sebastien Delfino
 

Hi Hristo,

This looks really good!

+1 to merging this as a new module in master, and continuing the work
there, as then we can all work together on creating the abstraction layer
that'll select between the Couch/Pouch/Mongo clients, and also on making
the in-memory caches select the proper backend like I think you were
suggesting the other day on our slack channel.

Once your module is there in master, I can also help add a build config
option to have some of the CI builds run the tests with it, if that helps.

Thanks!

- Jean-Sebastien

- Jean-Sebastien

On Sun, Jan 24, 2016 at 1:33 AM, Hristo Iliev <hsiliev(a)gmail.com> wrote:

Hi,

I now have the first version of a drop-in replacement client for MongoDB:

https://github.com/hsiliev/cf-abacus/commit/c29700aa996bf8169767f99ff3d815d4768a2608

The client still has some limitations:
* no support for ajax.rejectUnauthorized CouchDB option
* no support for skip_setup CouchDB option
* no support for keys, starting with $ (Mongo restriction)
* no support for custom backends (in-memory, lrudown cache, ...)

The eureka stub in my fork stores the port number with key different than
$ to overcome the Mongo restrictions.

The client was tested with 2.x and 3.x versions of Mongo. All unit-tests
pass without modification, and I started working on the integration tests.

We can add the mongo client as a new sub-module to:
* make the work on integrating and polishing the Mongo code more
transparent
* allow reporting of issues for the new code (bugs, improvements,
suggestions, requirements)
* start creating abstraction layer that can select one of the DB clients

What do you think?

Regards,
Hristo Iliev


Hristo Iliev
 

Hi,

I merged the new client as "mongoclient" module.

For now the only way to try it out is to rename it to dbclient and replace the existing CouchDB client with it.

Regards,
Hristo Iliev