Couchbase Most Dreaded Database, why?

Why is Couchbase ranked the most dreaded database on StackOverflow Survey 2019?

Probably because of lack of balance between the community edition and the enterprise edition.
How can Couchbase company discard updates for community edition for several months (like version 6.0.1)?
And how can it stripe the community edition of important features that are present in enterprise edition?

I think this unbalancedness is a huge disadvantages of Couchbase and one of the main reasons of being ranked as the most dreaded database.

This is my opinion.


Thank you for your inquiry! And thank you for your recent participation on the Couchbase forums.

We actually are thrilled to have made the list of databases being considered on the StackOverflow survey. There are many databases that we not even considered.

As you can imagine, we have had a fair bit of internal discussion on these results, and the underlying premise and logic beneath the ‘dreaded’ and ‘loved’ metrics. I think you will see some more from us in the near future on them.

You’ve asked some fair questions about CE, and there are those who agree with your observation regarding what you described as “unbalancedness”.

Perhaps you can answer a couple of additional questions:

  • Which features do you feel we should prioritize for CE?
  • As a developer, how would you like to experience a robust data system like Couchbase for the first time?

Thank you!


1 Like

Which features do you feel we should prioritize for CE?

These features:
1- Always latest update for CE. Both CE and EE have latest update at the same time.
1.5- Patches and maintenance updates
2- peer to peer sync for Couchbase Lite CE

  • As a developer, how would you like to experience a robust data system like Couchbase for the first time?

I’d like to easily find easy and friendly and long and informative docs and tutorials about topics like adding sync for mobile apps for a programmer like me, who has very little knowledge about server and establishing connections.
I also would like to get quick responses from

Have you had an opportunity to take a look at the tutorials here? I’m interested in learning about your thoughts on the existing docs/tutorials, particularly on the mobile side. If there are ways you think we can improve, or other types of examples you’d like to see please let me know!

@robert.hedgpeth Ways to improve? Treat the reader as a baby and the tutorial babysits the reader.
Or treating the reader as unaware of what is technical database and ports and client/server processes and details, and terms used in the tutorial or docs.

This is my opinion and suggestion only

@vanilla Would you happen to have an example of a tutorial you’ve had trouble working with? Would it be possible for you to highlight some areas you’ve had trouble understanding so that we can add more/better details to? I’m very eager to understand some specific changes you’d like to see. Then that will give us a better idea of your expectations, and a starting point for improving the tutorials and documentation.

@robert.hedgpeth okay
I was searching for a tutorial about adding replication with sync gateway for apps that use Couchbase Lite.
I only got tutorials that used Sync Gateway in memory walrus: database, no tutorials about persistent database with Couchbase Server.
This one for example,
And there you can only see “Swift” implementation for this project, no Android or Xamarin.

But I might have exaggerated the quality of the docs and tutorials, but anyway, in that example, I see no navigation or linking to the implementations of that TODO app sample easily.
I might be able to google and try to find it, but it would be easier if it where linked in the tutorial.

Changing the underlying database for Sync Gateway won’t affect how things work in general. The only thing you need to worry about in that scenario is setting Sync Gateway’s config file to use Couchbase Server which is described in the getting started guide here: Getting Started | Couchbase Docs

@bbrks Mine is same as the one in the tutorial, I just changed the name of the bucket and user and password and added “num_index_replicas”:0,

But still nothing works
Is it okay if I just write the replication code only once in the singleton of my app, like this one:

const Couchbase = require(‘nativescript-couchbase-plugin’).Couchbase;

const stock = new Couchbase(‘stock-database’);

const push = stock.createPushReplication(
const pull = stock.createPullReplication(


module.exports.stock = stock;

Is my link to the Sync Gateway ‘ws://localhost:4984/stock-database’

I think this is nearly a month I am trying to enable and get the replication to work

@robert.hedgpeth Deep down in my heart, I have love for Couchbase, it is advanced, nice, cool, and provides many features that other don’t.
But I want best for Couchbase, to make itself popular and growing, I suggest putting profits aside and putting community spirit in the core of Couchbase.

@bbrks Syncing issue solved, the problem was using as the IP address of the server.

I have to agree with everything @vanilla has said, it is really not easy for a small company to engage with Couchbase, the ecosystem is geared to corporate clients who will have access to multiple developers creating native mobile applications, small companies like myself that choose technology stacks for hybrid development in order to minimize costs are not adequately catered for. My company used Ionic which in turn uses the cordova plugin which when I last looked was helplessly out of date and the documentation around it was archaic.

@papa-n1ql asked what features should be prioritized for CE and mentioned internal discussions around this. The fact is that small companies need to start with the CE edition to save costs but they need to deploy a live production ready platform in order to onboard customers. Once they have customers they will be able to invest in licenses.

For me the answer is very very simple … enable small companies with the CE edition to be able build platforms that can be seemlessly migrated to the Enterprise edition when the platform starts to become successful.

For me this means -

1 - Always have latest update of CE in line and to the same quality as EE and always provide patches and updates to CE at the same time as EE - If my application is not robust and bug free, I won’t get customers and I won’t reach the point where EE becomes commercially viable

2 - Couchbase lite encryption is required for CE - If I approach a client and they ask if my databases are encrypted and I say no, then for a lot of clients this is a show stopper

3 - Robust and fully up to date, tested and certified plugins for hybrid frameworks - This would really really help

I agree with @vanilla that couchbase is a brilliant database and that is why I want to use it. If you could just remove the chicken and egg situation for small businesses and allow them to start small and grow seemlessy to become EE customers.


@geraldapeoples I was using a hybrid framework, too, specifically PhoneGap Desktop with Framework7, but I felt it was not enough for a large project, then I switched to NativeScript Sidekick, and I feel it is marvelous, it provides 100 cloud builds for free every month!
Also, NativeScript has a nice marketplace website for easily finding plugins, and Alhamdulilah it has this Couchbase Plugin, I think it uses CB Lite version 2.1.1

NativeScript is a reason made my developer life much easier, it has HMR, easy testing and debugging, webpack (can be enabled by one click), auto icon and splash screen generator (for different screen sizes and densities), and it produces native apps, which are very fast.
It provides three flavors, Vanilla JS, TypeScript, Angular, and Vue.

1 Like

We really like Couchbase and use the CE version. We think the documentation and forum support is great. I reported several bugs which got fixed. But not in CE right away… the delayed bugfixes for CE leave a bad feeling for us. At the moment we are on 6.0.0.

I feel that you are targeting large enterprises. But I think more people should know about CB and the great stuff you are doing with N1QL. But your strategy on large enterprises with CE vs EE might be counterproductive with regards to adoption of smaller startups. It can create a burden and frustration: e.g. In the beginning when we discovered Couchbase we spent weeks starting and building stuff with Couchbase just to figure out in the end that a feature I used during development is not available in CE (e.g. GSI index replication).

It would be great to just have one version of CB.


@vanilla … Thank you for the feedback on nativescript, it is definitely a framework that we have looked at and liked but haven’t had the time to make the migration yet, we will definitely be looking to move as soon as we can :o)

1 Like

I also belong to a small company: only three developers, and of them only I delve with CB, we use CE (my boss tried to find a suitable license for me, but he desisted and said CB licenses were meant only for large enterprises).

I love working with CB, but since encryption was removed from CE i was told from my boss to find another alternative.

I am hoping encryption will be made available again in CBLite CE in an up coming version…


I agree with the sentiments from @vanilla I’m not a knowledgeable developer but I find Couchbase documentation really difficult to understand and not intuitive at all. This compared to for instance the excellent documentation of Mongo DB or pretty good documentation of Arango DB.

The problem in my view comes from several aspects of how the documentation is done. There’s a lot of industry jargon that might mean something to the right person but doesn’t necessarily mean something to someone else and doesn’t allow them to get a sense of how the functionality might affect them or how to use it.

Here’s an example from the documentation on Couchbase Eventing Functions “In the Couchbase cluster, you can use the Functions to process and respond to data-changes according to an Event-Condition-Action model.”

Now, I’m sure someone who wrote that thought they were saying something but it’s almost exclusively jargon.

What would be far better is getting into specific scenarios, “say you’ve got a remote sensor that’s reading temperatures and posting them to the database periodically. Each temperature reading could trigger an analysis to see if the figure was abnormal by comparing it to other temperatures during the same period of the year in other years to tell if there’s likely a fire starting. If it turns out those temperatures are abnormally high or rising too fast it could initiate an alarm”.

Now, I’m not even totally sure the eventing service can do that but notice how it puts it into terms that a normal person can understand.

Later in the documentation they attempt to do this by giving some examples with for instance an ecommerce store mentioning how a customer order could trigger a change in inventory levels. This gives me an idea of what I think it can do but it’s not very clear because it assumes the reader understands what it is saying. It leaves me wondering “hang on, wouldn’t the order automatically decrease the inventory levels anyway? Why do I need this eventing service for a situation like that?”

Good documentation would address those questions, it might suggest something like “you’re working with a drop shipping company in China and it can initiate a function that messages their system to reduce their available inventory count so the inventory doesn’t get sold twice while your order is being processed”.

The thing is the Couchbase documentation assumes the readers are too smart. It uses far too few examples, the examples tend to be too vague or high level, it often tries to explain it using code rather than scenarios first. For instance, I was just watching some videos where they were explaining the use of JOINs and is talking about airports and routes. But rather than explaining “well you’ve got an airport and that airport has multiple different routes flying into and out of it. Because these routes have both a destination and an origin city if you were to store them both in the destination airport and origin airport documents then if the route got updated you’d need to change it in both locations and you could risk only changing it in one and not the other and creating confusion. So instead, it’s better off to store each route as its own document and then when you’re looking up the airport and want to show all the possible routes/destinations from that airport you can reference all of the routes connected to that airport. You can do this by referencing the airport code that is common in both documents. The code would look something like this…” Then, when you’d go through the code you’d do something like underlining and explaining each part as it is described.

As it stands you can work your way through it but it’s definitely far more painful than it needs to be if someone doesn’t have previous experience with it.

Something else, you need to constantly reinforce the same concepts over and over again when you’re using your own terminology. For instance, Couchbase uses the term “bucket” to mean something very specific that isn’t common in many other systems so you periodically need to remind what does the bucket refer to and point to something tangible so the person can understand.

I’ve seen a bunch of people coming from SQL in comments on videos when they encounter NoSQL saying they are lost and the concept doesn’t make sense to them, which I find weird because for me NoSQL makes tons of sense but this is a good example of it. They don’t get what a document is or what a collection is and therefore how it relates so you need to keep referencing over and over. Hey, imagine you’ve got a row of data now pull it out and display it vertically in JSON format. Boom, you’ve got your document. Ok, so that document you can add to a collection, just like how you can have many rows on a table. Etc.

I was reading over the documentation on creating Views for queries, what a nightmare, not intuitive at all. Once you get the sense of it the approach is very elegant and though I went in thinking not having collections like I was used to in other Document databases seemed like a disability I came out feeling like actually this is probably a much better way. But understanding how it works in advance is difficult and then understanding best practices to optimize is yet another complication because there’s not enough hand holding.

Hope that helps, I really love what Couchbase has built, it’s one of the coolest database products out there and keeps getting better more so than many competitors but I also notice when I talk to people they are saying “I’d like to recommend Mongo DB or Cloud Firestore” and why? Because those guys make it really easy to understand they are super start-up and developer friendly but it doesn’t need to be.


@Michael_Rosmer WRT you issues with the Eventing documentation.

Here’s an example from the documentation on Couchbase Eventing Functions “In the Couchbase cluster, you can use the Functions to process and respond to data-changes according to an Event-Condition-Action model.

Now, I’m sure someone who wrote that thought they were saying something but it’s almost exclusively jargon.

IMHO this description is indeed correct. Refer to Event_condition_action on WikiPedia.

An Eventing Function responds to a mutation (change of data), allows arbitrary user logic to be applied via custom JavaScript code, and allows an action to be taken. Actions include KV operations, N1QL statements, cURL interaction to external REST endpoints, and logging something to the Application log files(s).

What would be far better is getting into specific scenarios, “say you’ve got a remote sensor that’s reading temperatures and posting them to the database periodically.

As to this comment, you are actually in luck as of the 6.6.0 GA we took your idea to heart. In the latest release there are now nine (9) detailed step by step real world examples and sixteen (16) short “scriptlets” that highlight exactly what the Eventing Service is and what it is capable of. Refer to eventing-examples.html

Of course all documentation can be improved, if there is a specific nit or issue my all means hit the Feedback link on the specific page (or section) and just let us know how we can clarify things that bother you.


Jon Strabala

I believe the biggest mistake Couchbase is doing is that it doesn’t really care about their community. I am sure they think they do but is not really true. What they’re doing is the bare minimum.

Somehow Couchbase doesn’t understand the concept of the funnel. Meaning that in order to have high sales you need to have a very large community of people using your technology. And in order to do this, it is not just enough to have an opensource version of your software but to offer support to people which are really spending their time to learn your technology. Couchbase need to have " technical advocates" in every company to push for their technology.

My experience is that it is super frustrating to not find the correct documentation (look in the PHP documentation. There is absolutely minimum), to not have your questions answered on this forum ( I personally have more than 5-7 questions without an answer (or a useful one)) or to get an answer after one week when you have already found a solution (which maybe not the best one) or after you have become super frustrated.

Somehow Couchabse believes that if they keep documentation at a minimum you will pay for support, but they don’t understand that medium and large companies who can afford to buy their licenses would buy no matter if they have inside technical expertise, because they don’t want to risk a big project because of not having support. People in these companies don’t want to lose their jobs because they haven’t recommended buying a license to their manager. And a company who makes money would not risk to lose it for not buying a Couchbase license.

Also, having the community by their side, they will minimize the support costs as people will start to help each other.

My experience is that Couchabse is a super robust DB, I could not crash it and lose data, no matter what I did to the DB (from restarting servers in a middle of a rebalance, or adding servers in the middle of a rebalance, or with faulty nodes, etc) it always recovered flawlessly. So the technology is amazing, but the support is top shit (sorry for my expression).

I don’t know if anyone from Coouchbase will take my answer into account, and I don’t know how I can tag Couchbase CEO to this thread, but Couchbase would be 100 times better with more support for the community. I would let go the majority of the salespeople, make the ordering and renewal process online, and move all these resources into writing content and answer user questions. This way the end result is that Couchbase will have a larger pool of advocates and people using/loving this amazing technology.

@flaviu I am sorry you are having a less than stellar experience on our community support forums.

I reviewed every unanswered topic that you have started, unfortunately I am not a PHP person but at least I was able to answer one of your questions (link).

As to your comments today (above) I will escalate this to the appropriate individual at Couchbase to address.

Sorry for the trouble on the PHP documentation. I’m in charge of the building of the SDKs, including the PHP. We have been in the process of adding more and better resources to the docs and the documentation team is bringing more folks on to work on developer documentation.

Also, my colleague and co-founder @steve and I have been working toward making improvements in many of the areas you describe. You may have noted the new and we have a few other projects underway.

Thanks for the feedback and your message has definitely been heard. Feel free to DM me if there is anything you feel we’re missing that we shouldn’t be.

1 Like