What is our primary use case?
Couchbase Server's main use case for our organization is storing data in JSON format where we have the document ID we need to store. If data is in JSON form, we can use Couchbase Server, and it will provide a cache layer before storing the data. We are primarily using Couchbase Server to store JSON data itself, but there are many more usages. It is a NoSQL distributed database built on low latency and high throughput. We can store various data such as user sessions, preferences, and profiles.
Couchbase Server is particularly useful for user sessions and preferences. A session is commonly used to store temporary data for login purposes. Whenever a user enters their credentials, we first validate them. If validation is successful, we generally store the session information in the backend. The data that the user provides is in JSON form, where we can set the user ID, username, login time, and all related information. We store the data using a key prefix, which is session colon session ID, with the session ID generated in the Java backend. We set a timeout, and if we set any timeout, such as 50 minutes, the session will expire after that time, requiring the user to send the data again. We are also using an index to store query information.
In my current project, I have been working in the airline domain, so if a user is changing or rescheduling any ticket information, we need to send all modification information to our timers. Currently, we are using Couchbase Server as the primary database, where we need to store settings to perform operations in our project. We store settings in a way that identifies the records with a document ID provided by Couchbase Server. Couchbase Server's primary benefit is that our data is in JSON form, and it is very fast in comparison to saving and retrieval with low latency. We don't need to write extensive queries to fetch data; we write any Couchbase Server repository, and if we add that find by ID or something similar, it will fetch everything in less time.
What is most valuable?
Couchbase Server offers several valuable features, including the ability to store flexible JSON documents with any structure, and it provides an in-memory architecture with first reading, then writing capabilities. We can apply auto-scaling in Couchbase Server by adding multiple nodes, which automatically distribute the data across nodes while having built-in cache. When Couchbase Server is built, they provide a disk to store and cache together, so if data is in the cache, it will not hit the database directly; instead, it will fetch data from the cache.
Whenever we use SQL Server, we use queries to fetch data. Similarly, Couchbase Server provides N1QL queries for data retrieval. In terms of security features, Couchbase Server offers role-based access control with automatic encryption and TTL timeout settings for automatic destruction upon reaching the time limit. The security capability includes role-based access control at the bucket level and essentially at the scope level, granting access based on defined roles. It also supports various authentication types, including built-in username and credential systems and LDAP.
Couchbase Server has positively impacted my organization as every company deals with data, which we are storing in Couchbase Server. When a user interacts with Couchbase Server for the first time, it fetches data from the database and stores it in the cache, so subsequent hits fetch directly from the cache without going to Couchbase Server. We don't need to explicitly set any caching technology such as Redis or Hazelcast since it has its own cache, making Couchbase Server retrieval for data purposes comparable to others.
What needs improvement?
With one year of experience, I can suggest improvements for Couchbase Server. From what I have used, it is pretty good compared to other databases, especially since our data is in JSON format. It would be a great improvement for Couchbase Server to support various data structures beyond JSON, as supporting heavy complex queries would enhance its competitive edge. Allowing different formats would be beneficial.
Regarding needed improvements, I can note any technology associated with Couchbase Server. Recently, I used Java with Couchbase Server in my project, where Java provides documentation that we can utilize. Currently, we are embedded with Couchbase Server, and Spring has made a Couchbase Server repository for integration purposes.
To improve user experience, it would be beneficial for Couchbase Server to support various data structures, enabling compatibility with formats such as PDF, JSON, XML, and others.
Supporting every kind of data structure would be a substantial improvement for Couchbase Server.
For how long have I used the solution?
Recently, I have used Couchbase Server in my current company, and I have served one year completely in Couchbase Server.
What do I think about the stability of the solution?
In my experience, Couchbase Server is stable. While complex queries may take time, I have not encountered any significant issues, and I can say it is very stable as of now.
What do I think about the scalability of the solution?
Couchbase Server's scalability meets our needs, handling growth and changes in workload well. We employ auto-scaling based on memory utilization and health, enabling it to automatically scale, which is very helpful.
Which solution did I use previously and why did I switch?
I changed organizations, where Couchbase Server is used because our data is in JSON format and structured accordingly. In my previous role, we utilized a SQL database as our data was interdependent, but now, the JSON format is sufficient for our needs. The choice ultimately depends on the structure of data since relational databases are better suited for data with inherent relationships.
What other advice do I have?
Whenever we are dealing with a dashboard, we can use time annotations to calculate performance metrics. Currently, we are using GCP as a cloud service. We can add time rotation, so if we want to check performance or method outputs, we can utilize system.current time to measure the start and end time for the query operation, which depends on the complexity of the method. Optimized methods yield results in milliseconds, while more complex queries might take longer. I cannot provide an exact estimate, as it all depends on the data complexity. Using an index for frequently accessed data can be helpful since fetching from cache is faster compared to other methods.
I have not used Couchbase Server's AI capabilities yet. Currently, we are focused on storing and retrieving data faster with Couchbase Server, but I haven't had the chance to explore AI features.
I haven't utilized the AI capabilities of Couchbase Server, so I'm uncertain about its accuracy or reliability in output. However, Couchbase Server can handle billions of records, fetching them within milliseconds, but without firsthand experience in AI, I cannot provide thoughts on that aspect.
My advice for others considering Couchbase Server is to determine if the data is structured in JSON format, as it offers significantly improved facilities compared to others. I would rate this product an eight out of ten.
Which deployment model are you using for this solution?
Private Cloud
If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?
Google