<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Database on Nalar</title>
    <link>https://nalar.dev/id/tags/database/</link>
    <description>Recent content in Database on Nalar</description>
    <generator>Hugo</generator>
    <language>id-id</language>
    <lastBuildDate>Sat, 19 Sep 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://nalar.dev/id/tags/database/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Kolom Versi Mengubah Update Database Menjadi Transisi State Bersyarat</title>
      <link>https://nalar.dev/id/kolom-versi-mengubah-update-database-menjadi-transisi-state-bersyarat/</link>
      <pubDate>Sat, 19 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://nalar.dev/id/kolom-versi-mengubah-update-database-menjadi-transisi-state-bersyarat/</guid>
      <description>&lt;p&gt;Client database dapat membaca sebuah row, memakai waktu untuk menghitung perubahan, lalu menjalankan &lt;code&gt;UPDATE&lt;/code&gt; setelah transaksi lain lebih dulu mengubah row yang sama. Jika statement terakhir hanya mengidentifikasi row lewat primary key, write yang datang kemudian dapat mengganti state yang dihitung dari kondisi lama tanpa konflik yang terlihat.&lt;/p&gt;&#xA;&lt;p&gt;Kolom versi mengubah batas tersebut. Client membaca state aplikasi beserta nilai revisinya, lalu menyertakan revisi itu dalam predicate update. Database menerima write hanya selama revisi yang tersimpan masih sama dengan state yang sebelumnya diamati client.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Menjalankan Database Turso Embedded di SvelteKit Tanpa Turso Cloud</title>
      <link>https://nalar.dev/id/menjalankan-database-turso-embedded-di-sveltekit-tanpa-turso-cloud/</link>
      <pubDate>Sat, 19 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://nalar.dev/id/menjalankan-database-turso-embedded-di-sveltekit-tanpa-turso-cloud/</guid>
      <description>&lt;p&gt;Aplikasi SvelteKit tidak harus memakai Turso Cloud untuk menggunakan Turso. Paket @tursodatabase/database dapat membuka file database langsung dari proses Node.js:&lt;/p&gt;&#xA;&lt;div&#xA;  x-data=&#34;{ code: $el.querySelector(&#39;code&#39;).innerText, copied: false }&#34;&#xA;  class=&#34;code-block group relative my-6 overflow-hidden rounded-xl border border-line bg-surface-muted dark:border-night-line dark:bg-night-surface&#34;&gt;&#xA;  &lt;button&#xA;    type=&#34;button&#34;&#xA;    @click=&#34;navigator.clipboard.writeText(code); copied = true; setTimeout(() =&gt; copied = false, 1600)&#34;&#xA;    class=&#34;absolute right-3 top-3 z-10 rounded-lg border border-line-strong bg-surface px-2 py-1 font-mono text-[0.8rem] text-muted opacity-0 transition group-hover:opacity-100 hover:bg-ink hover:text-white dark:border-night-line dark:bg-night dark:text-night-muted dark:hover:bg-white dark:hover:text-ink&#34;&gt;&#xA;    &lt;span x-text=&#34;copied ? &#39;Copied&#39; : &#39;Copy&#39;&#34;&gt;&lt;/span&gt;&#xA;  &lt;/button&gt;&#xA;  &#xA;  &lt;div class=&#34;overflow-x-auto p-4 text-sm leading-6 [&amp;_pre]:!m-0 [&amp;_pre]:!bg-transparent [&amp;_pre]:!p-0 [&amp;_code]:font-mono&#34;&gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;font-weight:bold&#34;&gt;import&lt;/span&gt; { connect } &lt;span style=&#34;font-weight:bold&#34;&gt;from&lt;/span&gt; &lt;span style=&#34;font-style:italic&#34;&gt;&amp;#39;@tursodatabase/database&amp;#39;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;font-weight:bold&#34;&gt;const&lt;/span&gt; db = &lt;span style=&#34;font-weight:bold&#34;&gt;await&lt;/span&gt; connect(&lt;span style=&#34;font-style:italic&#34;&gt;&amp;#39;local.db&amp;#39;&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Konfigurasi ini tidak memerlukan URL database, authentication token, ataupun network round trip. Aplikasi membaca dan menulis file database lokal.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Write Skew Merusak Invariant Lintas Row pada Snapshot Isolation</title>
      <link>https://nalar.dev/id/write-skew-merusak-invariant-lintas-row-snapshot-isolation/</link>
      <pubDate>Sat, 19 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://nalar.dev/id/write-skew-merusak-invariant-lintas-row-snapshot-isolation/</guid>
      <description>&lt;p&gt;Snapshot isolation dapat membiarkan dua transaksi commit meskipun hasil gabungannya melanggar aturan yang sudah diperiksa masing-masing transaksi sebelum melakukan write. Anomali ini muncul saat kedua transaksi membaca kondisi logis yang sama, lalu menulis row yang berbeda. Karena write set keduanya tidak beririsan, deteksi konflik write-write biasa tidak memiliki benturan untuk ditolak.&lt;/p&gt;&#xA;&lt;p&gt;Kondisi ini disebut write skew. Batas masalahnya berada di antara invariant aplikasi dan isolation database: sebuah transaksi dapat melihat snapshot yang konsisten, tetapi tetap ikut menghasilkan state akhir yang akan gagal terhadap predicate yang sebelumnya diperiksa.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Partial Index PostgreSQL Memfokuskan Entri Indeks</title>
      <link>https://nalar.dev/id/partial-index-postgresql-memfokuskan-entri-indeks/</link>
      <pubDate>Mon, 14 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://nalar.dev/id/partial-index-postgresql-memfokuskan-entri-indeks/</guid>
      <description>&lt;p&gt;Indeks PostgreSQL tidak harus merepresentasikan setiap baris dalam tabelnya. Partial index menambahkan predikat ke definisi indeks, sehingga hanya baris yang memenuhi predikat tersebut yang memperoleh entri indeks. Hal ini mengubah cakupan fisik indeks sekaligus kumpulan query yang dapat menggunakan indeks tersebut melalui planner.&lt;/p&gt;&#xA;&lt;p&gt;Mekanisme ini cocok untuk workload ketika subset baris yang stabil menerima porsi query yang jauh lebih besar. Aplikasi mungkin berulang kali memeriksa job yang masih pending sementara job yang selesai sebagian besar hanya menjadi riwayat, atau melakukan query pada akun aktif sementara akun yang dinonaktifkan tetap berada dalam tabel yang sama.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
