Hacker News new | ask | show | jobs
by redka 3352 days ago
Not exactly Firebase in that it doesn't provide an arbitrarily nested JSON structure as a datastore but more of a document-based approach. Overall a pretty good alternative to Firebase but there is no security rules, no default data store or auth so you need a lot more work. Lists are not very good being just a record with an array of record keys and not the actual data. I use the self-hosted version (deepstream.io) at work where we can't use Firebase because of company policy and regulations.
2 comments

We switched from firebase to deepstream, and are hosting it ourselves.

With firebase since we were not running a node or java app, we ended up relying heavily on the rest interface. Which was sort of the not well taken care of. We would see crazy spikes and we could not get support to fix it. Multi tenancy would occasionally cause other performance issues.

We eneded up running a bit of a monkey patched system for awhile using kineses to pipe updates to a java/node app which then would write updates via the web socket interface.

Firebase also lacked support for pub/sub events, which can be sort of faked, but not entirely reliably.

Deepstream model is a bit different as you said, and it does have some weaknesses. I have submitted a number of patches already to fix some of the edge cases i've run into and will likely submit more.

Unlike firebase, we can actually directly improve the deepstream application core as well as build options into the platform that better support our use cases.

Yes. Firebase needs your apps to written in JS or Java. The lack of support for pub/sub was never a problem for me though since the channelRef.push(msg).remove() works 100% reliably.
Deepstreamhub member here: The platform, similar to Firebase supports multiple Auth strategies and has a fine grained permission language called Valve, similar to Firebase's Bolt. Please find an overview of security concepts here https://deepstreamhub.com/tutorials/guides/security-overview...

Dsh allows you to store arbitrary data, but breaks it down into smaller chunks a large Mongo or Couch db.

As these smaller chunks have their own life cycle lists make it easy to use them within iterators, e.g. For each in Vue etc, where every component manages bits own granular document