<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: akorotkov</title><link>https://news.ycombinator.com/user?id=akorotkov</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 02 Jul 2026 01:28:27 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=akorotkov" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by akorotkov in "Looking Forward to Postgres 19: Query Hints"]]></title><description><![CDATA[
<p>We keep going.  Planning GA till the end of this year.  Only a couple of missing features left.  The main focus is stability.</p>
]]></description><pubDate>Tue, 09 Jun 2026 13:15:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=48460729</link><dc:creator>akorotkov</dc:creator><comments>https://news.ycombinator.com/item?id=48460729</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48460729</guid></item><item><title><![CDATA[New comment by akorotkov in "OrioleDB Patent: now freely available to the Postgres community"]]></title><description><![CDATA[
<p>Exclusion constraints should work well for this case. On any transaction isolation level.<p><a href="https://www.postgresql.org/docs/current/ddl-constraints.html#DDL-CONSTRAINTS-EXCLUSION" rel="nofollow">https://www.postgresql.org/docs/current/ddl-constraints.html...</a></p>
]]></description><pubDate>Thu, 11 Sep 2025 07:05:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=45208686</link><dc:creator>akorotkov</dc:creator><comments>https://news.ycombinator.com/item?id=45208686</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45208686</guid></item><item><title><![CDATA[New comment by akorotkov in "OrioleDB Patent: now freely available to the Postgres community"]]></title><description><![CDATA[
<p>We will eventually add the SERIALIZABLE isolation level to OrioleDB, but right now that's not our highest priority.  Let me explain why.  At first, SSI (serializable snapshot isolation) in PostgreSQL comes with significant shortcomings, including.<p>1) Overhead.  SSI implies a heavyweight lock on any involved index page or heap tuple (even for reads). The overhead of SSI was initially measured at ~10%, but nowadays, scalability has gone much farther. These many HW-locks could slow down in multiple times a typical workload on a multicore machine.<p>2) SSI needs the user to be able to repeat any transaction due to serialization failure. Even a read-only transaction needs to be DEFERRABLE or might be aborted due to serialization failure (it might "saw impossible things" and needs a retry).<p>In contrast, typically it's not hard to resolve the concurrency problems of writing transactions using explicit row-level and advisory locks, while REPEATABLE READ is enough for reporting.  Frankly speaking, during my whole career, I didn't see a single case where SERIALIZABLE isolation level was justified.</p>
]]></description><pubDate>Wed, 10 Sep 2025 16:01:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=45199665</link><dc:creator>akorotkov</dc:creator><comments>https://news.ycombinator.com/item?id=45199665</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45199665</guid></item><item><title><![CDATA[New comment by akorotkov in "OrioleDB Patent: now freely available to the Postgres community"]]></title><description><![CDATA[
<p>Yep, regular PostgreSQL indexes point to a heap location (block number + offset). And it is the same for primary and secondary indexes.</p>
]]></description><pubDate>Wed, 10 Sep 2025 13:54:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=45197744</link><dc:creator>akorotkov</dc:creator><comments>https://news.ycombinator.com/item?id=45197744</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45197744</guid></item><item><title><![CDATA[New comment by akorotkov in "OrioleDB Patent: now freely available to the Postgres community"]]></title><description><![CDATA[
<p>Thank you, that would be on the TODO list.</p>
]]></description><pubDate>Wed, 10 Sep 2025 13:30:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=45197364</link><dc:creator>akorotkov</dc:creator><comments>https://news.ycombinator.com/item?id=45197364</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45197364</guid></item><item><title><![CDATA[New comment by akorotkov in "OrioleDB Patent: now freely available to the Postgres community"]]></title><description><![CDATA[
<p>This is generally true, but there are some additional aspects.<p>1. With PostgreSQL heap, you need to access the heap page itself. And it's not for free. It goes all through the buffer manager and other related components.<p>2. In OrioleDB, we have a lightweight protocol to read from pages. In-memory pages are connected using direct links (<a href="https://www.orioledb.com/docs/architecture/overview#dual-pointers" rel="nofollow">https://www.orioledb.com/docs/architecture/overview#dual-poi...</a>), and pages are read lock-less (<a href="https://www.orioledb.com/docs/architecture/overview#page-structure" rel="nofollow">https://www.orioledb.com/docs/architecture/overview#page-str...</a>).  Additionally, tree navigation for simple data types skips both copying and tuple deforming (<a href="https://www.orioledb.com/blog/orioledb-fastpath-search" rel="nofollow">https://www.orioledb.com/blog/orioledb-fastpath-search</a>).<p>According to all of the above, I believe OrioleDB still wins in the case of secondary key lookup.  I think this is indirectly confirmed by the results of the TPC-C benchmark, which contains quite a lot of log of secondary key lookups.  However, this subject is worth dedicated benchmarking in the future.</p>
]]></description><pubDate>Wed, 10 Sep 2025 13:21:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=45197232</link><dc:creator>akorotkov</dc:creator><comments>https://news.ycombinator.com/item?id=45197232</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45197232</guid></item><item><title><![CDATA[New comment by akorotkov in "Ordered Insertion Optimization in OrioleDB"]]></title><description><![CDATA[
<p>Hey HN, I'm the creator of OrioleDB, an extension for PostgreSQL that serves as a drop-in replacement for the default Heap storage engine. It is designed to address scalability bottlenecks in PostgreSQL's buffer manager and reduce the WAL, enabling better utilization of modern multi-core CPUs and high‑performance storage systems. We are getting closer to GA.<p>This blog post is dedicated to describing a new OrioleDB optimization: ordered insert optimization.  When multiple processes are trying to insert into the same page, the first one that grabs the lock does the job for the others.  That dramatically cuts the locker waiting time and thus improves the overall throughput. This is very critical for IoT, time series and others.<p>We would love for more people to test and benchmark OrioleDB. You can check how ordered insertion optimization would help your workload. The fastest way to do that is to use the Docker image provided (please note you need to use a specific tag):<p><pre><code>    docker run -d --name orioledb -p 5432:5432 orioledb/orioledb:ordered-inserts-pg17</code></pre></p>
]]></description><pubDate>Tue, 19 Aug 2025 13:23:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=44951231</link><dc:creator>akorotkov</dc:creator><comments>https://news.ycombinator.com/item?id=44951231</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44951231</guid></item><item><title><![CDATA[Ordered Insertion Optimization in OrioleDB]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.orioledb.com/blog/batch-inserts">https://www.orioledb.com/blog/batch-inserts</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44950972">https://news.ycombinator.com/item?id=44950972</a></p>
<p>Points: 19</p>
<p># Comments: 1</p>
]]></description><pubDate>Tue, 19 Aug 2025 12:54:47 +0000</pubDate><link>https://www.orioledb.com/blog/batch-inserts</link><dc:creator>akorotkov</dc:creator><comments>https://news.ycombinator.com/item?id=44950972</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44950972</guid></item><item><title><![CDATA[New comment by akorotkov in "Show HN: OrioleDB Beta12 Features and Benchmarks"]]></title><description><![CDATA[
<p>We're planning to reach GA this year.
Pushing all the patches to PostgreSQL core and making OrioleDB a pure extension will take more time.</p>
]]></description><pubDate>Tue, 22 Jul 2025 21:41:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=44653323</link><dc:creator>akorotkov</dc:creator><comments>https://news.ycombinator.com/item?id=44653323</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44653323</guid></item><item><title><![CDATA[New comment by akorotkov in "Show HN: OrioleDB Beta12 Features and Benchmarks"]]></title><description><![CDATA[
<p>Currently, OrioleDB can use GIN indexes via index bridging mechanism. 
<a href="https://www.orioledb.com/blog/orioledb-bridged-indexes" rel="nofollow">https://www.orioledb.com/blog/orioledb-bridged-indexes</a>
But more effective native analogues for GIN/RUN are in our roadmap.</p>
]]></description><pubDate>Tue, 22 Jul 2025 21:40:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=44653312</link><dc:creator>akorotkov</dc:creator><comments>https://news.ycombinator.com/item?id=44653312</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44653312</guid></item><item><title><![CDATA[New comment by akorotkov in "OrioleDB fastpath search (faster random key lookups for PostgreSQL)"]]></title><description><![CDATA[
<p>Hey HN,
I'm the creator of OrioleDB, an extension for PostgreSQL that serves as a drop-in replacement for the default Heap storage engine. It is designed to address scalability bottlenecks in PostgreSQL's buffer manager and reduce the WAL, enabling better utilization of modern multi-core CPUs and high‑performance storage systems.
We are getting closer to GA.<p>This blog post is dedicated to describing a new OrioleDB optimization: fastpath search, an inter-page search that bypasses page copying and tuple deformation for certain fixed-length datatypes.<p>We would love for more people to test and benchmark OrioleDB. You can check how fastpath search would help your workload. The fastest way to do that is to use the Docker image provided:<p><pre><code>    docker run -d --name orioledb -p 5432:5432 orioledb/orioledb</code></pre></p>
]]></description><pubDate>Fri, 18 Jul 2025 07:21:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=44602115</link><dc:creator>akorotkov</dc:creator><comments>https://news.ycombinator.com/item?id=44602115</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44602115</guid></item><item><title><![CDATA[OrioleDB fastpath search (faster random key lookups for PostgreSQL)]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.orioledb.com/blog/orioledb-fastpath-search">https://www.orioledb.com/blog/orioledb-fastpath-search</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44602093">https://news.ycombinator.com/item?id=44602093</a></p>
<p>Points: 4</p>
<p># Comments: 1</p>
]]></description><pubDate>Fri, 18 Jul 2025 07:16:59 +0000</pubDate><link>https://www.orioledb.com/blog/orioledb-fastpath-search</link><dc:creator>akorotkov</dc:creator><comments>https://news.ycombinator.com/item?id=44602093</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44602093</guid></item><item><title><![CDATA[New comment by akorotkov in "Show HN: OrioleDB Beta12 Features and Benchmarks"]]></title><description><![CDATA[
<p>Additionally, OrioleDB beta12 features a new fastpath tree search, which can accelerate workloads with intensive key-value lookups by up to 20%.  Stay tuned for a new blog post about this later this week.</p>
]]></description><pubDate>Tue, 15 Jul 2025 12:37:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=44570509</link><dc:creator>akorotkov</dc:creator><comments>https://news.ycombinator.com/item?id=44570509</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44570509</guid></item><item><title><![CDATA[Show HN: OrioleDB Beta12 Features and Benchmarks]]></title><description><![CDATA[
<p>Hey HN, I'm the creator of OrioleDB, an extension for PostgreSQL that serves as a drop-in replacement for the default Heap storage engine. It is designed to address scalability bottlenecks in PostgreSQL's buffer manager and reduce the WAL, enabling better utilization of modern multi-core CPUs and high‑performance storage systems.<p>We are getting closer to GA. This release includes:<p>- An index bridge to support all indexes that Heap supports<p>- Support for rewinding recent changes in the database.<p>- Tablespaces support<p>- Fillfactor support<p>- An orioledb_tree_stat() function for space utilization statistics<p>- Support for tables with more than 32 columns.<p>We also show several performance improvements using the TPC-C benchmarks. Overall, OrioleDB is much faster than Heap, also outperforming other Postgres providers.<p>We would love more people testing OrioleDB. The fastest way to do that is to use the docker image provided:<p><pre><code>    docker run -d --name orioledb -p 5432:5432 orioledb/orioledb
</code></pre>
Read the full release here:<p><a href="https://www.orioledb.com/blog/orioledb-beta12-benchmarks" rel="nofollow">https://www.orioledb.com/blog/orioledb-beta12-benchmarks</a></p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44570389">https://news.ycombinator.com/item?id=44570389</a></p>
<p>Points: 55</p>
<p># Comments: 17</p>
]]></description><pubDate>Tue, 15 Jul 2025 12:22:33 +0000</pubDate><link>https://www.orioledb.com/blog/orioledb-beta12-benchmarks</link><dc:creator>akorotkov</dc:creator><comments>https://news.ycombinator.com/item?id=44570389</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44570389</guid></item><item><title><![CDATA[New comment by akorotkov in "Bridged Indexes in OrioleDB: architecture, internals and everyday use?"]]></title><description><![CDATA[
<p>> That kind of exists thanks to NeonDB?<p>This is unrelated to NeonDB. OrioleDB has been acquired by Supabase.
<a href="https://supabase.com/blog/supabase-acquires-oriole">https://supabase.com/blog/supabase-acquires-oriole</a></p>
]]></description><pubDate>Fri, 30 May 2025 21:12:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=44139933</link><dc:creator>akorotkov</dc:creator><comments>https://news.ycombinator.com/item?id=44139933</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44139933</guid></item><item><title><![CDATA[New comment by akorotkov in "Bridged Indexes in OrioleDB: architecture, internals and everyday use?"]]></title><description><![CDATA[
<p>> OrioleDB solve the vacuum problem with the introduction of the undo log.<p>Way more than just this!<p>> With some work you can run OrioleDB AND neon storage and get benefits of both.<p>This would require significant design work, given that significant OrioleDB benefits are derived from row-level WAL.</p>
]]></description><pubDate>Fri, 30 May 2025 21:10:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=44139924</link><dc:creator>akorotkov</dc:creator><comments>https://news.ycombinator.com/item?id=44139924</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44139924</guid></item><item><title><![CDATA[Making Postgres Better with OrioleDB]]></title><description><![CDATA[
<p>Article URL: <a href="https://misachi.github.io/">https://misachi.github.io/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43615511">https://news.ycombinator.com/item?id=43615511</a></p>
<p>Points: 8</p>
<p># Comments: 1</p>
]]></description><pubDate>Mon, 07 Apr 2025 20:17:44 +0000</pubDate><link>https://misachi.github.io/</link><dc:creator>akorotkov</dc:creator><comments>https://news.ycombinator.com/item?id=43615511</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43615511</guid></item><item><title><![CDATA[New comment by akorotkov in "OrioleDB beta7: Benchmarks"]]></title><description><![CDATA[
<p>That's also so cool we are getting externally validated!
<a href="https://x.com/MinisterOfEng/status/1864793214282019065" rel="nofollow">https://x.com/MinisterOfEng/status/1864793214282019065</a>
My kudos to MinisterOfEng!</p>
]]></description><pubDate>Fri, 06 Dec 2024 07:57:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=42337460</link><dc:creator>akorotkov</dc:creator><comments>https://news.ycombinator.com/item?id=42337460</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42337460</guid></item><item><title><![CDATA[New comment by akorotkov in "OrioleDB beta7: Benchmarks"]]></title><description><![CDATA[
<p>> Additionally, PostgreSQL requires N^2 of memory depending on the number of connections,<p>For sure, not all the PostgreSQL memory is N^2. AFAIR, just a couple of components, including deadlock decoding, require a quadratic amount of memory. Normally, they are insignificant but growing fast if you are rising max_connections.</p>
]]></description><pubDate>Mon, 02 Dec 2024 20:26:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=42300051</link><dc:creator>akorotkov</dc:creator><comments>https://news.ycombinator.com/item?id=42300051</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42300051</guid></item><item><title><![CDATA[New comment by akorotkov in "OrioleDB beta7: Benchmarks"]]></title><description><![CDATA[
<p>Thank you for your feedback!
We tried to enable think time with go-tpc, thanks to @pashkinelfe.
That leaves us with 1 tpmC per connection, growing linearly up to ~300 connections for both heap and OrioleDB. So, in order to experience a storage bottleneck, we would need dozens of thousands of connections. Given PostgreSQL runs a process per connection, that would be more of a stress test for the Linux kernel. Additionally, PostgreSQL requires N^2 of memory depending on the number of connections, and it becomes sensible at this scale. All of that could be resolved by migrating PostgreSQL to co-routines and resolving memory requirement issues. However, this is currently out of scope for us.
Could you recommend another benchmark to reveal storage bottlenecks, given that TPC-B and YCSB are too trivial?</p>
]]></description><pubDate>Mon, 02 Dec 2024 20:16:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=42299964</link><dc:creator>akorotkov</dc:creator><comments>https://news.ycombinator.com/item?id=42299964</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42299964</guid></item></channel></rss>