<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Graeme Robinson on foojay.io - Friends Of OpenJDK</title><link>https://foojay.io/today/author/graeme-robinson/</link><description>Articles written by Graeme Robinson on foojay.io - Friends Of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 01 Sep 2026 14:07:36 +0000</lastBuildDate><atom:link href="https://foojay.io/today/author/graeme-robinson/index.xml" rel="self" type="application/rss+xml"/><item><title>Aggregation Optimization in MongoDB: Sorting With Indexes (Part 5)</title><link>https://foojay.io/today/aggregation-optimization-in-mongodb-sorting-with-indexes-part-5/</link><pubDate>Tue, 01 Sep 2026 14:07:36 +0000</pubDate><guid>https://foojay.io/today/aggregation-optimization-in-mongodb-sorting-with-indexes-part-5/</guid><description>&lt;p&gt;&lt;em&gt;And why MongoDB might be a better relational database than you ever realized.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://www.mongodb.com/events/mongodb-schema-design-reviews/?utm_campaign=devrel&amp;amp;utm_source=third-party-content&amp;amp;utm_medium=cta&amp;amp;utm_content=agg-part5-foojay&amp;amp;utm_term=tony.kim" target="_blank" rel="noopener noreferrer"&gt;&lt;em&gt;Design reviews&lt;/em&gt;&lt;/a&gt;&lt;em&gt;are one-on-one meetings where MongoDB experts deliver advice on data modeling best practices and application design challenges. In this series, we are going to explore common real-life scenarios where design reviews helped developers achieve meaningful success with MongoDB.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://foojay.io/today/aggregation-optimization-in-mongodb-sorting-with-indexes-part-5/fri1-2.png" alt="" width="700" height="307" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;In this series, we&amp;rsquo;ve described our steps to improve the performance of a slow running MongoDB &lt;a href="https://www.mongodb.com/docs/manual/aggregation/?utm_campaign=devrel&amp;amp;utm_source=third-party-content&amp;amp;utm_medium=cta&amp;amp;utm_content=agg-part5-foojay&amp;amp;utm_term=tony.kim#aggregation-operations" target="_blank" rel="noopener noreferrer"&gt;aggregation pipeline&lt;/a&gt;. The pipeline was part of a fictional video streaming service application, mapping user profiles to the devices those users were using to access the service, and was based on a real use case I&amp;rsquo;d encountered during a recent design review.&lt;/p&gt;</description></item><item><title>Aggregation Optimization in MongoDB: Data Duplication to Improve Read Performance (Part 4)</title><link>https://foojay.io/today/aggregation-optimization-in-mongodb-data-duplication-to-improve-read-performance-part-4/</link><pubDate>Mon, 31 Aug 2026 14:45:04 +0000</pubDate><guid>https://foojay.io/today/aggregation-optimization-in-mongodb-data-duplication-to-improve-read-performance-part-4/</guid><description>&lt;p&gt;&lt;em&gt;And why MongoDB might be a better relational database than you ever realized.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://www.mongodb.com/events/mongodb-schema-design-reviews/?utm_campaign=devrel&amp;amp;utm_source=third-party-content&amp;amp;utm_medium=cta&amp;amp;utm_content=agg-part4-foojay&amp;amp;utm_term=tony.kim" target="_blank" rel="noopener noreferrer"&gt;&lt;em&gt;Design reviews&lt;/em&gt;&lt;/a&gt;&lt;em&gt;are one-on-one meetings where MongoDB experts deliver advice on data modeling best practices and application design challenges. In this series, we are going to explore common real-life scenarios where design reviews helped developers achieve meaningful success with MongoDB.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://foojay.io/today/aggregation-optimization-in-mongodb-data-duplication-to-improve-read-performance-part-4/fri1-2.png" alt="" width="700" height="307" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;In this series, we&amp;rsquo;ve described our steps to improve the performance of a slow running MongoDB &lt;a href="https://www.mongodb.com/docs/manual/aggregation/?utm_campaign=devrel&amp;amp;utm_source=third-party-content&amp;amp;utm_medium=cta&amp;amp;utm_content=agg-part4-foojay&amp;amp;utm_term=tony.kim#aggregation-operations" target="_blank" rel="noopener noreferrer"&gt;aggregation pipeline&lt;/a&gt;. The pipeline was part of a fictional video streaming service application, mapping user profiles to the devices those users were using to access the service, and was based on a real use case I&amp;rsquo;d encountered during a recent design review.&lt;/p&gt;</description></item><item><title>Aggregation Optimization in MongoDB: Optimizing Many-to-Many Relationships (Part 3)</title><link>https://foojay.io/today/aggregation-optimization-in-mongodb-optimizing-many-to-many-relationships-part-3/</link><pubDate>Fri, 21 Aug 2026 16:00:40 +0000</pubDate><guid>https://foojay.io/today/aggregation-optimization-in-mongodb-optimizing-many-to-many-relationships-part-3/</guid><description>&lt;p&gt;&lt;em&gt;And why MongoDB might be a better relational database than you ever realized.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://www.mongodb.com/events/mongodb-schema-design-reviews/?utm_campaign=devrel&amp;amp;utm_source=third-party-content&amp;amp;utm_medium=cta&amp;amp;utm_content=agg-part3-foojay&amp;amp;utm_term=tony.kim" target="_blank" rel="noopener noreferrer"&gt;&lt;em&gt;Design reviews&lt;/em&gt;&lt;/a&gt;&lt;em&gt;are one-on-one meetings where MongoDB experts deliver advice on data modeling best practices and application design challenges. In this series, we are going to explore common real-life scenarios where design reviews helped developers achieve meaningful success with MongoDB.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://foojay.io/today/aggregation-optimization-in-mongodb-optimizing-many-to-many-relationships-part-3/fri1-1.png" alt="" width="700" height="307" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://foojay.io/today/aggregation-optimization-in-mongodb-a-case-study-from-the-field-part-1/"&gt;In Part 1 of this series&lt;/a&gt;, we described a use case based on a recent design review I conducted with a team at a MongoDB customer. The team in question was new to MongoDB, and the approach they had taken to both modeling their data and then subsequently querying it was very &amp;ldquo;RDBMS-like.&amp;rdquo; As a result, query performance was significantly slower than their SLA called for.&lt;/p&gt;</description></item><item><title>Aggregation Optimization in MongoDB: Unnecessary Unwinds (Part 2)</title><link>https://foojay.io/today/aggregation-optimization-in-mongodb-unnecessary-unwinds-part-2/</link><pubDate>Thu, 25 Jun 2026 10:01:00 +0000</pubDate><guid>https://foojay.io/today/aggregation-optimization-in-mongodb-unnecessary-unwinds-part-2/</guid><description>&lt;h2 id="and-why-mongodb-might-be-a-better-relational-database-than-you-ever-realized"&gt;And why MongoDB might be a better relational database than you ever realized.&lt;/h2&gt;&#10;&lt;figure class="size-full is-resized"&gt;&#10; &lt;img src="https://foojay.io/today/aggregation-optimization-in-mongodb-unnecessary-unwinds-part-2/tue11.png" alt="" width="700" height="307" style="aspect-ratio:2.2802192518511397;width:840px;height:auto" loading="lazy" class="is-zoomable"&gt;&lt;/figure&gt;&#10;&#10;&lt;p&gt;&lt;a href="https://www.mongodb.com/events/mongodb-schema-design-reviews/?utm_campaign=devrel&amp;amp;utm_source=third-party-content&amp;amp;utm_medium=cta&amp;amp;utm_content=agg-part2-foojay&amp;amp;utm_term=tony.kim" target="_blank" rel="noopener noreferrer"&gt;&lt;em&gt;Design reviews&lt;/em&gt;&lt;/a&gt;&lt;em&gt;are one-on-one meetings where MongoDB experts deliver advice on data modeling best practices and application design challenges. In this series, we are going to explore common real-life scenarios where design reviews helped developers achieve meaningful success with MongoDB.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;This article was written by Graeme Robinson. Find him on&lt;/em&gt; &lt;a href="https://www.linkedin.com/in/graemecrobinson" target="_blank" rel="noopener noreferrer"&gt;&lt;em&gt;LinkedIn&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://foojay.io/today/aggregation-optimization-in-mongodb-a-case-study-from-the-field-part-1/"&gt;In Part 1 of this series&lt;/a&gt;, we described a use case based on a recent design review I conducted with a team at a MongoDB customer. The team in question was new to MongoDB, and the approach they had taken to both modeling their data and then subsequently querying it was very &amp;ldquo;RDBMS-like.&amp;rdquo; As a result, query performance was significantly slower than their SLA called for.&lt;/p&gt;</description></item><item><title>Aggregation Optimization in MongoDB: A Case Study From the Field (Part 1)</title><link>https://foojay.io/today/aggregation-optimization-in-mongodb-a-case-study-from-the-field-part-1/</link><pubDate>Tue, 23 Jun 2026 13:17:32 +0000</pubDate><guid>https://foojay.io/today/aggregation-optimization-in-mongodb-a-case-study-from-the-field-part-1/</guid><description>&lt;h2 id="and-why-mongodb-might-be-a-better-relational-database-than-you-ever-realized"&gt;And why MongoDB might be a better relational database than you ever realized.&lt;/h2&gt;&#10;&lt;figure class="size-full is-resized"&gt;&#10; &lt;img src="https://foojay.io/today/aggregation-optimization-in-mongodb-a-case-study-from-the-field-part-1/tue11.png" alt="" width="700" height="307" style="width:840px;height:auto" loading="lazy" class="is-zoomable"&gt;&lt;/figure&gt;&#10;&#10;&lt;p&gt;&lt;em&gt;This article was written by Graeme Robinson. Find him on&lt;/em&gt; &lt;a href="https://www.linkedin.com/in/graemecrobinson" target="_blank" rel="noopener noreferrer"&gt;&lt;em&gt;LinkedIn&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://www.mongodb.com/events/mongodb-schema-design-reviews/?utm_campaign=devrel&amp;amp;utm_source=third-party-content&amp;amp;utm_medium=cta&amp;amp;utm_content=foojay.io&amp;amp;utm_term=tony.kim" target="_blank" rel="noopener noreferrer"&gt;&lt;em&gt;Design reviews&lt;/em&gt;&lt;/a&gt;&lt;em&gt;are one-on-one meetings where MongoDB experts deliver advice on data modeling best practices and application design challenges. In this series, we are going to explore common real-life scenarios where design reviews helped developers achieve meaningful success with MongoDB.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;MongoDB is often described as a non-relational database, but whenever we store data in a database, there are relationships within that data. Depending on the type of database we use, though, how we model those relationships may change. As my colleague Rick Houlihan &lt;a href="https://www.youtube.com/watch?v=ThmU8a2eVnw" target="_blank" rel="noopener noreferrer"&gt;has often pointed out&lt;/a&gt;, there really is no such thing as non-relational data.&lt;/p&gt;</description></item><item><title>Event-Driven Architecture in Java and Kafka</title><link>https://foojay.io/today/event-driven-architecture-in-java-and-kafka/</link><pubDate>Tue, 10 Mar 2026 18:35:42 +0000</pubDate><guid>https://foojay.io/today/event-driven-architecture-in-java-and-kafka/</guid><description>&lt;p&gt;Reactive Java is well suited to modern streaming, event driven applications. In this article, we&amp;rsquo;ll walk through an example of such an application using Reactive Java with MongoDB. Specifically, we&amp;rsquo;re going to cover:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Why Reactive Java was introduced and how it differs from more traditional Java programming.&lt;/li&gt;&#10;&lt;li&gt;Details of some of the key elements of Reactive Java - &lt;strong&gt;Mono&lt;/strong&gt; , &lt;strong&gt;Flux&lt;/strong&gt; and &lt;strong&gt;flatMap&lt;/strong&gt;.&lt;/li&gt;&#10;&lt;li&gt;A walk through of a sample application, comparing a Reactive version of the code using the Reactive Streams MongoDB driver, with a more traditional version of the code using the synchronous MongoDB driver.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="streaming-data---the-air-traffic-control-example"&gt;Streaming Data - The Air Traffic Control Example.&lt;/h2&gt;&#10;&lt;p&gt;As a key part of global initiatives to modernize national airspace systems, many national aviation authorities have introduced mandates requiring most non-military aircraft transmit GPS based location data using a system known as Automatic Dependent Surveillance Broadcast, or &amp;ldquo;ADS-B&amp;rdquo;.&lt;/p&gt;</description></item></channel></rss>