<?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: Vivek Ojha</title>
    <description>The latest articles on DEV Community by Vivek Ojha (@vivek_ojha_f6dbbddb160d7e).</description>
    <link>https://dev.to/vivek_ojha_f6dbbddb160d7e</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3587461%2Faa987d62-5a93-4ece-8b82-d3e19ac385c1.png</url>
      <title>DEV Community: Vivek Ojha</title>
      <link>https://dev.to/vivek_ojha_f6dbbddb160d7e</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vivek_ojha_f6dbbddb160d7e"/>
    <language>en</language>
    <item>
      <title>Vaachas: the operational layer for multi-database applications</title>
      <dc:creator>Vivek Ojha</dc:creator>
      <pubDate>Thu, 30 Oct 2025 12:17:39 +0000</pubDate>
      <link>https://dev.to/vivek_ojha_f6dbbddb160d7e/vaachas-the-operational-layer-for-multi-database-applications-9bm</link>
      <guid>https://dev.to/vivek_ojha_f6dbbddb160d7e/vaachas-the-operational-layer-for-multi-database-applications-9bm</guid>
      <description>&lt;p&gt;&lt;em&gt;Last updated: 2025-10-30&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://vaachas.com" rel="noopener noreferrer"&gt;https://vaachas.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Docs: &lt;a href="https://vaachas.com/docs" rel="noopener noreferrer"&gt;https://vaachas.com/docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Try it in the browser: &lt;a href="https://vaachas.com/dashboard/developer-tools" rel="noopener noreferrer"&gt;https://vaachas.com/dashboard/developer-tools&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Modern products rarely live in a single datastore. Teams pair Postgres with search indexes, mix analytical warehouses with document stores, or juggle regional replicas for latency. Each new system adds bespoke routing code, queues, cron jobs, and credential sprawl. Engineers spend cycles maintaining glue instead of shipping features.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Vaachas approach
&lt;/h2&gt;

&lt;p&gt;Vaachas acts as a database gateway that sits between your application and every datastore you rely on. You:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Register each database once in the Vaachas dashboard.
&lt;/li&gt;
&lt;li&gt;Send one HTTP request with the writes you need.
&lt;/li&gt;
&lt;li&gt;Decide where each read should land at runtime.
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Vaachas handles ordered fan-out, retries, authentication, and per-database status so your services stay lean.&lt;/p&gt;

&lt;h2&gt;
  
  
  Core capabilities
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fan-out writes in order.&lt;/strong&gt; One call writes to multiple databases with explicit sequence control (sync first, async later).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runtime reads.&lt;/strong&gt; Route queries to the datastore that makes sense for each request—no hardcoded wiring.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Observable workflows.&lt;/strong&gt; Responses include per-database status and optional tracking IDs for long-running operations.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Credential vaulting.&lt;/strong&gt; Connection details live in Vaachas; your services see only database IDs.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provider flexibility.&lt;/strong&gt; Supports PostgreSQL, MongoDB, Cassandra, and Elasticsearch providers out of the box.
&lt;/li&gt;
&lt;/ul&gt;

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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application → Vaachas Direct API → (sequence 0) Primary DB
                                  → (sequence 1+) Secondary DBs
                                  → Status endpoint for tracking
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Direct API&lt;/strong&gt; accepts write and read payloads.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Status API&lt;/strong&gt; lets you poll background work.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dashboard&lt;/strong&gt; manages database credentials, API keys, and developer tools.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where teams use Vaachas today
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Product catalogs:&lt;/strong&gt; Keep transactional Postgres in sync with search indexes and analytics warehouses.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customer data platforms:&lt;/strong&gt; Distribute profile updates across document stores and reporting databases without ETL scripts.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search backfills:&lt;/strong&gt; Append Cassandra events to Elasticsearch with retries and tracking IDs.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-region apps:&lt;/strong&gt; Route reads to the closest shard while writes replicate to all required regions.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quickstart in minutes
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Provision or connect your databases (Supabase, MongoDB Atlas, DataStax Astra DB, Elastic Cloud, etc.).
&lt;/li&gt;
&lt;li&gt;Register each database in Vaachas using the dashboard.
&lt;/li&gt;
&lt;li&gt;Generate an API key.
&lt;/li&gt;
&lt;li&gt;Call the Direct API with a payload like:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.vaachas.com/api/data/v1/direct"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"X-API-KEY: YOUR_API_KEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "queryToDbsMap": {
      "INSERT INTO products (id, name, price) VALUES ('&lt;/span&gt;1111&lt;span class="s1"&gt;', '&lt;/span&gt;Acme Anvil&lt;span class="s1"&gt;', 49.99);": [
        { "dbId": "postgres-db", "sequence": 0 },
        { "dbId": "elastic-db", "sequence": 1 }
      ]
    }
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Monitor &lt;code&gt;perDbStatus&lt;/code&gt; or poll &lt;code&gt;/api/data/v1/direct/status/{requestTrackingId}&lt;/code&gt; for background work.
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Need a deeper walkthrough? I published guides for &lt;a href="https://medium.com/@vaachas/build-a-spring-boot-microservice-that-syncs-cassandra-elasticsearch-via-vaachas-417e44034d39" rel="noopener noreferrer"&gt;https://medium.com/@vaachas/build-a-spring-boot-microservice-that-syncs-cassandra-elasticsearch-via-vaachas-417e44034d39&lt;/a&gt;, &lt;a href="//tutorial-python-fastapi-vaachas.md"&gt;FastAPI&lt;/a&gt;, and &lt;a href="//tutorial-java-springboot-vaachas.md"&gt;Spring Boot&lt;/a&gt; teams.&lt;br&gt;
&lt;a href="https://medium.com/@vaachas/build-a-fastapi-product-catalog-that-fans-out-via-vaachas-72745b16a8a0" rel="noopener noreferrer"&gt;https://medium.com/@vaachas/build-a-fastapi-product-catalog-that-fans-out-via-vaachas-72745b16a8a0&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why now
&lt;/h2&gt;

&lt;p&gt;Databases proliferated, but the operational layer didn’t keep up. Vaachas aims to be the thin, reliable interface between your code and the storage systems you depend on—so adding a new datastore is a configuration change, not an engineering project.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Additional provider integrations (MariaDB, etc.).
&lt;/li&gt;
&lt;li&gt;SDKs in the languages you rely on most.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’re building in the open. Try the Developer Tools, send feedback in the Vaachas Discord - &lt;a href="https://discord.gg/KK4bFQx7" rel="noopener noreferrer"&gt;https://discord.gg/KK4bFQx7&lt;/a&gt;, and let us know which integrations would save your team the most time.&lt;/p&gt;

</description>
      <category>tooling</category>
      <category>backend</category>
      <category>database</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
