<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Nosql on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/category/nosql/</link><description>Recent content in Nosql on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 18 Dec 2025 12:02:22 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/category/nosql/index.xml" rel="self" type="application/rss+xml"/><item><title>Scalable Enterprise Java for the Cloud</title><link>https://foojayio.github.io/website/today/scalable-enterprise-java-for-the-cloud/</link><pubDate>Thu, 18 Dec 2025 11:41:51 +0000</pubDate><guid>https://foojayio.github.io/website/today/scalable-enterprise-java-for-the-cloud/</guid><description>&lt;p&gt;We&amp;rsquo;re excited to introduce &lt;a href="https://payara.fish/resource/scalable-enterprise-java-for-the-cloud/" title="*Scalable Enterprise Java for the Cloud*," target="_blank" rel="noopener noreferrer"&gt;&lt;em&gt;Scalable Enterprise Java for the Cloud&lt;/em&gt;,&lt;/a&gt;
 a new free eBook created through a close collaboration between &lt;a href="https://payara.fish/" title="Payara" target="_blank" rel="noopener noreferrer"&gt;Payara&lt;/a&gt;
, Java Champion &lt;a href="https://otaviojava.com/" title="Otavio Santana" target="_blank" rel="noopener noreferrer"&gt;Otavio Santana&lt;/a&gt;
, and the Oracle NoSQL team Dario Vega &amp;amp; Michael Brey. This project brings together different parts of the Java ecosystem with a shared goal, helping developers build modern, cloud-native enterprise applications using open standards.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://payara.fish/resource/scalable-enterprise-java-for-the-cloud/" title="**Download the free eBook here**" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Download the free eBook here&lt;/strong&gt;&lt;/a&gt;
 (no form fill necessary).&lt;/p&gt;</description></item><item><title>Semantic Caching with SpringBoot &amp; Redis</title><link>https://foojayio.github.io/website/today/semantic-caching-with-springboot-redis/</link><pubDate>Thu, 07 Aug 2025 06:58:07 +0000</pubDate><guid>https://foojayio.github.io/website/today/semantic-caching-with-springboot-redis/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; You&amp;rsquo;re building a semantic caching system using Spring AI and Redis to improve LLM application performance.&lt;/p&gt;
&lt;p&gt;Unlike traditional caching that requires exact query matches, semantic caching understands the meaning behind queries and can return cached responses for semantically similar questions.&lt;/p&gt;
&lt;p&gt;It works by storing query-response pairs as vector embeddings in Redis, allowing your application to retrieve cached answers for similar questions without calling the expensive LLM, reducing both latency and costs.&lt;/p&gt;</description></item><item><title>Your Complete Guide to Diagnose Slow Queries in MongoDB</title><link>https://foojayio.github.io/website/today/your-complete-guide-to-diagnose-slow-queries-in-mongodb/</link><pubDate>Tue, 17 Jun 2025 04:06:04 +0000</pubDate><guid>https://foojayio.github.io/website/today/your-complete-guide-to-diagnose-slow-queries-in-mongodb/</guid><description>&lt;p&gt;MongoDB is built to be fast. The real win comes from knowing how to keep it that way, even as your app grows and your data gets more complex.&lt;/p&gt;
&lt;p&gt;This tutorial is for those developers and engineers who want to understand how MongoDB behaves when queries or writes slow down. We&amp;rsquo;re not here to hand you indexing tips or premature advice about schema design. We&amp;rsquo;re here to walk through the actual tools MongoDB gives you to observe, measure, and reason about query performance, before you start optimizing anything.&lt;/p&gt;</description></item><item><title>Intro to RAG: Foundations of Retrieval Augmented Generation, part 2</title><link>https://foojayio.github.io/website/today/intro-to-rag-foundations-of-retrieval-augmented-generation-part-2/</link><pubDate>Tue, 10 Jun 2025 21:54:49 +0000</pubDate><guid>https://foojayio.github.io/website/today/intro-to-rag-foundations-of-retrieval-augmented-generation-part-2/</guid><description>&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/intro-to-rag-foundations-of-retrieval-augmented-generation-part-1/"&gt;the last post&lt;/a&gt;
, we discussed the basics of Retrieval Augmented Generation (RAG) and how it enhances the capabilities of Large Language Models (LLMs) by integrating them with external knowledge sources. We also introduced the concept of vector embeddings and their role in semantic search.&lt;/p&gt;
&lt;p&gt;In this post, we&amp;rsquo;ll dive deeper into the different layers of RAG, including vector RAG, graph RAG, and agents. We&amp;rsquo;ll explore how these layers can be combined to create more powerful and effective AI systems.&lt;/p&gt;</description></item><item><title>Sliding Window Log Rate Limiter (Redis &amp; Java)</title><link>https://foojayio.github.io/website/today/sliding-window-log-rate-limiter-redis-java/</link><pubDate>Tue, 04 Feb 2025 12:21:56 +0000</pubDate><guid>https://foojayio.github.io/website/today/sliding-window-log-rate-limiter-redis-java/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://youtu.be/bCYzRg0oQjY" target="_blank" rel="noopener noreferrer"&gt;This article is also available on YouTube. Check it out!&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;The Sliding Window Log is a &lt;em&gt;more precise&lt;/em&gt; way to handle rate limiting. Instead of splitting time into fixed intervals like the &lt;a href="https://foojayio.github.io/website/wp-admin/post.php?post=115337"&gt;Fixed Window Counter&lt;/a&gt;
 , it keeps a log of timestamps for each request. This allows it to track requests over a rolling time period, like the last second or minute, without abrupt resets at the end of an interval.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Rate limiting with Redis: An essential guide</title><link>https://foojayio.github.io/website/today/rate-limiting-with-redis-an-essential-guide/</link><pubDate>Mon, 13 Jan 2025 18:23:26 +0000</pubDate><guid>https://foojayio.github.io/website/today/rate-limiting-with-redis-an-essential-guide/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=YV4ePyW3DO8" target="_blank" rel="noopener noreferrer"&gt;This article is also available on YouTube!&lt;/a&gt;
 Rate limiting &amp;mdash; it&amp;rsquo;s something you&amp;rsquo;ve likely encountered, even if you haven&amp;rsquo;t directly implemented one. For example, have you ever been greeted by a &amp;ldquo;429 Too Many Requests&amp;rdquo; error? That&amp;rsquo;s a rate limiter in action, protecting a resource from overload. Or maybe you&amp;rsquo;ve used a service with explicit request quotas based on your payment tier &amp;mdash; same concept, just more transparent. &lt;img src="https://cdn-images-1.medium.com/max/3412/1*YKz05kbmkzQdws-DUsvhdw.png" alt="ChatGPT warning user that they have reached the limit of messages they can send in 24 hours." loading="lazy"&gt;
 Rate limiting isn&amp;rsquo;t just about setting limits; it serves a variety of purposes. Take Figma, for instance. Their rate limiter, built with Redis, saved them from a spam attack where bad actors sent massive document invitations to random email addresses. Without it, Figma could have faced skyrocketing email delivery costs and damaged reputation. Or look at Stripe: as their platform grew, they realized they couldn&amp;rsquo;t just throw more infrastructure at the problem. They needed a smarter solution to prevent resource monopolization by misconfigured scripts or bad actors. These stories show just how versatile rate limiting is. It prevents abuse, ensures fair access, manages load, cuts costs, and even protects against downtime. But here&amp;rsquo;s the kicker: the hard part isn&amp;rsquo;t knowing &lt;em&gt;why&lt;/em&gt; you need a rate limiter. The real challenge is building one that&amp;rsquo;s both efficient and tailored to your needs.&lt;/p&gt;</description></item><item><title>Flexible Jakarta EE Apps With Apache CouchDB NoSQL Database</title><link>https://foojayio.github.io/website/today/build-flexible-jakarta-ee-applications-with-apache-couchdb-nosql-database/</link><pubDate>Mon, 19 Feb 2024 07:33:38 +0000</pubDate><guid>https://foojayio.github.io/website/today/build-flexible-jakarta-ee-applications-with-apache-couchdb-nosql-database/</guid><description>&lt;p&gt;&lt;strong&gt;Are you a Jakarta EE developer interested in leveraging the power of NoSQL databases for your applications?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This webinar - &lt;a href="https://youtu.be/PVp40gXJ954?feature=shared" target="_blank" rel="noopener noreferrer"&gt;watch the recording here&lt;/a&gt;
 - is designed specifically to introduce you to the world of NoSQL through CouchDB, a high-performance, scalable database ideal for cloud-native applications.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/PVp40gXJ954?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;h2 id="h2-0-what-is-couchdb"&gt;What is CouchDB?&lt;/h2&gt;
&lt;p&gt;CouchDB is a NoSQL database used in distributed and cloud environments. It uses a schema-free JSON document format, which allows for more flexible and efficient data models.&lt;/p&gt;</description></item><item><title>Minimize costs utilizing the cloud with Spring-Data-Eclipse-Store</title><link>https://foojayio.github.io/website/today/minimize-costs-by-utilizing-cloud-storage-with-spring-data-eclipse-store/</link><pubDate>Tue, 13 Feb 2024 15:26:37 +0000</pubDate><guid>https://foojayio.github.io/website/today/minimize-costs-by-utilizing-cloud-storage-with-spring-data-eclipse-store/</guid><description>&lt;p&gt;Sooner or later any Spring application needs to store data. And of course, the first and easiest move is to utilize &lt;a href="https://spring.io/projects/spring-data-jpa" target="_blank" rel="noopener noreferrer"&gt;Spring Data JPA&lt;/a&gt;
. You can set up your data storage without knowing which relational database you will use in production and simply start coding without worrying about that.&lt;/p&gt;
&lt;p&gt;It is the easiest and most convenient way to store data (in a relational database like PostgreSQL), yet in the cloud environment it is also an expensive way. Pricing at AWS RDS starts at 30$/month with tiny-Instances and always have &lt;strong&gt;fixed monthly costs regardless of its usage&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Patterns For The Design Of Microservices – Part 2</title><link>https://foojayio.github.io/website/today/patterns-for-the-design-of-microservices-part-2/</link><pubDate>Mon, 30 Oct 2023 08:58:06 +0000</pubDate><guid>https://foojayio.github.io/website/today/patterns-for-the-design-of-microservices-part-2/</guid><description>&lt;p&gt;In the &lt;a href="https://foojayio.github.io/website/today/patterns-for-the-design-of-microservices-part-1/" title="previous article"&gt;previous article&lt;/a&gt;
, we discussed some of the design patterns employed in the creation of microservices. In this subsequent article, we will delve into the remaining patterns that are commonly utilized in the realm of microservices.&lt;/p&gt;
&lt;img fetchpriority="high" decoding="async" class="size-medium wp-image-102866" src="MSPatterns-700x394.png" alt="Microservice Architecture" width="700" height="394"&gt;
&lt;p&gt;Database Patterns&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;There are seven distinct patterns that further categorize the data management.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Database per Service&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shared Database&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Saga Pattern&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Command-Query Responsiblity Segregation (CQRS)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API Composition&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Domain Event&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Event Sourcing&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the next section, let&amp;rsquo;s discuss each pattern individually.&lt;/p&gt;</description></item><item><title>Book review: "Persistence Best Practices for Java Applications"</title><link>https://foojayio.github.io/website/today/book-review-persistence-best-practices-for-java-applications/</link><pubDate>Fri, 27 Oct 2023 08:56:21 +0000</pubDate><guid>https://foojayio.github.io/website/today/book-review-persistence-best-practices-for-java-applications/</guid><description>&lt;p&gt;&lt;strong&gt;In todays ever-evolving world, fast and efficient data management is becoming ever more important. With the explosion of digital data and diverse data sources, selecting the right database type, whether it&amp;rsquo;s traditional relational, NoSQL, or emerging options like NewSQL, has become pivotal. This also leads us to the next challenge for us, how do we integrate with this? Do we use JPA/JOOQ/&amp;hellip; ? Where/how do we map our data? What is a polyglot setup, and should we be using it?&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Journeys in Java, Level 8: Add MongoDB to Spring Cloud Config</title><link>https://foojayio.github.io/website/today/journeys-in-java-level-8-add-mongodb-to-spring-cloud-config/</link><pubDate>Thu, 09 Feb 2023 16:56:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/journeys-in-java-level-8-add-mongodb-to-spring-cloud-config/</guid><description>&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/journeys-in-java-level-7-externalize-microservice-configuration/"&gt;our last article&lt;/a&gt;
, we used Spring Cloud Config to provide database credentials to a microservice application connecting to a cloud-hosted Neo4j database. This post will backport this concept to our existing MongoDB database instance and its related microservices.&lt;/p&gt;
&lt;p&gt;We will add our MongoDB credentials to the config server, so that it will be the central place for both our Neo4j and MongoDB database access. However, each service only has access to the credentials that it needs to operate, which provides some level of security through &amp;ldquo;separation of concerns&amp;rdquo; (versus universal access).&lt;/p&gt;</description></item><item><title>Native GraphQL API with Neo4j AuraDB on Heroku</title><link>https://foojayio.github.io/website/today/native-graphql-api-with-neo4j-auradb-on-heroku/</link><pubDate>Mon, 08 Aug 2022 07:29:38 +0000</pubDate><guid>https://foojayio.github.io/website/today/native-graphql-api-with-neo4j-auradb-on-heroku/</guid><description>&lt;p&gt;In my first article on Foojay, I would like to present one of many possible approaches to create a GraphQL API. I work at &lt;a href="https://neo4j.com/" target="_blank" rel="noopener noreferrer"&gt;Neo4j&lt;/a&gt;
, so it should not be a big suprise that I will use the Graph database with the same name as a backend for the application.&lt;/p&gt;
&lt;p&gt;In this post I will cover a couple of things and I&amp;rsquo;ll start with a simple use case. Conceptually we will look at the &amp;ldquo;Schema-First&amp;rdquo; vs &amp;ldquo;Object-First&amp;rdquo; discussions and why - at least in my opinion - GraphQL can be seen much more like an object mapping concept than a query language itself. You will learn that while Neo4j is a Graph database, it does not have a built-in GraphQL layer. It does however a great query language called &lt;a href="https://neo4j.com/docs/cypher-manual/current/" target="_blank" rel="noopener noreferrer"&gt;&amp;ldquo;Cypher&amp;rdquo;&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>NoSQL Use Cases: When to Use a Non-Relational Database</title><link>https://foojayio.github.io/website/today/nosql-use-cases-when-to-use-a-non-relational-database/</link><pubDate>Thu, 28 Jul 2022 07:32:07 +0000</pubDate><guid>https://foojayio.github.io/website/today/nosql-use-cases-when-to-use-a-non-relational-database/</guid><description>&lt;p&gt;For decades, many companies have relied on relational databases to store, protect, and access their data.{#d8cf}&lt;/p&gt;
&lt;p&gt;SQL databases, in particular, worked well for a long time and still do for many use cases. But, today, there is a wide range of situations where SQL databases can no longer satisfy the needs of modern enterprises, especially those that have made the move to the cloud.{#d8cf}&lt;/p&gt;
&lt;p&gt;Increasingly, these companies are turning to NoSQL databases to meet their goals.{#d8cf}&lt;/p&gt;</description></item><item><title>MicroStream - Part 5: Caching, Integrations and Clustering</title><link>https://foojayio.github.io/website/today/microstream-part-5-caching-integrations-and-clustering/</link><pubDate>Wed, 06 Jul 2022 07:11:38 +0000</pubDate><guid>https://foojayio.github.io/website/today/microstream-part-5-caching-integrations-and-clustering/</guid><description>&lt;p&gt;&lt;strong&gt;In this last article of the series, we cover a few other MicroStream features: caching, clustering, and the integrations into other frameworks.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We have now covered three main aspects of MicroStream:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We have seen how you can &lt;a href="https://foojayio.github.io/website/today/microstream-part-2-configure-the-storage-manager/"&gt;configure the StorageManager&lt;/a&gt;
 to define where data is stored.&lt;/li&gt;
&lt;li&gt;We have discussed the &lt;a href="https://foojayio.github.io/website/today/microstream-part-3-storing-data/"&gt;strategy&lt;/a&gt;
 that you should follow to make sure the changes are also reflected in the storage so that we do not lose data.&lt;/li&gt;
&lt;li&gt;We described the &lt;a href="https://foojayio.github.io/website/today/microstream-part-4-serialisation-engine/"&gt;serialisation framework of MicroStream&lt;/a&gt;
 that stores the objects in a binary format so that it survives a process restart.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this last article of the series, we cover a few other features of MicroStream: caching, integrations into other products, and we discuss a major upcoming feature.&lt;/p&gt;</description></item><item><title>MicroStream Next-Generation Serialisation Engine</title><link>https://foojayio.github.io/website/today/microstream-part-4-serialisation-engine/</link><pubDate>Wed, 29 Jun 2022 08:07:20 +0000</pubDate><guid>https://foojayio.github.io/website/today/microstream-part-4-serialisation-engine/</guid><description>&lt;p&gt;&lt;strong&gt;In this fourth part we go deeper into the Serialisation engine that is within MicroStream to store the Object graph in a binary format.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the previous articles (&lt;a href="https://foojayio.github.io/website/today/microstream-part-1-what-is-it/"&gt;part 1&lt;/a&gt;
, &lt;a href="https://foojayio.github.io/website/today/microstream-part-2-configure-the-storage-manager/"&gt;part 2&lt;/a&gt;
 and &lt;a href="https://foojayio.github.io/website/today/microstream-part-3-storing-data/"&gt;part 3&lt;/a&gt;
), we have already mentioned that MicroStream stores Java instances in storage in a binary way with a new, from the ground up created, serialisation framework.&lt;/p&gt;
&lt;p&gt;In this article, we go a bit more in detail about the next generation Java serialisation that we have built to achieve the MicroStream Java Object database and how you can use it outside the functionality of storing the root object that makes up your database.&lt;/p&gt;</description></item><item><title>MicroStream: How to store your data?</title><link>https://foojayio.github.io/website/today/microstream-part-3-storing-data/</link><pubDate>Wed, 22 Jun 2022 11:10:55 +0000</pubDate><guid>https://foojayio.github.io/website/today/microstream-part-3-storing-data/</guid><description>&lt;p&gt;&lt;strong&gt;In the third article of the MicroStream series, we go into the details what you need to do so that data is stored externally to survive the process restart.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the previous articles in this series, we introduced the &lt;a href="https://foojayio.github.io/website/today/microstream-part-1-what-is-it/"&gt;main features of the framework&lt;/a&gt;
 and how you can &lt;a href="https://foojayio.github.io/website/today/microstream-part-2-configure-the-storage-manager/"&gt;configure the &lt;em&gt;StorageManager&lt;/em&gt;&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;Java instances in memory are your database but the &lt;em&gt;StorageManager&lt;/em&gt; makes sure that the data are persisted so that they are read the next time the runtime is started again.&lt;/p&gt;</description></item><item><title>MicroStream: Configure the StorageManager</title><link>https://foojayio.github.io/website/today/microstream-part-2-configure-the-storage-manager/</link><pubDate>Wed, 15 Jun 2022 08:04:11 +0000</pubDate><guid>https://foojayio.github.io/website/today/microstream-part-2-configure-the-storage-manager/</guid><description>&lt;p&gt;&lt;strong&gt;In this second article in the series, we cover how to get started configuring the StorageManager of MicroStream!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As we have discussed in the &lt;a href="https://foojayio.github.io/website/today/microstream-part-1-what-is-it/" title="introduction article"&gt;introduction article&lt;/a&gt;
 of this series, MicroStream provides you with a solution to use Java instances in memory as your database.&lt;/p&gt;
&lt;p&gt;You can access the data through getters, the Stream API, or any other method provided on the Java Objects.&lt;/p&gt;
&lt;p&gt;This means ultrafast, no mapping required, and no external system for your data.&lt;/p&gt;</description></item><item><title>MicroStream: High-Performance Java-Native-Persistence framework</title><link>https://foojayio.github.io/website/today/microstream-part-1-what-is-it/</link><pubDate>Mon, 06 Jun 2022 08:03:02 +0000</pubDate><guid>https://foojayio.github.io/website/today/microstream-part-1-what-is-it/</guid><description>&lt;p&gt;Within every application, data plays a very important role.&lt;/p&gt;
&lt;p&gt;In every industry, you have data, such as customer or product information, analysis results, patient data, or account data is a vital part of the business and the applications that support your business processes.&lt;/p&gt;
&lt;p&gt;Data must be in memory to be processed by your application, but must be stored outside of it because the application&amp;rsquo;s memory is temporary.&lt;/p&gt;
&lt;p&gt;Information is lost when the process ends unless we have stored it somewhere else in a sustainable way.&lt;/p&gt;</description></item><item><title>SQL vs. NoSQL: Pros &amp; Cons</title><link>https://foojayio.github.io/website/today/sql-vs-nosql-pros-cons-2/</link><pubDate>Thu, 21 Apr 2022 09:28:50 +0000</pubDate><guid>https://foojayio.github.io/website/today/sql-vs-nosql-pros-cons-2/</guid><description>&lt;p&gt;What&amp;rsquo;s the best way to store, protect and access your data?{#abb7}&lt;/p&gt;
&lt;p&gt;This is a fundamental, yet critical decision.{#abb7}&lt;/p&gt;
&lt;p&gt;After all, data is the cornerstone of success for just about every modern organization.{#abb7}&lt;/p&gt;
&lt;p&gt;For most companies, the choice comes down to SQL and NoSQL databases. Each has unique strengths and weaknesses.{#abb7}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQL databases have been a proven option since the 1970s. They are made up of highly structured tables, consisting of rows and columns, related to one other through common attributes. Every column is required to have a value for its corresponding row.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- --&gt;
&lt;ul&gt;
&lt;li&gt;NoSQL (&amp;ldquo;not only SQL&amp;rdquo; or &amp;ldquo;non-SQL&amp;rdquo;) databases came along later to break the relational table straitjacket, with the ability to store and access all data types, structured and unstructured, together.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;They&amp;rsquo;re extremely flexible and easy for developers to work with and modify. &lt;a href="https://www.datastax.com/what-is/nosql" target="_blank" rel="noopener noreferrer"&gt;Learn more about SQL and NoSQL databases and their basic differences&lt;/a&gt;
.{#3ad0}&lt;/p&gt;</description></item><item><title>Visualization of Business Function Message Flow with Vaadin and Neo4j</title><link>https://foojayio.github.io/website/today/visualization-of-the-message-flow-between-business-functions-with-vaadin-and-neo4j/</link><pubDate>Wed, 16 Mar 2022 08:21:10 +0000</pubDate><guid>https://foojayio.github.io/website/today/visualization-of-the-message-flow-between-business-functions-with-vaadin-and-neo4j/</guid><description>&lt;h2 id="_the_project"&gt;The Project&lt;/h2&gt;
&lt;p&gt;Analyzing and visualizing the message flow between business functions was the goal of my current project. At first we considered using a UML tool for this job, but we came to the conclusion that it might not be as flexible as we need it to be. Finally I&amp;rsquo;ve got the assigment to create a custom web application.&lt;/p&gt;
&lt;p&gt;Since business functions and messages are related to each other, it made sense to represent them as a graph. That&amp;rsquo;s why I chose &lt;a href="https://neo4j.com/" target="_blank" rel="noopener noreferrer"&gt;Neo4j&lt;/a&gt;
 as the database. Now the question was how to manage and visualize the graph. As I&amp;rsquo;m expierenced with the &lt;a href="https://foojayio.github.io/website/today/vaadin-and-jooq-match-made-in-heaven/"&gt;Vaadin&lt;/a&gt;
 framework I want to use it also in this project.&lt;/p&gt;</description></item><item><title>Have you upgraded to Cassandra 4.0 yet?</title><link>https://foojayio.github.io/website/today/have-you-upgraded-to-cassandra-4-0/</link><pubDate>Fri, 11 Mar 2022 08:35:20 +0000</pubDate><guid>https://foojayio.github.io/website/today/have-you-upgraded-to-cassandra-4-0/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/have-you-upgraded-to-cassandra-4-0/shutterstock_140530141-350x233-1.jpg" alt="" loading="lazy"&gt;
 © Shutterstock / Phototribe&lt;/p&gt;
&lt;p&gt;Alongside stability, Apache Cassandra 4.0 stands out for its ability to scale operations faster, its new auditing capabilities, and the way it embraces privacy by design. In this article, we&amp;rsquo;ll cover the new features and walk you through the steps required to upgrade to Cassandra 4.0.&lt;/p&gt;
&lt;p&gt;The general availability of Apache Cassandra 4.0 marks the most stable release in the project&amp;rsquo;s history.&lt;/p&gt;
&lt;p&gt;Even with the 4.0 beta 1 release back in July 2020, Project Management Committee (PMC) members were confident the latest version of the distributed NoSQL database would be ready to go to work with Apache Cassandra Committer; PMC member Sankalp Kohli at the time indicated that &amp;ldquo;users will be able to use the release knowing it is production-ready on day one.&amp;rdquo;&lt;/p&gt;</description></item><item><title>SQL vs. NoSQL: Pros &amp; Cons</title><link>https://foojayio.github.io/website/today/sql-vs-nosql-pros-cons/</link><pubDate>Wed, 09 Feb 2022 09:26:22 +0000</pubDate><guid>https://foojayio.github.io/website/today/sql-vs-nosql-pros-cons/</guid><description>&lt;p&gt;What&amp;rsquo;s the best way to store, protect and access your data? This is a fundamental, yet critical decision. After all, data is the cornerstone of success for just about every modern organization. For most companies, the choice comes down to SQL and NoSQL databases. Each has unique strengths and weaknesses.&lt;/p&gt;
&lt;p&gt;SQL databases have been a proven option since the 1970s. They are made up of highly structured tables, consisting of rows and columns, related to one other through common attributes. Every column is required to have a value for its corresponding row. NoSQL (&amp;ldquo;not only SQL&amp;rdquo; or &amp;ldquo;non-SQL&amp;rdquo;) databases came along later to break the relational table straitjacket, with the ability to store and access all data types, structured and unstructured, together. They&amp;rsquo;re extremely flexible and easy for developers to work with and modify. &lt;a href="https://www.datastax.com/nosql" target="_blank" rel="noopener noreferrer"&gt;Learn more about SQL and NoSQL databases and their basic differences&lt;/a&gt;
.&lt;/p&gt;</description></item></channel></rss>