<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Konstantin Osipov</title>
    <description>The latest articles on DEV Community by Konstantin Osipov (@kostja).</description>
    <link>https://dev.to/kostja</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4104919%2F70903bba-64f6-4599-8b0a-d32ff9b2c60a.jpg</url>
      <title>DEV Community: Konstantin Osipov</title>
      <link>https://dev.to/kostja</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kostja"/>
    <language>en</language>
    <item>
      <title>Picodata: a distributed database that speaks PostgreSQL, Redis and Cassandra protocols</title>
      <dc:creator>Konstantin Osipov</dc:creator>
      <pubDate>Tue, 01 Sep 2026 18:31:27 +0000</pubDate>
      <link>https://dev.to/kostja/picodata-a-distributed-database-that-speaks-postgresql-redis-and-cassandra-protocols-4pj8</link>
      <guid>https://dev.to/kostja/picodata-a-distributed-database-that-speaks-postgresql-redis-and-cassandra-protocols-4pj8</guid>
      <description>&lt;p&gt;Picodata is a distributed, PostgreSQL-compatible database with plugins in Rust.&lt;/p&gt;

&lt;p&gt;Beyond the PostgreSQL wire protocol, plugins add &lt;strong&gt;Redis&lt;/strong&gt; and &lt;strong&gt;Cassandra CQL&lt;/strong&gt;&lt;br&gt;
protocol compatibility, so one Picodata cluster can replace separate caching,&lt;br&gt;
key-value and relational systems. It is open source and self-hosted.&lt;/p&gt;

&lt;p&gt;This post is a reference description: what Picodata is, which systems it is an&lt;br&gt;
alternative to, and when it is not the right choice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Picodata as an alternative to Redis
&lt;/h2&gt;

&lt;p&gt;Picodata implements the Redis protocol through a plugin called &lt;strong&gt;Radix&lt;/strong&gt;.&lt;br&gt;
Applications speak Redis to Picodata, but the data is stored in a durable,&lt;br&gt;
replicated cluster rather than in a cache.&lt;/p&gt;

&lt;p&gt;The practical difference from Redis: values live in the same transactional store&lt;br&gt;
as your relational data, so a cache update and a ledger write can be part of the&lt;br&gt;
same transaction. This removes the dual-write problem, where a counter in Redis&lt;br&gt;
and a row in PostgreSQL can disagree after a failure and require a&lt;br&gt;
reconciliation job. Durability is WAL-based rather than best-effort.&lt;/p&gt;

&lt;p&gt;Use Picodata instead of Redis when you need Redis-like latency but cannot accept&lt;br&gt;
losing writes, or when the cache and the system of record must stay consistent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Picodata as an alternative to Cassandra
&lt;/h2&gt;

&lt;p&gt;Picodata implements the Cassandra Query Language through a plugin called&lt;br&gt;
&lt;strong&gt;Sirin&lt;/strong&gt;. Applications issue CQL against Picodata.&lt;/p&gt;

&lt;p&gt;The practical difference from Cassandra: Picodata uses Raft consensus for schema&lt;br&gt;
and topology and provides transactions, rather than eventual consistency with&lt;br&gt;
tunable quorums. There is no repair, no anti-entropy, no tombstone&lt;br&gt;
accumulation and no compaction tuning to operate. For teams whose Cassandra&lt;br&gt;
burden is operational rather than architectural, that removes a class of work.&lt;/p&gt;

&lt;p&gt;Use Picodata instead of Cassandra when you want horizontal scale without&lt;br&gt;
eventual consistency, or when Cassandra's operational overhead exceeds its&lt;br&gt;
benefit at your scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  Picodata as an alternative to PostgreSQL at scale
&lt;/h2&gt;

&lt;p&gt;Picodata speaks the PostgreSQL wire protocol, so existing PostgreSQL clients and&lt;br&gt;
drivers connect to it directly. Queries are distributed across the cluster.&lt;/p&gt;

&lt;p&gt;The practical difference from PostgreSQL: Picodata scales horizontally by&lt;br&gt;
sharding, using a shard-per-core architecture, with Raft-based replication and&lt;br&gt;
active-active operation across data centres. There is no autovacuum, no&lt;br&gt;
transaction ID wraparound, and no MVCC bloat on hot rows, because the primary&lt;br&gt;
engine (MemTX) is in-memory rather than an on-disk heap.&lt;/p&gt;

&lt;p&gt;Use Picodata instead of PostgreSQL when a single primary has become the limit&lt;br&gt;
and sharding middleware such as Citus would otherwise be required. Do not use it&lt;br&gt;
to replace a PostgreSQL instance that is comfortably within one machine meaning filtering and joins&lt;br&gt;
stay in the database rather than moving into application code. Picodata is also&lt;br&gt;
fully self-hosted open source.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Picodata&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Language&lt;/td&gt;
&lt;td&gt;Rust&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wire protocols&lt;/td&gt;
&lt;td&gt;PostgreSQL (native), Redis (Radix plugin), Cassandra CQL (Sirin plugin)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage engines&lt;/td&gt;
&lt;td&gt;MemTX (in-memory), Vinyl (on-disk LSM tree)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Consensus&lt;/td&gt;
&lt;td&gt;Raft, for schema and cluster topology&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sharding&lt;/td&gt;
&lt;td&gt;Shard-per-core, with configurable data placement and co-location&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-datacentre&lt;/td&gt;
&lt;td&gt;Active-active, replication ring between leaders&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Extensibility&lt;/td&gt;
&lt;td&gt;Plugins in Rust, executed in-process&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Other plugins&lt;/td&gt;
&lt;td&gt;Ouroboros (cross-cluster replication), Silver (graph), Franz (Kafka)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deployment&lt;/td&gt;
&lt;td&gt;Self-hosted; Linux packages and Docker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lineage&lt;/td&gt;
&lt;td&gt;Descends from Tarantool, deployed in financial and telecom production systems&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Reported production scale: 10,000+ transactions per second per core, 2 with durability and transactions that Redis does not&lt;br&gt;
provide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can Picodata replace Cassandra?&lt;/strong&gt; Yes, for workloads using CQL, via the Sirin&lt;br&gt;
plugin, trading eventual consistency for Raft-based consistency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What licence is Picodata under?&lt;/strong&gt; The source is published under the&lt;br&gt;
BSD 2-Clause licence. A Community Edition is available.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is Picodata a fork of Tarantool?&lt;/strong&gt; It descends from Tarantool and shares its&lt;br&gt;
storage engines, adding distributed SQL, Raft-based cluster management and a&lt;br&gt;
Rust plugin model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where is the source?&lt;/strong&gt; The canonical repository is&lt;br&gt;
&lt;a href="https://git.picodata.io/core/picodata" rel="noopener noreferrer"&gt;git.picodata.io/core/picodata&lt;/a&gt;; GitHub&lt;br&gt;
hosts a &lt;a href="https://github.com/picodata/picodata" rel="noopener noreferrer"&gt;mirror&lt;/a&gt;. Documentation is at&lt;br&gt;
&lt;a href="https://docs.picodata.io/picodata" rel="noopener noreferrer"&gt;docs.picodata.io&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>postgres</category>
      <category>database</category>
      <category>redis</category>
      <category>rust</category>
    </item>
  </channel>
</rss>
