-
Notifications
You must be signed in to change notification settings - Fork 28
Feat: New article Eloqdoc vs FerretDB vs MongoDB #166
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
WalkthroughAdds 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
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)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
There was a problem hiding this 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",
There was a problem hiding this 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.
| 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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
| 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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Pull Request
Summary
Brief description of changes and motivation.
Type of Change
Changes Made
Testing
npm run build)Database Changes (if applicable)
Content Changes (if applicable)
src/lib/toolData.jsonUI/UX Changes (if applicable)
Checklist
Screenshots/Demo
Related Issues
Additional Notes
Summary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings.