84 lines
72 KiB
HTML
84 lines
72 KiB
HTML
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><link rel="preload" as="image" href="https://cms.readyset.io/files/articles/6978c5c34bdfc4000178c38e/75a25b41125c47c923ceb24a.jpeg"/><link rel="preload" as="image" href="https://cms.readyset.io/files/articles/6978c5c34bdfc4000178c38e/d7459beef3933a2bbdc33a67.png"/><link rel="preload" as="image" href="https://cms.readyset.io/files/articles/6978c5c34bdfc4000178c38e/5b025a8c19acf432eeaa9bb8.png"/><link rel="stylesheet" href="/assets/styles-Dkt3QWRo.css" nonce="/nDOcIQS7QsP54OHjv+3Kw==" data-precedence="default"/><meta property="csp-nonce" content="/nDOcIQS7QsP54OHjv+3Kw=="/><title>The Database Is About to Lose Its Last Line of Defense | Readyset</title><meta name="theme-color" content="#ffffff" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta name="msapplication-TileColor" content="#161615" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta name="apple-mobile-web-app-capable" content="yes" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta name="mobile-web-app-capable" content="yes" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta name="apple-mobile-web-app-status-bar-style" content="black" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta name="description" content="For a long time, most serious database incidents shared a common root cause: a human made a mistake. It could be a poorly written query that caused a spike or a permission was too broad or maybe a review didn’t happen..." nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta name="application-name" content="Readyset | Drop-in SQL Caching for PostgreSQL and MySQL" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta name="apple-mobile-web-app-title" content="Readyset | Drop-in SQL Caching for PostgreSQL and MySQL" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta name="keywords" content="SQL caching, real-time cache, database cache, PostgreSQL cache, MySQL cache" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta property="og:type" content="article" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta property="og:site_name" content="Readyset | Drop-in SQL Caching for PostgreSQL and MySQL" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta property="og:title" content="The Database Is About to Lose Its Last Line of Defense | Readyset" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta property="og:description" content="For a long time, most serious database incidents shared a common root cause: a human made a mistake. It could be a poorly written query that caused a spike or a permission was too broad or maybe a review didn’t happen..." nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta property="og:image" content="https://readyset.io/api/og/blog/ai-generated-sql-database-governance?v=1777903371873" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta property="og:image:secure_url" content="https://readyset.io/api/og/blog/ai-generated-sql-database-governance?v=1777903371873" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta property="og:image:type" content="image/png" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta property="og:image:alt" content="The Database Is About to Lose Its Last Line of Defense | Readyset" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta name="twitter:card" content="summary_large_image" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta name="twitter:site" content="@readysetio" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta name="twitter:creator" content="@readysetio" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta name="twitter:title" content="The Database Is About to Lose Its Last Line of Defense | Readyset" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta name="twitter:description" content="For a long time, most serious database incidents shared a common root cause: a human made a mistake. It could be a poorly written query that caused a spike or a permission was too broad or maybe a review didn’t happen..." nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta name="twitter:image" content="https://readyset.io/api/og/blog/ai-generated-sql-database-governance?v=1777903371873" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta property="og:image:width" content="1200" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta property="og:image:height" content="630" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta property="og:url" content="https://readyset.io/blog/ai-generated-sql-database-governance" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta name="twitter:url" content="https://readyset.io/blog/ai-generated-sql-database-governance" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta property="article:author" content="Tanmay Sinha" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta property="article:published_time" content="2026-01-27" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><meta property="article:section" content="AI & Databases" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><link rel="modulepreload" href="/assets/index-CgozBq9o.js" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><link rel="modulepreload" href="/assets/_slug-feOgb-yl.js" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><link rel="modulepreload" href="/assets/article-card-BslrmY68.js" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><link rel="modulepreload" href="/assets/newsletter-popup-C0xZnHQP.js" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><link rel="modulepreload" href="/assets/rich-markdown-DYApPWH1.js" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><link rel="modulepreload" href="/assets/index-rMShz_NE.js" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><link rel="modulepreload" href="/assets/use-disclosure-DaTsKJMJ.js" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><link rel="icon" href="/favicon.ico" sizes="any" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><link rel="icon" type="image/png" sizes="16x16" href="/manifest/favicon-16x16.png" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><link rel="icon" type="image/png" sizes="32x32" href="/manifest/favicon-32x32.png" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><link rel="apple-touch-icon" sizes="180x180" href="/manifest/apple-touch-icon.png" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><link rel="mask-icon" href="/manifest/safari-pinned-tab.svg" color="#161615" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><link rel="manifest" href="/manifest.webmanifest" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><link rel="prefetch" href="/icons/sprite-stroke.svg" as="image" type="image/svg+xml" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><link rel="prefetch" href="/icons/sprite-bulk.svg" as="image" type="image/svg+xml" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><link rel="canonical" href="https://readyset.io/blog/ai-generated-sql-database-governance" nonce="/nDOcIQS7QsP54OHjv+3Kw=="/><script type="application/ld+json" nonce="/nDOcIQS7QsP54OHjv+3Kw==">{"@context":"https://schema.org","@type":"Organization","@id":"https://readyset.io/#organization","name":"Readyset","url":"https://readyset.io","logo":"https://readyset.io/manifest/apple-touch-icon.png","description":"Increase the scale of your PostgreSQL and MySQL deployment by up to 100x with Readyset - all without modifying your application code or database. Start using Readyset today for free!","sameAs":["https://x.com/readysetio"]}</script><script type="application/ld+json" nonce="/nDOcIQS7QsP54OHjv+3Kw==">{"@context":"https://schema.org","@type":"WebSite","@id":"https://readyset.io/#website","url":"https://readyset.io","name":"Readyset","publisher":{"@id":"https://readyset.io/#organization"}}</script><script type="application/ld+json" nonce="/nDOcIQS7QsP54OHjv+3Kw==">{"@context":"https://schema.org","@type":"Article","headline":"The Database Is About to Lose Its Last Line of Defense","description":"For a long time, most serious database incidents shared a common root cause: a human made a mistake. It could be a poorly written query that caused a spike or a permission was too broad or maybe a review didn’t happen...","url":"https://readyset.io/blog/ai-generated-sql-database-governance","image":"https://readyset.io/images/blog-placeholder.svg","datePublished":"2026-01-27T00:00:00.000Z","dateModified":"2026-05-04T14:02:51.873Z","author":{"@type":"Person","name":"Tanmay Sinha"},"publisher":{"@id":"https://readyset.io/#organization"}}</script></head><body class="min-h-screen bg-surface-layout-2"><a href="#main-content" class="sr-only focus:not-sr-only focus:absolute focus:left-4 focus:top-4 focus:z-[100] focus:rounded-lg focus:bg-content-layout-1 focus:px-4 focus:py-2 focus:text-sm focus:font-semibold focus:text-surface-layout-1">Skip to content</a><header class="sticky top-0 z-50 bg-surface-layout-2/80 backdrop-blur-lg border-b border-border-layout-soft"><div class="relative max-w-7xl mx-auto px-6 py-4 flex items-center justify-between"><div class="flex items-center gap-8"><a href="/" class="flex items-center"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 145 33" class="fill-current text-content-layout-1 h-6"><path d="M16 31.328c0 .736-.597 1.333-1.333 1.333H4a4 4 0 0 1-4-4V17.994c0-.736.597-1.333 1.333-1.333H16v14.667Z"></path><path d="M21.333 11.328v5.333h-4c-.736 0-1.333.597-1.333 1.333v4h-5.333v-5.333h4c.736 0 1.333-.597 1.333-1.333v-4h5.333Z"></path><path d="M32 15.328c0 .736-.597 1.333-1.333 1.333H16V1.994c0-.736.597-1.333 1.333-1.333H28a4 4 0 0 1 4 4v10.667Z"></path><path fill-rule="evenodd" d="M91.272 5.367h2.864V23.25h-2.864v-1.99c-1.145 1.45-2.665 2.175-4.557 2.175-1.204 0-2.296-.294-3.275-.882a6.299 6.299 0 0 1-2.304-2.45c-.548-1.036-.822-2.193-.822-3.47 0-1.276.274-2.433.822-3.469a6.209 6.209 0 0 1 2.304-2.437c.98-.597 2.071-.896 3.275-.896 1.9 0 3.42.722 4.557 2.164V5.367Zm-3.997 15.308c1.146 0 2.096-.386 2.852-1.157.763-.779 1.145-1.74 1.145-2.885 0-1.152-.382-2.114-1.145-2.884-.756-.78-1.706-1.17-2.852-1.17-1.154 0-2.117.39-2.889 1.17-.764.77-1.145 1.732-1.145 2.884 0 1.145.381 2.106 1.145 2.885.772.771 1.735 1.157 2.89 1.157Zm-24.258-2.898c.05-.364.075-.737.075-1.119 0-1.956-.652-3.581-1.955-4.874-1.295-1.302-2.918-1.953-4.87-1.953-1.278 0-2.444.295-3.498.883a6.442 6.442 0 0 0-2.466 2.438c-.597 1.028-.896 2.172-.896 3.432 0 1.948.68 3.577 2.042 4.887 1.37 1.31 3.084 1.965 5.143 1.965 1.203 0 2.32-.24 3.35-.722 1.037-.48 1.892-1.144 2.564-1.99l-1.93-1.653c-.39.514-.938.94-1.643 1.28-.698.34-1.453.51-2.267.51-1.054 0-1.959-.277-2.714-.833-.747-.563-1.237-1.314-1.47-2.25h10.535Zm-9.19-4.538c.69-.556 1.494-.834 2.416-.834.93 0 1.74.278 2.428.834.697.555 1.154 1.289 1.37 2.2h-7.584c.233-.911.69-1.645 1.37-2.2Zm21.469-3.166h2.863V23.25h-2.864v-1.99c-1.145 1.45-2.664 2.175-4.557 2.175-1.204 0-2.296-.294-3.275-.882a6.299 6.299 0 0 1-2.304-2.45c-.548-1.036-.822-2.193-.822-3.47 0-1.276.274-2.433.822-3.469a6.209 6.209 0 0 1 2.304-2.437c.98-.597 2.071-.896 3.275-.896 1.901 0 3.42.722 4.558 2.164v-1.922Zm-3.998 10.602c1.146 0 2.096-.386 2.852-1.157.764-.779 1.145-1.74 1.145-2.885 0-1.152-.381-2.114-1.145-2.884-.756-.78-1.706-1.17-2.852-1.17-1.154 0-2.117.39-2.889 1.17-.763.77-1.145 1.732-1.145 2.884 0 1.145.382 2.106 1.145 2.885.772.771 1.735 1.157 2.89 1.157Zm35.186-10.602h3.188L102.941 25.6l-1.027 2.356h-3.319c.461-.939 1.313-2.68 1.718-3.537l.697-1.443-5.51-12.902h3.275l3.842 9.532 3.867-9.532Zm8.586 13.363c-2.092 0-3.894-.664-5.405-1.99l1.482-2.015c1.071 1.02 2.362 1.53 3.873 1.53.755 0 1.374-.124 1.855-.373.482-.257.722-.61.722-1.057a.93.93 0 0 0-.161-.535c-.1-.157-.225-.29-.374-.398-.141-.108-.353-.211-.635-.31-.282-.1-.531-.179-.747-.237a25.515 25.515 0 0 0-.884-.224l-.934-.224a16.527 16.527 0 0 1-.909-.286 6.683 6.683 0 0 1-.909-.373 5.835 5.835 0 0 1-.76-.497 2.716 2.716 0 0 1-.647-.672 3.57 3.57 0 0 1-.561-1.952c0-.862.241-1.6.722-2.213a4.153 4.153 0 0 1 1.868-1.343c.764-.29 1.627-.436 2.59-.436 1.901 0 3.549.577 4.944 1.729l-1.507 2.014c-.996-.845-2.125-1.268-3.387-1.268-.672 0-1.228.112-1.668.336-.432.224-.648.551-.648.982 0 .166.029.315.087.448a.93.93 0 0 0 .299.36c.15.108.291.2.423.274.133.075.328.153.586.236l.66.187.772.174c.373.083.68.157.921.224.249.058.552.149.909.273a4.943 4.943 0 0 1 1.669.87c.266.2.477.42.635.66.166.232.299.514.398.845.108.332.162.693.162 1.082 0 .87-.245 1.63-.734 2.276-.49.638-1.142 1.115-1.955 1.43-.806.315-1.723.473-2.752.473Zm20.26-6.778c0 .382-.025.755-.075 1.12h-10.534c.232.936.722 1.687 1.469 2.25.755.556 1.66.833 2.715.833.813 0 1.569-.17 2.266-.51.706-.34 1.254-.766 1.644-1.28l1.93 1.654c-.673.845-1.528 1.508-2.565 1.99-1.03.48-2.146.72-3.35.72-2.059 0-3.773-.654-5.143-1.964-1.361-1.31-2.042-2.94-2.042-4.887 0-1.26.299-2.404.897-3.432a6.436 6.436 0 0 1 2.465-2.438c1.054-.588 2.221-.883 3.499-.883 1.951 0 3.574.651 4.869 1.953 1.303 1.293 1.955 2.918 1.955 4.874Zm-6.849-4.253c-.921 0-1.726.278-2.415.834-.681.555-1.138 1.289-1.37 2.2h7.583c-.216-.911-.672-1.645-1.37-2.2-.689-.556-1.498-.834-2.428-.834Zm15.99.255h-3.674v6.212c0 .597.162 1.049.486 1.355.332.299.801.448 1.407.448.573 0 1.166-.15 1.781-.448v2.674c-.706.356-1.499.535-2.379.535-1.37 0-2.403-.361-3.1-1.082-.698-.722-1.046-1.729-1.046-3.022V12.66h-2.205v-2.587h2.205V5.367h2.851v4.706h3.674v2.587ZM48.869 9.873h-.49c-1.673 0-3.033.712-4.08 2.135v-1.935h-2.887V23.25h2.887v-6.434c0-1.222.36-2.189 1.08-2.9.728-.72 1.729-1.08 3-1.08h.49V9.873Z" clip-rule="evenodd"></path></svg></a><nav class="hidden laptop:flex items-center"><button type="button" class="flex items-center gap-1 text-label-medium transition-colors px-3 py-2 cursor-pointer text-content-layout-2 hover:text-content-layout-1" aria-haspopup="true" aria-expanded="false">Products<svg class="inline justify-self-center stroke-current h-4 w-4 min-w-4 stroke-2 transition-transform" aria-hidden="true" focusable="false"><use href="/icons/sprite-stroke.svg#chevron-down"></use></svg><span style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal">dropdown</span></button><button type="button" class="flex items-center gap-1 text-label-medium transition-colors px-3 py-2 cursor-pointer text-content-layout-2 hover:text-content-layout-1" aria-haspopup="true" aria-expanded="false">Solutions<svg class="inline justify-self-center stroke-current h-4 w-4 min-w-4 stroke-2 transition-transform" aria-hidden="true" focusable="false"><use href="/icons/sprite-stroke.svg#chevron-down"></use></svg><span style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal">dropdown</span></button><button type="button" class="flex items-center gap-1 text-label-medium transition-colors px-3 py-2 cursor-pointer text-content-layout-2 hover:text-content-layout-1" aria-haspopup="true" aria-expanded="false">Resources<svg class="inline justify-self-center stroke-current h-4 w-4 min-w-4 stroke-2 transition-transform" aria-hidden="true" focusable="false"><use href="/icons/sprite-stroke.svg#chevron-down"></use></svg><span style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal">dropdown</span></button></nav></div><div class="hidden laptop:flex items-center"><button type="button" class="relative flex items-center justify-center min-w-max cursor-pointer select-none transition duration-fast ease-base transform focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-primary-soft focus-visible:ring-offset-2 focus-visible:ring-offset-surface-layout-1 active:scale-[0.98] active:origin-center text-button-medium py-3 px-4 rounded-2xl h-10 text-content-primary-solid bg-surface-primary-solid hover:bg-surface-primary-solid-hover active:bg-surface-primary-solid-active [&_#loader]:border-t-content-primary-solid"><div class="flex items-center">Try locally<div class="h-1 w-1"></div><svg aria-hidden="true" class="inline justify-self-center stroke-current h-5 w-5 min-w-5 stroke-[1.5px]" focusable="false"><use href="/icons/sprite-stroke.svg#arrow-right"></use></svg><span style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal"></span></div></button></div><button type="button" class="laptop:hidden flex items-center justify-center w-10 h-10 rounded-2xl text-content-layout-1 hover:bg-surface-layout-2 transition-colors cursor-pointer" aria-label="Open menu" aria-expanded="false"><svg class="inline justify-self-center stroke-current h-5 w-5 min-w-5 stroke-[1.5px]" aria-hidden="true" focusable="false"><use href="/icons/sprite-stroke.svg#menu"></use></svg><span style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal">menu</span></button></div></header><main id="main-content"><!--$--><!--$--><div class="relative mx-auto container px-4 tablet:px-6 laptop:px-8 max-w-[1456px] flex flex-col gap-2 mt-12" id="blog-post-content"><div class="w-full flex flex-col gap-8"><div class="max-w-3xl mx-auto w-full flex flex-col gap-8"><div class="flex flex-col gap-6"><a class="text-body-small text-content-layout-3 hover:text-content-layout-1 transition-colors w-fit active" href="/blog" data-status="active" aria-current="page">← Back to blog</a><span class="inline-block w-fit px-3 py-1 rounded-full bg-surface-layout-1 text-body-small text-content-layout-3">AI & Databases</span><h1 class="text-display-small">The Database Is About to Lose Its Last Line of Defense</h1><p class="text-body-large text-content-layout-3">For a long time, most serious database incidents shared a common root cause: a human made a mistake. It could be a poorly written query that caused a spike or a permission was too broad or maybe a review didn’t happen. Database security models, operational processes, and tooling were all built around that assumption. Humans were the risk, and humans were also the control.
|
||
|
||
That assumption is starting to break down.
|
||
|
||
Today, more and more SQL is generated without a human author. What used to be 1</p><div class="flex items-center gap-4"><a href="/blog/authors/tanmay" class="shrink-0"><img src="https://cms.readyset.io/files/authors/66b38f948f6cba0001268643/627a3aa687f07d85bd37bbdd.jpg" alt="Tanmay Sinha" loading="lazy" decoding="async" class="w-10 h-10 rounded-full object-cover"/></a><div class="flex flex-col"><a href="/blog/authors/tanmay" class="hover:underline"><p class="text-body-medium">Tanmay Sinha</p></a><p class="text-body-small text-content-layout-3">2026-01-27<!-- --> · <!-- -->4 min read</p></div></div><div class="flex flex-wrap gap-2"></div></div><div role="separator" class="bg-border-layout-soft h-(--divider-thickness) w-full" style="--divider-thickness:1.5px"></div><div class="prose prose-neutral max-w-none"><!--$--><p>For a long time, most serious database incidents shared a common root cause: a human made a mistake. It could be a poorly written query that caused a spike or a permission was too broad or maybe a review didn’t happen. Database security models, operational processes, and tooling were all built around that assumption. Humans were the risk, and humans were also the control.</p>
|
||
<p>That assumption is starting to break down.</p>
|
||
<p><img src="https://cms.readyset.io/files/articles/6978c5c34bdfc4000178c38e/75a25b41125c47c923ceb24a.jpeg" alt=""/></p>
|
||
<p>Today, more and more SQL is generated without a human author. What used to be 1) written during development, 2) reviewed before deployment, and 3) monitored during execution is now synthesized on demand by systems that may understand basic principles of database safety, compliance boundaries, or operational risk but lack contextual information needed to create the right query for the database.</p>
|
||
<p>The human checkpoint that databases control quietly depended on is going away.</p>
|
||
<p>This creates a new failure mode that most organizations are not prepared for: there is no longer meaningful control before a query executes. Queries are evaluated only after they run, based on their impact.</p>
|
||
<p>By that point, the arrow has already left the bow: the damage is already done.</p>
|
||
<h1 id="the-query-lifecycle-is-breaking"><a href="#the-query-lifecycle-is-breaking"><strong>The Query Lifecycle Is Breaking</strong></a></h1>
|
||
<p>Outside of database internals, SQL queries have always followed a fairly predictable lifecycle:</p>
|
||
<ul>
|
||
<li><strong>Creation</strong> – at development time, where queries are written and refined</li>
|
||
<li><strong>Execution</strong> – at runtime, where applications are deployed and queries run in production</li>
|
||
</ul>
|
||
<p>Both phases historically had clear human ownership.</p>
|
||
<p><img src="https://cms.readyset.io/files/articles/6978c5c34bdfc4000178c38e/d7459beef3933a2bbdc33a67.png" alt=""/></p>
|
||
<p>Early on, developers wrote SQL by hand. As applications grew, ORMs became the abstraction layer. The early days of ORMs were, frankly, <a href="https://martinfowler.com/bliki/OrmHate.html?ref=blog.readyset.io" rel="noopener noreferrer" target="_blank">the Wild West</a>. Many applications built in the early 2010s are still weighed down by inefficient or opaque SQL generated by frameworks that prioritized developer velocity over database behavior. Over time, this improved as database experts got involved and teams learned where guardrails were needed.</p>
|
||
<p>LLMs brought another major shift.</p>
|
||
<p>Instead of abstracting SQL behind relatively static frameworks, we started generating SQL queries, on the fly, using AI. The abstraction still exists, but the author is no longer predictable or accountable. Even with vibe coding, however, there was always a human responsible for basic query sanity.</p>
|
||
<p>That is no longer true.</p>
|
||
<p>With agentic systems, the human-in-the-loop disappears entirely. Ephemeral SQL is generated at runtime by systems operating against databases they have never seen before. There is no built-in understanding of what is safe, compliant, or operationally reasonable for the underlying database.</p>
|
||
<p>The only feedback loop is execution.</p>
|
||
<p>Creation and execution effectively collapse into one step. Governance <em>before</em> execution is now dealing with consequences <em>after</em> something breaks.</p>
|
||
<h3 id="agentic-workloads-break-database-assumptions"><a href="#agentic-workloads-break-database-assumptions"><strong>Agentic Workloads Break Database Assumptions</strong></a></h3>
|
||
<p>AI-generated workloads behave fundamentally differently from traditional applications. They do not follow fixed execution paths or predictable access patterns. They iterate, retry, broaden scope, and <a href="https://platform.openai.com/docs/guides/function-calling?ref=blog.readyset.io" rel="noopener noreferrer" target="_blank">optimize for completeness</a> rather than restraint.</p>
|
||
<p>A request that looks harmless - analyze trends, find anomalies, summarize behavior - can easily translate into SQL that scans years of data, touches regulated fields, joins tables in unexpected ways, and runs repeatedly until the agent converges on an answer.</p>
|
||
<p>From the database’s point of view, these queries are valid. They use legitimate credentials, respect schema permissions, and are syntactically correct.</p>
|
||
<p>From the organization’s point of view, they expose a new uncontrolled risk surface.</p>
|
||
<p>This is not hypothetical. In 2025, several <a href="https://arstechnica.com/information-technology/2025/07/ai-coding-assistants-chase-phantoms-destroy-real-user-data/?ref=blog.readyset.io" rel="noopener noreferrer" target="_blank">organizations reported incidents</a> where AI coding assistants, operating with legitimate access and no malicious intent, deleted real production data while trying to fix problems that didn’t exist. There was no exploit, no breach, and no obvious policy violation. Just automated systems acting faster than humans could intervene.</p>
|
||
<h2 id="this-is-not-a-performance-problem"><a href="#this-is-not-a-performance-problem"><strong>This Is Not a Performance Problem</strong></a></h2>
|
||
<p>Performance is usually the first thing people notice, but it’s not the core issue.</p>
|
||
<p>When machine-generated queries overload a system, that’s an outage. When they surface sensitive or regulated data, that’s a breach. When they run continuously, legitimately, and without oversight, that’s a <a href="https://genai.owasp.org/introduction-genai-security-project/?ref=blog.readyset.io" rel="noopener noreferrer" target="_blank">governance failure</a>.</p>
|
||
<p>Existing controls weren’t designed for this. Permissions answer who can connect, not whether a specific query should run. Caching reduces load but doesn’t prevent unsafe access. Rate limits slow things down but can’t tell the difference between useful exploration and dangerous behavior.</p>
|
||
<p>None of these mechanisms answer the question that now sits squarely with platform, data, and security teams:</p>
|
||
<p>Who is responsible for ensuring that machine-generated queries are safe, compliant, and appropriate <em>before</em> they execute?</p>
|
||
<p>In most organizations today, the honest (and dangerous) answer is: no one.</p>
|
||
<h2 id="it-is-already-in-production"><a href="#it-is-already-in-production"><strong>It is Already in Production</strong></a></h2>
|
||
<p>This doesn’t require fully autonomous systems or some future architecture. Any organization deploying LLM-powered internal tools, AI copilots connected to live data, automated analytics, or customer-facing AI features backed by production databases has already crossed this line.</p>
|
||
<p><img src="https://cms.readyset.io/files/articles/6978c5c34bdfc4000178c38e/5b025a8c19acf432eeaa9bb8.png" alt=""/></p>
|
||
<p>Source: <a href="https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-state-of-ai?ref=blog.readyset.io" rel="noopener noreferrer" target="_blank">The state of AI in 2025: Agents, innovation, and transformation, McKinsey Survey 2025</a></p>
|
||
<p>The exposure exists today. The only thing missing is visibility - and by the time you have visibility, the query has already run.</p>
|
||
<p>Databases were never designed to defend themselves against intelligent, autonomous query generators. They enforce permissions and constraints, but they don’t understand intent. As AI systems become first-class actors in data access, that gap becomes one of the most consequential and least discussed risks in the modern data stack.</p>
|
||
<p>The question is no longer whether databases will be stressed or misused by AI-generated workloads. That is already happening. The real question is whether organizations will reassert control - restoring governance <em>before execution</em> - before this becomes the new normal.</p>
|
||
<p>All is not lost. This is a solvable problem. The industry is just starting to recognize it, and the next layer of data infrastructure will be built to close this gap.</p>
|
||
<p><em>Note: AI was used to proofread this post.</em></p><!--/$--></div><div role="separator" class="bg-border-layout-soft h-(--divider-thickness) w-full" style="--divider-thickness:1.5px"></div><div class="flex flex-col laptop:flex-row items-start laptop:items-center justify-between gap-4 rounded-4xl bg-surface-layout-1 p-8"><div class="flex flex-col gap-1"><p class="text-headline-5">Want to see Readyset in action?</p><p class="text-body-small text-content-layout-3">Book a demo and see how Readyset can accelerate your database.</p></div><a href="/book-a-demo"><button type="button" class="relative flex items-center justify-center min-w-max cursor-pointer select-none transition duration-fast ease-base transform focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-primary-soft focus-visible:ring-offset-2 focus-visible:ring-offset-surface-layout-1 active:scale-[0.98] active:origin-center text-button-medium py-3 px-4 rounded-2xl h-10 text-content-primary-solid bg-surface-primary-solid hover:bg-surface-primary-solid-hover active:bg-surface-primary-solid-active [&_#loader]:border-t-content-primary-solid"><div class="flex items-center">Book a demo<div class="h-1 w-1"></div><svg aria-hidden="true" class="inline justify-self-center stroke-current h-5 w-5 min-w-5 stroke-[1.5px]" focusable="false"><use href="/icons/sprite-stroke.svg#arrow-right"></use></svg><span style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal"></span></div></button></a></div></div></div></div><div class="relative mx-auto container px-4 tablet:px-6 laptop:px-8 max-w-[1456px] flex flex-col gap-2 mt-40" id="related-articles"><div class="w-full flex flex-col gap-8"><div class="flex flex-col items-center gap-2 max-w-2xl mx-auto"><p class="text-headline-2 text-center">Related articles</p><p class="text-body-large text-content-layout-3 text-center">Continue reading more about <!-- -->ai & databases<!-- -->.</p></div><div class="grid grid-cols-1 laptop:grid-cols-3 gap-6"><a href="/blog/real-cost-of-read-replicas" class="group flex flex-col rounded-4xl bg-surface-layout-1 overflow-hidden transition-shadow hover:shadow-lg"><div class="aspect-[1200/630] w-full overflow-hidden"><img src="https://cms.readyset.io/files/uploads/14c1f634-823c-457d-995b-5b350770479e.png" alt="The Real Cost of Read Replicas (and When They Stop Paying Off)" loading="lazy" decoding="async" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"/></div><div class="flex flex-col gap-3 p-6 flex-1"><span class="inline-block w-fit px-3 py-1 rounded-full bg-surface-layout-2 text-body-small text-content-layout-3">AI & Databases</span><h3 class="text-headline-5 line-clamp-2">The Real Cost of Read Replicas (and When They Stop Paying Off)</h3><p class="text-body-small text-content-layout-3 line-clamp-3 flex-1">Read replicas are the reflex fix for growing read traffic, but the cost scales linearly with no ceiling. Here's where replicas earn their keep, where they stop paying off, and how SQL-layer caching handles repetitive reads for a fraction of the spend.</p><div class="flex items-center justify-between pt-2"><div class="flex items-center gap-2"><img src="/images/blog-placeholder.svg" alt="Readyset Team" loading="lazy" decoding="async" class="w-5 h-5 rounded-full object-cover"/><span class="text-body-small text-content-layout-2">Readyset Team</span></div><div class="flex items-center gap-2 text-body-small text-content-layout-3"><span>2026-07-19</span><span>·</span><span>7 min read</span></div></div></div></a><a href="/blog/why-llms-write-incorrect-sql-and-what-that-means-for-your-database" class="group flex flex-col rounded-4xl bg-surface-layout-1 overflow-hidden transition-shadow hover:shadow-lg"><div class="aspect-[1200/630] w-full overflow-hidden"><img src="https://cms.readyset.io/files/articles/69e27fc5c7c1890001704595/bcd33099bfa60d35e5c07e1c.png" alt="Why LLMs Write Incorrect SQL (and What That Means for Your Database)" loading="lazy" decoding="async" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"/></div><div class="flex flex-col gap-3 p-6 flex-1"><span class="inline-block w-fit px-3 py-1 rounded-full bg-surface-layout-2 text-body-small text-content-layout-3">AI & Databases</span><h3 class="text-headline-5 line-clamp-2">Why LLMs Write Incorrect SQL (and What That Means for Your Database)</h3><p class="text-body-small text-content-layout-3 line-clamp-3 flex-1">Most LLM-generated SQL doesn't fail. It runs and returns results, and that's exactly what makes it dangerous. The errors don't surface until they're already in your data.
|
||
|
||
AI-assisted development has made it easier than ever to generate SQL quickly. The problem is that quick and correct are not the same thing, and with databases, the gap between the two has consequences that compound quietly over time. SQL that runs is not the same as SQL that works.
|
||
|
||
LLMs are good at producing SQL that looks ri</p><div class="flex items-center justify-between pt-2"><div class="flex items-center gap-2"><img src="https://cms.readyset.io/files/authors/657385d2b4c219000125f4cd/c0376b666550a188861d4a2d.bin" alt="Readyset" loading="lazy" decoding="async" class="w-5 h-5 rounded-full object-cover"/><span class="text-body-small text-content-layout-2">Readyset</span></div><div class="flex items-center gap-2 text-body-small text-content-layout-3"><span>2026-04-23</span><span>·</span><span>5 min read</span></div></div></div></a><a href="/blog/vibe-coding-a-high-performance-app-with-readyset-querypilot" class="group flex flex-col rounded-4xl bg-surface-layout-1 overflow-hidden transition-shadow hover:shadow-lg"><div class="aspect-[1200/630] w-full overflow-hidden"><img src="https://cms.readyset.io/files/articles/699cd78050355b00013c3c72/31cd0616c4f3b701220ecf6e.png" alt="Vibe Coding a High-Performance App with Readyset QueryPilot" loading="lazy" decoding="async" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"/></div><div class="flex flex-col gap-3 p-6 flex-1"><span class="inline-block w-fit px-3 py-1 rounded-full bg-surface-layout-2 text-body-small text-content-layout-3">AI & Databases</span><h3 class="text-headline-5 line-clamp-2">Vibe Coding a High-Performance App with Readyset QueryPilot</h3><p class="text-body-small text-content-layout-3 line-clamp-3 flex-1">In this blog post, we are going to use "Vibe Coding" to build an application and explore Readyset QueryPilot, a tool designed to automatically analyze and cache queries in a MySQL workload.
|
||
|
||
The goal is to prove that even for automated queries with no human interaction, QueryPilot can automate query caching and improve performance. QueryPilot automatically identifies which queries should be cached and recommends the appropriate strategy, either deep caching or shallow caching. This automation de</p><div class="flex items-center justify-between pt-2"><div class="flex items-center gap-2"><img src="https://cms.readyset.io/files/authors/665e269a0177f50001d54d46/26154aff7b87c541fa8a7e2e.bin" alt="Vinicius Grippa" loading="lazy" decoding="async" class="w-5 h-5 rounded-full object-cover"/><span class="text-body-small text-content-layout-2">Vinicius Grippa</span></div><div class="flex items-center gap-2 text-body-small text-content-layout-3"><span>2026-02-24</span><span>·</span><span>6 min read</span></div></div></div></a></div></div></div><div class="relative mx-auto container px-4 tablet:px-6 laptop:px-8 max-w-[1456px] flex flex-col gap-2 mt-20 mb-12" id="hero"><div class="w-full gap-4 flex flex-col"><div class="rounded-[80px] bg-surface-layout-1 w-full"><div class="flex flex-col justify-center items-center gap-8 w-full max-w-3xl mx-auto py-44"><h2 class="text-display-medium text-center">Still scaling the hard way?</h2><p class="text-body-large text-content-layout-3 text-center">Modern applications demand instant performance, even under unpredictable load. Readyset helps you eliminate slow queries, stabilize latency, and scale confidently.</p><div class="flex justify-center items-center gap-4"><a href="/book-a-demo"><button type="button" class="relative flex items-center justify-center min-w-max cursor-pointer select-none transition duration-fast ease-base transform focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-primary-soft focus-visible:ring-offset-2 focus-visible:ring-offset-surface-layout-1 active:scale-[0.98] active:origin-center text-button-medium py-3 px-4 rounded-3xl h-12 text-content-primary-soft border border-border-primary-soft bg-transparent hover:bg-surface-primary-soft-hover active:bg-surface-primary-soft-active [&_#loader]:border-t-content-primary-soft"><div class="flex items-center">Contact Sales<div class="h-1 w-1"></div><svg aria-hidden="true" class="inline justify-self-center stroke-current h-5 w-5 min-w-5 stroke-[1.5px]" focusable="false"><use href="/icons/sprite-stroke.svg#arrow-right"></use></svg><span style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal"></span></div></button></a><a href="/book-a-demo"><button type="button" class="relative flex items-center justify-center min-w-max cursor-pointer select-none transition duration-fast ease-base transform focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-primary-soft focus-visible:ring-offset-2 focus-visible:ring-offset-surface-layout-1 active:scale-[0.98] active:origin-center text-button-medium py-3 px-4 rounded-3xl h-12 text-content-primary-solid bg-surface-primary-solid hover:bg-surface-primary-solid-hover active:bg-surface-primary-solid-active [&_#loader]:border-t-content-primary-solid"><div class="flex items-center">Start for free<div class="h-1 w-1"></div><svg aria-hidden="true" class="inline justify-self-center stroke-current h-5 w-5 min-w-5 stroke-[1.5px]" focusable="false"><use href="/icons/sprite-stroke.svg#arrow-right"></use></svg><span style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal"></span></div></button></a></div></div><div role="separator" class="bg-border-layout-soft h-(--divider-thickness) w-full" style="--divider-thickness:1.5px"></div><div class="flex justify-between items-center w-full py-12 px-12"><div class="flex flex-col gap-2"><p class="text-headline-2 text-content-layout-1 text-left">Revolutionize your database performance with Readyset</p><p class="text-body-large text-content-layout-2">Serve requests at sub-millisecond latencies with the modern database scaling and query caching system for MySQL and PostgreSQL.</p></div><div class="hidden laptop:block"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 145 33" class="fill-current text-content-layout-1 h-6"><path d="M16 31.328c0 .736-.597 1.333-1.333 1.333H4a4 4 0 0 1-4-4V17.994c0-.736.597-1.333 1.333-1.333H16v14.667Z"></path><path d="M21.333 11.328v5.333h-4c-.736 0-1.333.597-1.333 1.333v4h-5.333v-5.333h4c.736 0 1.333-.597 1.333-1.333v-4h5.333Z"></path><path d="M32 15.328c0 .736-.597 1.333-1.333 1.333H16V1.994c0-.736.597-1.333 1.333-1.333H28a4 4 0 0 1 4 4v10.667Z"></path><path fill-rule="evenodd" d="M91.272 5.367h2.864V23.25h-2.864v-1.99c-1.145 1.45-2.665 2.175-4.557 2.175-1.204 0-2.296-.294-3.275-.882a6.299 6.299 0 0 1-2.304-2.45c-.548-1.036-.822-2.193-.822-3.47 0-1.276.274-2.433.822-3.469a6.209 6.209 0 0 1 2.304-2.437c.98-.597 2.071-.896 3.275-.896 1.9 0 3.42.722 4.557 2.164V5.367Zm-3.997 15.308c1.146 0 2.096-.386 2.852-1.157.763-.779 1.145-1.74 1.145-2.885 0-1.152-.382-2.114-1.145-2.884-.756-.78-1.706-1.17-2.852-1.17-1.154 0-2.117.39-2.889 1.17-.764.77-1.145 1.732-1.145 2.884 0 1.145.381 2.106 1.145 2.885.772.771 1.735 1.157 2.89 1.157Zm-24.258-2.898c.05-.364.075-.737.075-1.119 0-1.956-.652-3.581-1.955-4.874-1.295-1.302-2.918-1.953-4.87-1.953-1.278 0-2.444.295-3.498.883a6.442 6.442 0 0 0-2.466 2.438c-.597 1.028-.896 2.172-.896 3.432 0 1.948.68 3.577 2.042 4.887 1.37 1.31 3.084 1.965 5.143 1.965 1.203 0 2.32-.24 3.35-.722 1.037-.48 1.892-1.144 2.564-1.99l-1.93-1.653c-.39.514-.938.94-1.643 1.28-.698.34-1.453.51-2.267.51-1.054 0-1.959-.277-2.714-.833-.747-.563-1.237-1.314-1.47-2.25h10.535Zm-9.19-4.538c.69-.556 1.494-.834 2.416-.834.93 0 1.74.278 2.428.834.697.555 1.154 1.289 1.37 2.2h-7.584c.233-.911.69-1.645 1.37-2.2Zm21.469-3.166h2.863V23.25h-2.864v-1.99c-1.145 1.45-2.664 2.175-4.557 2.175-1.204 0-2.296-.294-3.275-.882a6.299 6.299 0 0 1-2.304-2.45c-.548-1.036-.822-2.193-.822-3.47 0-1.276.274-2.433.822-3.469a6.209 6.209 0 0 1 2.304-2.437c.98-.597 2.071-.896 3.275-.896 1.901 0 3.42.722 4.558 2.164v-1.922Zm-3.998 10.602c1.146 0 2.096-.386 2.852-1.157.764-.779 1.145-1.74 1.145-2.885 0-1.152-.381-2.114-1.145-2.884-.756-.78-1.706-1.17-2.852-1.17-1.154 0-2.117.39-2.889 1.17-.763.77-1.145 1.732-1.145 2.884 0 1.145.382 2.106 1.145 2.885.772.771 1.735 1.157 2.89 1.157Zm35.186-10.602h3.188L102.941 25.6l-1.027 2.356h-3.319c.461-.939 1.313-2.68 1.718-3.537l.697-1.443-5.51-12.902h3.275l3.842 9.532 3.867-9.532Zm8.586 13.363c-2.092 0-3.894-.664-5.405-1.99l1.482-2.015c1.071 1.02 2.362 1.53 3.873 1.53.755 0 1.374-.124 1.855-.373.482-.257.722-.61.722-1.057a.93.93 0 0 0-.161-.535c-.1-.157-.225-.29-.374-.398-.141-.108-.353-.211-.635-.31-.282-.1-.531-.179-.747-.237a25.515 25.515 0 0 0-.884-.224l-.934-.224a16.527 16.527 0 0 1-.909-.286 6.683 6.683 0 0 1-.909-.373 5.835 5.835 0 0 1-.76-.497 2.716 2.716 0 0 1-.647-.672 3.57 3.57 0 0 1-.561-1.952c0-.862.241-1.6.722-2.213a4.153 4.153 0 0 1 1.868-1.343c.764-.29 1.627-.436 2.59-.436 1.901 0 3.549.577 4.944 1.729l-1.507 2.014c-.996-.845-2.125-1.268-3.387-1.268-.672 0-1.228.112-1.668.336-.432.224-.648.551-.648.982 0 .166.029.315.087.448a.93.93 0 0 0 .299.36c.15.108.291.2.423.274.133.075.328.153.586.236l.66.187.772.174c.373.083.68.157.921.224.249.058.552.149.909.273a4.943 4.943 0 0 1 1.669.87c.266.2.477.42.635.66.166.232.299.514.398.845.108.332.162.693.162 1.082 0 .87-.245 1.63-.734 2.276-.49.638-1.142 1.115-1.955 1.43-.806.315-1.723.473-2.752.473Zm20.26-6.778c0 .382-.025.755-.075 1.12h-10.534c.232.936.722 1.687 1.469 2.25.755.556 1.66.833 2.715.833.813 0 1.569-.17 2.266-.51.706-.34 1.254-.766 1.644-1.28l1.93 1.654c-.673.845-1.528 1.508-2.565 1.99-1.03.48-2.146.72-3.35.72-2.059 0-3.773-.654-5.143-1.964-1.361-1.31-2.042-2.94-2.042-4.887 0-1.26.299-2.404.897-3.432a6.436 6.436 0 0 1 2.465-2.438c1.054-.588 2.221-.883 3.499-.883 1.951 0 3.574.651 4.869 1.953 1.303 1.293 1.955 2.918 1.955 4.874Zm-6.849-4.253c-.921 0-1.726.278-2.415.834-.681.555-1.138 1.289-1.37 2.2h7.583c-.216-.911-.672-1.645-1.37-2.2-.689-.556-1.498-.834-2.428-.834Zm15.99.255h-3.674v6.212c0 .597.162 1.049.486 1.355.332.299.801.448 1.407.448.573 0 1.166-.15 1.781-.448v2.674c-.706.356-1.499.535-2.379.535-1.37 0-2.403-.361-3.1-1.082-.698-.722-1.046-1.729-1.046-3.022V12.66h-2.205v-2.587h2.205V5.367h2.851v4.706h3.674v2.587ZM48.869 9.873h-.49c-1.673 0-3.033.712-4.08 2.135v-1.935h-2.887V23.25h2.887v-6.434c0-1.222.36-2.189 1.08-2.9.728-.72 1.729-1.08 3-1.08h.49V9.873Z" clip-rule="evenodd"></path></svg></div></div><div role="separator" class="bg-border-layout-soft h-(--divider-thickness) w-full" style="--divider-thickness:1.5px"></div><div class="grid grid-cols-1 laptop:grid-cols-[1fr_1fr_2fr] w-full py-12 px-12 gap-8"><div class="flex flex-col gap-4"><p class="text-headline-5 text-content-layout-1 text-left">Product</p><div class="flex flex-col gap-2"><a href="/products/readyset-cloud" class="text-content-layout-2 hover:text-content-layout-1 transition-colors">Readyset Cloud</a><a href="/products/readyset-private" class="text-content-layout-2 hover:text-content-layout-1 transition-colors">Readyset Private</a><a href="/products/readyset-community" class="text-content-layout-2 hover:text-content-layout-1 transition-colors">Readyset Community</a><a href="/tools/querypilot" class="text-content-layout-2 hover:text-content-layout-1 transition-colors">QueryPilot</a><a href="/tools/rdst" class="text-content-layout-2 hover:text-content-layout-1 transition-colors">rdst CLI</a><a href="/pricing" class="text-content-layout-2 hover:text-content-layout-1 transition-colors">Pricing</a></div></div><div class="flex flex-col gap-8"><div class="flex flex-col gap-4"><p class="text-headline-5 text-content-layout-1 text-left">Resources</p><div class="flex flex-col gap-2"><a class="text-content-layout-2 hover:text-content-layout-1 transition-colors active" href="/blog" data-status="active" aria-current="page">Blog</a><a href="/case-studies" class="text-content-layout-2 hover:text-content-layout-1 transition-colors">Case Studies</a><a href="/resources/company" class="text-content-layout-2 hover:text-content-layout-1 transition-colors">Company</a><a href="https://docs.readyset.io" target="_blank" rel="noopener noreferrer" class="text-content-layout-2 hover:text-content-layout-1 transition-colors">Documentation</a></div></div><div class="flex flex-col gap-4"><p class="text-headline-5 text-content-layout-1 text-left">Legal</p><div class="flex flex-col gap-2"><a href="/privacy-policy" class="text-content-layout-2 hover:text-content-layout-1 transition-colors">Privacy Policy</a><a href="/term-of-use" class="text-content-layout-2 hover:text-content-layout-1 transition-colors">Terms of Service</a></div></div></div><div class="flex flex-col gap-4"><p class="text-headline-5 text-content-layout-1 text-left">Join our newsletter</p><p class="text-body-small text-content-layout-3 text-left">Stay updated with the latest news, insights, and developments from Readyset — straight to your inbox.</p><form class="flex flex-col gap-2 w-full"><div class="flex gap-2 w-full"><div class="relative w-full text-content-layout-1"><input type="email" class="flex h-10 w-full rounded-lg border-(length:--border-base) border-border-layout-1 bg-surface-layout-2 px-3 py-2 text-body-medium placeholder:text-content-layout-3 focus-visible:outline-none focus-visible:shadow-focus disabled:cursor-not-allowed disabled:opacity-50" aria-label="Email address" placeholder="your@email.address" autoComplete="email" value=""/></div><button type="submit" class="relative flex items-center justify-center min-w-max cursor-pointer select-none transition duration-fast ease-base transform focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-primary-soft focus-visible:ring-offset-2 focus-visible:ring-offset-surface-layout-1 active:scale-[0.98] active:origin-center text-button-medium py-3 px-4 rounded-2xl h-10 text-content-primary-solid bg-surface-primary-solid hover:bg-surface-primary-solid-hover active:bg-surface-primary-solid-active [&_#loader]:border-t-content-primary-solid"><div class="flex items-center">Subscribe</div></button></div></form></div></div><div role="separator" class="bg-border-layout-soft h-(--divider-thickness) w-full" style="--divider-thickness:1.5px"></div><div class="flex flex-col laptop:flex-row laptop:justify-between laptop:items-center gap-4 w-full py-12 px-12"><div class="flex items-center gap-6"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 145 33" class="fill-current text-content-layout-1 h-6"><path d="M16 31.328c0 .736-.597 1.333-1.333 1.333H4a4 4 0 0 1-4-4V17.994c0-.736.597-1.333 1.333-1.333H16v14.667Z"></path><path d="M21.333 11.328v5.333h-4c-.736 0-1.333.597-1.333 1.333v4h-5.333v-5.333h4c.736 0 1.333-.597 1.333-1.333v-4h5.333Z"></path><path d="M32 15.328c0 .736-.597 1.333-1.333 1.333H16V1.994c0-.736.597-1.333 1.333-1.333H28a4 4 0 0 1 4 4v10.667Z"></path><path fill-rule="evenodd" d="M91.272 5.367h2.864V23.25h-2.864v-1.99c-1.145 1.45-2.665 2.175-4.557 2.175-1.204 0-2.296-.294-3.275-.882a6.299 6.299 0 0 1-2.304-2.45c-.548-1.036-.822-2.193-.822-3.47 0-1.276.274-2.433.822-3.469a6.209 6.209 0 0 1 2.304-2.437c.98-.597 2.071-.896 3.275-.896 1.9 0 3.42.722 4.557 2.164V5.367Zm-3.997 15.308c1.146 0 2.096-.386 2.852-1.157.763-.779 1.145-1.74 1.145-2.885 0-1.152-.382-2.114-1.145-2.884-.756-.78-1.706-1.17-2.852-1.17-1.154 0-2.117.39-2.889 1.17-.764.77-1.145 1.732-1.145 2.884 0 1.145.381 2.106 1.145 2.885.772.771 1.735 1.157 2.89 1.157Zm-24.258-2.898c.05-.364.075-.737.075-1.119 0-1.956-.652-3.581-1.955-4.874-1.295-1.302-2.918-1.953-4.87-1.953-1.278 0-2.444.295-3.498.883a6.442 6.442 0 0 0-2.466 2.438c-.597 1.028-.896 2.172-.896 3.432 0 1.948.68 3.577 2.042 4.887 1.37 1.31 3.084 1.965 5.143 1.965 1.203 0 2.32-.24 3.35-.722 1.037-.48 1.892-1.144 2.564-1.99l-1.93-1.653c-.39.514-.938.94-1.643 1.28-.698.34-1.453.51-2.267.51-1.054 0-1.959-.277-2.714-.833-.747-.563-1.237-1.314-1.47-2.25h10.535Zm-9.19-4.538c.69-.556 1.494-.834 2.416-.834.93 0 1.74.278 2.428.834.697.555 1.154 1.289 1.37 2.2h-7.584c.233-.911.69-1.645 1.37-2.2Zm21.469-3.166h2.863V23.25h-2.864v-1.99c-1.145 1.45-2.664 2.175-4.557 2.175-1.204 0-2.296-.294-3.275-.882a6.299 6.299 0 0 1-2.304-2.45c-.548-1.036-.822-2.193-.822-3.47 0-1.276.274-2.433.822-3.469a6.209 6.209 0 0 1 2.304-2.437c.98-.597 2.071-.896 3.275-.896 1.901 0 3.42.722 4.558 2.164v-1.922Zm-3.998 10.602c1.146 0 2.096-.386 2.852-1.157.764-.779 1.145-1.74 1.145-2.885 0-1.152-.381-2.114-1.145-2.884-.756-.78-1.706-1.17-2.852-1.17-1.154 0-2.117.39-2.889 1.17-.763.77-1.145 1.732-1.145 2.884 0 1.145.382 2.106 1.145 2.885.772.771 1.735 1.157 2.89 1.157Zm35.186-10.602h3.188L102.941 25.6l-1.027 2.356h-3.319c.461-.939 1.313-2.68 1.718-3.537l.697-1.443-5.51-12.902h3.275l3.842 9.532 3.867-9.532Zm8.586 13.363c-2.092 0-3.894-.664-5.405-1.99l1.482-2.015c1.071 1.02 2.362 1.53 3.873 1.53.755 0 1.374-.124 1.855-.373.482-.257.722-.61.722-1.057a.93.93 0 0 0-.161-.535c-.1-.157-.225-.29-.374-.398-.141-.108-.353-.211-.635-.31-.282-.1-.531-.179-.747-.237a25.515 25.515 0 0 0-.884-.224l-.934-.224a16.527 16.527 0 0 1-.909-.286 6.683 6.683 0 0 1-.909-.373 5.835 5.835 0 0 1-.76-.497 2.716 2.716 0 0 1-.647-.672 3.57 3.57 0 0 1-.561-1.952c0-.862.241-1.6.722-2.213a4.153 4.153 0 0 1 1.868-1.343c.764-.29 1.627-.436 2.59-.436 1.901 0 3.549.577 4.944 1.729l-1.507 2.014c-.996-.845-2.125-1.268-3.387-1.268-.672 0-1.228.112-1.668.336-.432.224-.648.551-.648.982 0 .166.029.315.087.448a.93.93 0 0 0 .299.36c.15.108.291.2.423.274.133.075.328.153.586.236l.66.187.772.174c.373.083.68.157.921.224.249.058.552.149.909.273a4.943 4.943 0 0 1 1.669.87c.266.2.477.42.635.66.166.232.299.514.398.845.108.332.162.693.162 1.082 0 .87-.245 1.63-.734 2.276-.49.638-1.142 1.115-1.955 1.43-.806.315-1.723.473-2.752.473Zm20.26-6.778c0 .382-.025.755-.075 1.12h-10.534c.232.936.722 1.687 1.469 2.25.755.556 1.66.833 2.715.833.813 0 1.569-.17 2.266-.51.706-.34 1.254-.766 1.644-1.28l1.93 1.654c-.673.845-1.528 1.508-2.565 1.99-1.03.48-2.146.72-3.35.72-2.059 0-3.773-.654-5.143-1.964-1.361-1.31-2.042-2.94-2.042-4.887 0-1.26.299-2.404.897-3.432a6.436 6.436 0 0 1 2.465-2.438c1.054-.588 2.221-.883 3.499-.883 1.951 0 3.574.651 4.869 1.953 1.303 1.293 1.955 2.918 1.955 4.874Zm-6.849-4.253c-.921 0-1.726.278-2.415.834-.681.555-1.138 1.289-1.37 2.2h7.583c-.216-.911-.672-1.645-1.37-2.2-.689-.556-1.498-.834-2.428-.834Zm15.99.255h-3.674v6.212c0 .597.162 1.049.486 1.355.332.299.801.448 1.407.448.573 0 1.166-.15 1.781-.448v2.674c-.706.356-1.499.535-2.379.535-1.37 0-2.403-.361-3.1-1.082-.698-.722-1.046-1.729-1.046-3.022V12.66h-2.205v-2.587h2.205V5.367h2.851v4.706h3.674v2.587ZM48.869 9.873h-.49c-1.673 0-3.033.712-4.08 2.135v-1.935h-2.887V23.25h2.887v-6.434c0-1.222.36-2.189 1.08-2.9.728-.72 1.729-1.08 3-1.08h.49V9.873Z" clip-rule="evenodd"></path></svg><ul class="flex items-center gap-3"><li><a href="https://github.com/readysettech/readyset" aria-label="Readyset on GitHub" target="_blank" rel="noopener noreferrer" class="text-content-layout-3 hover:text-content-layout-1 transition-colors block"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" class="size-5"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0 1 12 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.31.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.02 10.02 0 0 0 22 12.017C22 6.484 17.522 2 12 2Z"></path></svg></a></li><li><a href="https://www.linkedin.com/company/readysettech" aria-label="Readyset on LinkedIn" target="_blank" rel="noopener noreferrer" class="text-content-layout-3 hover:text-content-layout-1 transition-colors block"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" class="size-5"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.026-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286ZM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.063 2.063 0 1 1 2.063 2.065Zm1.782 13.019H3.555V9H7.12v11.452ZM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.226.792 24 1.771 24h20.451C23.2 24 24 23.226 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003Z"></path></svg></a></li><li><a href="https://x.com/readysetio" aria-label="Readyset on X" target="_blank" rel="noopener noreferrer" class="text-content-layout-3 hover:text-content-layout-1 transition-colors block"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" class="size-5"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231 5.45-6.231Zm-1.161 17.52h1.833L7.084 4.126H5.117L17.083 19.77Z"></path></svg></a></li><li><a href="https://www.youtube.com/@readyset" aria-label="Readyset on YouTube" target="_blank" rel="noopener noreferrer" class="text-content-layout-3 hover:text-content-layout-1 transition-colors block"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" class="size-5"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814ZM9.545 15.568V8.432L15.818 12l-6.273 3.568Z"></path></svg></a></li><li><a href="https://go.readyset.io/community" aria-label="Readyset community Slack" target="_blank" rel="noopener noreferrer" class="text-content-layout-3 hover:text-content-layout-1 transition-colors block"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" class="size-5"><path d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52ZM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313ZM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834ZM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312ZM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834ZM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312ZM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52ZM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313Z"></path></svg></a></li></ul></div><div class="flex flex-col laptop:flex-row laptop:items-center gap-2 laptop:gap-6"><button type="button" class="text-content-layout-2 hover:text-content-layout-1 transition-colors text-left cursor-pointer">Cookie preferences</button><p class="text-body-large text-content-layout-2">© <!-- -->2026<!-- --> Readyset. All rights reserved.</p></div></div></div></div></div><!--/$--><!--/$--></main><script nonce="/nDOcIQS7QsP54OHjv+3Kw==" class="$tsr" id="$tsr-stream-barrier">(self.$R=self.$R||{})["tsr"]=[];self.$_TSR={h(){this.hydrated=!0,this.c()},e(){this.streamEnded=!0,this.c()},c(){this.hydrated&&this.streamEnded&&(delete self.$_TSR,delete self.$R.tsr)},p(e){this.initialized?e():this.buffer.push(e)},buffer:[]};$_TSR.router=($R=>$R[0]={manifest:$R[1]={routes:$R[2]={__root__:$R[3]={preloads:$R[4]=["/assets/index-CgozBq9o.js"],scripts:$R[5]=[$R[6]={attrs:$R[7]={type:"module",async:!0,src:"/assets/index-CgozBq9o.js"}}]},"/blog/$slug":$R[8]={preloads:$R[9]=["/assets/_slug-feOgb-yl.js","/assets/article-card-BslrmY68.js","/assets/newsletter-popup-C0xZnHQP.js","/assets/rich-markdown-DYApPWH1.js","/assets/index-rMShz_NE.js","/assets/use-disclosure-DaTsKJMJ.js"]}}},matches:$R[10]=[$R[11]={i:"__root__ |