Reputation: 119
In a hypothetical arrangement where a number of users need to co-edit data which strategy would produce the best results:
1, a synchronised database such as pouchdb/couchdb. These offer support for multiple clients with the potential for offline data however more work must be done by the client app for data and permissions.
2, a realtime hosted database such as rethinkDb or deepstream. These offer more server logic.
3, database service api such a horizon or deployd offer a quick way to build backend apis on top of database
4, roll your own with something like sails/feathers/loop back allowing the full power of a backend.
To me it seems like a scale of options but things of importance are:
Initial development will be web based (browser/electron) with scope to move onto iOS/android apps. Ultimately I believe I'm unsure if best results can be achieved using a database or a rest api from an app.
Many thanks
Upvotes: 1
Views: 674
Reputation: 363
Full disclaimer I work at deepstreamHub [1], we built deepstream.io and use it to power our hosted cloud offering.
As far as I'm aware, what you're getting out of these is just a database (albeit very cool ones). They sync data between clients provide all kinds of different operations via their APIs [2].
Here it's important to note that deepstream is not a database, it's a realtime server that offers pub/sub, remote procedure calls, data-sync, as well as providing authentication strategies etc. rethinkDb is more similar to pouchdb/couchdb.
deepstream is database agnostic, in that we offer a variety of different cache and db connectors (rethinkdb being one of them). RethinkDb works very well with deepstream, in fact we often use the rethinkDb search provider [3] with deepstream to generate dynamic lists.
deepstream officially supports SDKs for JavaScript (Node.js included), Java and iOS.
As far as I can tell horizon is built on top of rethinkDb and offers a more platform based approach to development, providing authentication strategies etc.
Sails and feathers seem to provide a way of building RESTful / websocket based backends. They each have their use cases they are suited to.
I'd really recommend taking a look at this deepstream blog post An overview of realtime libraries and frameworks where there is a more of an indepth description of each service and what they offer.
[1] deepstreamHub
[2] PouchDB API docs
[3] deepstream rethinkDb connector
Upvotes: 2