Skip to content

Conversation

@tyaga001
Copy link
Owner

@tyaga001 tyaga001 commented Jan 23, 2026

Pull Request

Summary

Brief description of changes and motivation.

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that causes existing functionality to change)
  • Documentation update
  • Refactoring/code cleanup
  • [ ✅] Content update (blog posts, tools data, etc.)

Changes Made

  • Added a new article

Testing

  • Local development tested
  • Build passes (npm run build)
  • No TypeScript errors
  • No linting errors
  • Manual testing completed

Database Changes (if applicable)

  • Database migration included
  • Migration tested locally
  • Rollback plan documented

Content Changes (if applicable)

  • Tool data updated in src/lib/toolData.json
  • Blog post follows content guidelines
  • Images optimized and properly sized
  • SEO metadata updated

UI/UX Changes (if applicable)

  • Responsive design tested
  • Accessibility considerations addressed
  • Dark mode compatibility verified
  • Loading states implemented

Checklist

  • Code follows project style guidelines
  • Self-review completed
  • Documentation updated if needed
  • No new console warnings or errors
  • Performance impact considered

Screenshots/Demo

Related Issues

Additional Notes

Summary by CodeRabbit

  • New Features
    • Published a new blog article: "EloqDoc vs FerretDB vs MongoDB - A Comprehensive Benchmark Guide," featuring detailed benchmark results, throughput/latency charts, and multi-workload analysis.
    • Updated the blog index to include the new entry with metadata and cover image so it appears before the previous Part 3 post.

✏️ Tip: You can customize this high-level summary in your review settings.

@vercel
Copy link

vercel bot commented Jan 23, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
devtoolsacademy Ready Ready Preview, Comment Jan 23, 2026 6:42pm

Request Review

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 23, 2026

Walkthrough

Adds a new blog entry and its MDX page for "EloqDoc vs FerretDB vs MongoDB - Part 4: A Comprehensive Benchmark Guide", including metadata, images, and benchmark content; updates the blog listing to include this new post.

Changes

Cohort / File(s) Summary
Blog Data Configuration
src/app/blog/data.ts
Imported a new cover image and inserted a new blog object into the allBlogs array (slug: eloqdoc-vs-ferretdb-vs-mongodb-benchmark-guide) with metadata (author, title, excerpt, description, publishedAt, category) and flags (isNew: true, isFeatured: false).
Blog Page Content
src/app/blog/eloqdoc-vs-ferretdb-vs-mongodb-benchmark-guide/page.mdx
Added a new MDX page exporting metadata, rendering BlogHeader, and containing a detailed benchmark article (setup, workloads, throughput/latency results, embedded images, and CTAs).

Sequence Diagram(s)

(omitted — changes are content additions and data registration without multi-component control-flow alterations)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Description check ❓ Inconclusive The description uses the template structure and identifies the change type as 'Content update' with a bullet point added. However, most testing and verification checkboxes remain unchecked, and critical content guidelines sections lack confirmation. Complete testing checkboxes (build, TypeScript, linting), confirm content guidelines compliance (images optimized, SEO metadata), and provide details in the 'Changes Made' section with specifics about the article added.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: adding a new article about EloqDoc vs FerretDB vs MongoDB comparison. It is concise, specific, and directly reflects the primary purpose of the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@src/app/blog/eloqdoc-vs-ferretdb-vs-mongodb-benchmark-guide/page.mdx`:
- Around line 281-285: The MDX references image10 in the <Image ...
src={image10} /> usage but image10 is not imported; add a top-level import for
image10 (e.g., import image10 from '<correct relative path/to/image-file>') so
the static asset is available to the Image component, ensuring the import path
and filename match the repository image location and bundler conventions.
🧹 Nitpick comments (1)
src/app/blog/data.ts (1)

26-33: Align blog title with page metadata and series naming.

The listing title omits FerretDB and uses “Part4” while the page metadata/title includes FerretDB and uses standard spacing. This can cause inconsistent SEO and user expectations between the list view and the article page. Consider aligning the title string to the page metadata for consistency.

♻️ Suggested title alignment
-    title: "EloqDoc vs MongoDB - Part4: A Comprehensive Benchmark Guide",
+    title: "EloqDoc vs FerretDB vs MongoDB - Part 4: A Comprehensive Benchmark Guide",

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In `@src/app/blog/eloqdoc-vs-ferretdb-vs-mongodb-benchmark-guide/page.mdx`:
- Around line 48-82: The intro sentence that says "the underlying PostgreSQL for
FerretDB, MongoDB, and EloqDoc" should be changed to indicate PostgreSQL is used
by FerretDB only (leave MongoDB and EloqDoc as their respective backends), and
reconcile the memory numbers by making the cache settings match the stated 90 GB
constraint: change MongoDB's "internal cache was set to 100 GB" to "90 GB", and
change PostgreSQL's "100 GB effective cache size" to "90 GB" (keep
shared_buffers at 80 GB if desired) so all references to memory (the 90 GB
constraint, MongoDB cache, and PostgreSQL effective_cache_size) are consistent.
- Around line 159-161: The bold markup is broken because there's no space before
the opening ** in the throughput sentence; update the sentence lines containing
"MongoDB stays around** ~8,0xx QPS**" and "FerretDB stays around**~7,7xx QPS**"
to include a space before the bold markers (e.g., "MongoDB stays around **~8,0xx
QPS**" and "FerretDB stays around **~7,7xx QPS**"); optionally tighten the
sentence wording to keep emphasis intact (merge clauses or remove duplicate
markers) so the QPS figures render correctly.

Comment on lines +48 to +82
We used a 1 TB dataset on a machine with 110 GB of RAM. The underlying PostgreSQL for FerretDB, MongoDB, and EloqDoc will each be configured with 90 GB of memory, ensuring all three systems operate under the same memory constraints.

## Storage Layout

The key difference between the systems lies in where their data resides.

| System | Persistent Disk (MongoDB / FerretDB) |
| :------------------------ | :------------------------------------------------------------------- |
| **MongoDB** | Google Cloud pd-balanced persistent disk |
| **FerretDB (PostgreSQL)** | Google Cloud pd-balanced persistent disk |
| **EloqDoc** | 2.9 TB Titanium SSD (standardlssd) - used as the EloqDoc local cache |

## Disk performance

| Storage type | IOPS | Throughput |
| :---------------------------------------------------- | :--------------------- | :--------------------------------- |
| **Local NVMe (Titanium SSD)** | 750k read / 500k write | 3000 MiB/s read / 2500 MiB/s write |
| **3.0 TB pd-balanced Persistent Disk (Google Cloud)** | 3000 read / 3000 write | ~140 MiB/s |

## Database Configuration

### MongoDB

MongoDB was deployed using version 8.2.2 with the WiredTiger storage engine. Its internal cache was set to 100 GB, and journaling was enabled with a 1 ms commit interval, which effectively makes every write synchronous.

All MongoDB data files were stored on the pd-balanced persistent disk mounted at /mnt/d1. This means that whenever a request misses the 100 GB cache, MongoDB must fetch data from a network-attached disk.

### FerretDB

FerretDB v2.7.0 was used together with PostgreSQL 16 and the DocumentDB extension, which provides MongoDB-compatible behavior on top of PostgreSQL.

PostgreSQL was configured with:

- **80 GB** of shared buffers
- **100 GB** effective cache size
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Align memory-budget narrative and backend references.

Line 48 attributes PostgreSQL to MongoDB and EloqDoc (only FerretDB uses PostgreSQL). Also, the stated 90 GB memory constraint conflicts with the 100 GB cache settings in Lines 71 and 81-82. Please correct the backend attribution and reconcile the memory numbers so the setup is consistent.

🤖 Prompt for AI Agents
In `@src/app/blog/eloqdoc-vs-ferretdb-vs-mongodb-benchmark-guide/page.mdx` around
lines 48 - 82, The intro sentence that says "the underlying PostgreSQL for
FerretDB, MongoDB, and EloqDoc" should be changed to indicate PostgreSQL is used
by FerretDB only (leave MongoDB and EloqDoc as their respective backends), and
reconcile the memory numbers by making the cache settings match the stated 90 GB
constraint: change MongoDB's "internal cache was set to 100 GB" to "90 GB", and
change PostgreSQL's "100 GB effective cache size" to "90 GB" (keep
shared_buffers at 80 GB if desired) so all references to memory (the 90 GB
constraint, MongoDB cache, and PostgreSQL effective_cache_size) are consistent.

Comment on lines +159 to +161
MongoDB and FerretDB remain essentially flat across concurrency. MongoDB stays
around** ~8,0xx QPS** from 64 through 1024 threads, and FerretDB stays around**
~7,7xx QPS**. This suggests both systems saturate quickly once writes are
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix broken bold markup in throughput paragraph.

The missing space before ** breaks bold rendering for the QPS figures. Consider tightening this sentence to keep the emphasis intact.

📝 Proposed fix
-MongoDB stays
-around** ~8,0xx QPS** from 64 through 1024 threads, and FerretDB stays around**
-~7,7xx QPS**. This suggests both systems saturate quickly once writes are
+MongoDB stays around **~8,0xx QPS** from 64 through 1024 threads, and FerretDB stays around **~7,7xx QPS**. This suggests both systems saturate quickly once writes are
🤖 Prompt for AI Agents
In `@src/app/blog/eloqdoc-vs-ferretdb-vs-mongodb-benchmark-guide/page.mdx` around
lines 159 - 161, The bold markup is broken because there's no space before the
opening ** in the throughput sentence; update the sentence lines containing
"MongoDB stays around** ~8,0xx QPS**" and "FerretDB stays around**~7,7xx QPS**"
to include a space before the bold markers (e.g., "MongoDB stays around **~8,0xx
QPS**" and "FerretDB stays around **~7,7xx QPS**"); optionally tighten the
sentence wording to keep emphasis intact (merge clauses or remove duplicate
markers) so the QPS figures render correctly.

@tyaga001 tyaga001 merged commit 6ed3485 into main Jan 26, 2026
6 checks passed
@coderabbitai coderabbitai bot mentioned this pull request Jan 30, 2026
27 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants