{"id":33330,"date":"2026-09-24T04:38:31","date_gmt":"2026-09-24T04:38:31","guid":{"rendered":"https:\/\/hosteko.com\/blog\/?p=33330"},"modified":"2026-09-24T04:38:31","modified_gmt":"2026-09-24T04:38:31","slug":"mengenal-change-data-capture-cdc","status":"publish","type":"post","link":"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc","title":{"rendered":"Mengenal Change Data Capture (CDC): Cara Cerdas Menangkap Perubahan Data"},"content":{"rendered":"<p class=\"PDq2pG_selectionAnchorContainer\" dir=\"auto\" data-start=\"97\" data-end=\"419\">Dalam sistem digital, data terus berubah setiap saat. Data pelanggan dapat diperbarui, transaksi baru masuk, stok produk berubah, atau status pesanan berpindah dari diproses menjadi selesai. Perubahan-perubahan tersebut perlu diketahui oleh sistem lain agar data tetap sinkron dan proses bisnis dapat berjalan dengan baik.<\/p>\n<p dir=\"auto\" data-start=\"421\" data-end=\"541\">Salah satu pendekatan yang digunakan untuk menangkap perubahan data secara efisien adalah <em>Change Data Capture (CDC).<\/em><\/p>\n<p dir=\"auto\" data-start=\"543\" data-end=\"866\">CDC memungkinkan sistem mendeteksi perubahan yang terjadi pada sumber data, seperti operasi <em>insert, update, dan delete<\/em>, kemudian meneruskan informasi perubahan tersebut ke sistem lain. Dengan pendekatan ini, aplikasi tidak harus membaca seluruh isi database secara berulang hanya untuk mengetahui data apa yang berubah.<\/p>\n<p dir=\"auto\" data-start=\"868\" data-end=\"1069\">Teknologi ini banyak digunakan dalam berbagai kebutuhan modern, mulai dari data integration, real-time analytics, data warehouse, data lake, event-driven architecture, hingga sinkronisasi database. Lalu, apa itu Change Data Capture, bagaimana cara kerjanya, apa saja jenisnya, dan kapan teknologi ini sebaiknya digunakan? Berikut pembahasan lengkapnya!<\/p>\n<h2 dir=\"auto\" data-start=\"1220\" data-end=\"1257\">Apa Itu Change Data Capture (CDC)?<\/h2>\n<p dir=\"auto\" data-start=\"1259\" data-end=\"1487\"><em>Change Data Capture (CDC)<\/em> adalah teknik untuk mengidentifikasi dan menangkap perubahan yang terjadi pada data di sebuah sumber, kemudian menyediakan informasi mengenai perubahan tersebut agar dapat diproses oleh sistem lain. Perubahan yang ditangkap umumnya mencakup:<\/p>\n<ul data-start=\"1533\" data-end=\"1672\">\n<li data-start=\"1533\" data-end=\"1574\"><strong data-start=\"1535\" data-end=\"1545\">Insert<br \/>\n<\/strong>Penambahan data baru.<\/li>\n<li data-start=\"1575\" data-end=\"1634\"><strong data-start=\"1577\" data-end=\"1587\">Update<br \/>\n<\/strong>Perubahan terhadap data yang sudah ada.<\/li>\n<li data-start=\"1635\" data-end=\"1672\"><strong data-start=\"1637\" data-end=\"1647\">Delete<br \/>\n<\/strong>Penghapusan data.<\/li>\n<\/ul>\n<p dir=\"auto\" data-start=\"1674\" data-end=\"1763\">Sebagai contoh, sebuah toko online memiliki tabel <code data-start=\"1724\" data-end=\"1732\">orders<\/code> dengan data pesanan pelanggan. Ketika pelanggan membuat pesanan baru:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>INSERT\r\nOrder ID: 10025\r\nStatus: Paid<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"1854\" data-end=\"1936\">CDC dapat menangkap perubahan tersebut dan meneruskannya ke sistem lain, misalnya:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Database\r\n   \u2193\r\nCDC\r\n   \u2193\r\nMessage Broker\r\n   \u2193\r\nData Warehouse<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"2009\" data-end=\"2147\">Dengan mekanisme tersebut, sistem tujuan tidak perlu terus-menerus memeriksa seluruh tabel untuk mencari data baru atau data yang berubah.<\/p>\n<p dir=\"auto\" data-start=\"2149\" data-end=\"2436\">Secara sederhana, CDC dapat dianalogikan seperti <em>sistem pemantauan perubahan dokumen.<\/em> Sistem tidak perlu membaca seluruh dokumen setiap kali ingin mengetahui perubahan. Sebaliknya, sistem cukup mencatat bagian yang mengalami perubahan dan meneruskannya kepada pihak yang membutuhkan.<\/p>\n<h2 dir=\"auto\" data-start=\"2438\" data-end=\"2480\">Mengapa Change Data Capture Dibutuhkan?<\/h2>\n<p dir=\"auto\" data-start=\"2482\" data-end=\"2591\">Pada sistem sederhana, proses sinkronisasi data dapat dilakukan dengan menyalin seluruh tabel secara berkala. Misalnya, database memiliki 10 juta baris data. Setiap malam, sistem mengambil seluruh data tersebut untuk dibandingkan dengan data sebelumnya.<\/p>\n<p dir=\"auto\" data-start=\"2738\" data-end=\"2895\">Cara tersebut mungkin masih dapat diterapkan pada kondisi tertentu. Namun, ketika volume data semakin besar, pendekatan tersebut dapat menjadi tidak efisien. Bayangkan hanya ada 10.000 baris yang berubah dari 10 juta baris data. Sistem tetap harus membaca dan memproses data dalam jumlah sangat besar hanya untuk menemukan perubahan tersebut.<\/p>\n<p dir=\"auto\" data-start=\"3083\" data-end=\"3122\">CDC menawarkan pendekatan yang berbeda:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>10.000 data berubah\r\n        \u2193\r\nCDC menangkap perubahan\r\n        \u2193\r\nHanya perubahan yang diteruskan\r\n        \u2193\r\nSistem tujuan memperbarui data<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"3274\" data-end=\"3409\">Pendekatan ini dapat mengurangi kebutuhan pemrosesan data yang tidak berubah dan membantu membangun pipeline data yang lebih responsif.<\/p>\n<h2 dir=\"auto\" data-start=\"3411\" data-end=\"3455\">Bagaimana Cara Kerja Change Data Capture?<\/h2>\n<p dir=\"auto\" data-start=\"3457\" data-end=\"3513\">Secara umum, alur CDC dapat digambarkan dibawah ini. Setiap implementasi dapat memiliki arsitektur yang berbeda, tetapi konsep dasarnya relatif sama.<\/p>\n<p dir=\"auto\" data-start=\"3777\" data-end=\"3814\"><span style=\"font-size: 20px\">1. Data Berada di Source Database<\/span><\/p>\n<p dir=\"auto\" data-start=\"3816\" data-end=\"3852\">Proses dimulai dari database sumber. Contohnya:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>MySQL\r\nPostgreSQL\r\nSQL Server\r\nOracle<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"3914\" data-end=\"3983\">Database tersebut menyimpan data operasional yang digunakan aplikasi.<\/p>\n<p dir=\"auto\" data-start=\"3985\" data-end=\"4014\"><span style=\"font-size: 20px\">2. Terjadi Perubahan Data<\/span><\/p>\n<p dir=\"auto\" data-start=\"4016\" data-end=\"4055\">Kemudian terjadi operasi terhadap data. Misalnya:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>INSERT customer\r\nUPDATE customer\r\nDELETE customer<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"4129\" data-end=\"4196\">Perubahan tersebut menjadi informasi yang perlu ditangkap oleh CDC.<\/p>\n<p dir=\"auto\" data-start=\"4198\" data-end=\"4229\"><span style=\"font-size: 20px\">3. CDC Mendeteksi Perubahan<\/span><\/p>\n<p dir=\"auto\" data-start=\"4231\" data-end=\"4307\">Komponen CDC membaca perubahan dari sumber data menggunakan metode tertentu. Metode yang digunakan bergantung pada teknologi CDC. Sebagian implementasi membaca <em>transaction log<\/em>, sementara metode lain dapat menggunakan timestamp, trigger, atau mekanisme database tertentu.<\/p>\n<p dir=\"auto\" data-start=\"4509\" data-end=\"4546\"><span style=\"font-size: 20px\">4. Perubahan Diubah Menjadi Event<\/span><\/p>\n<p dir=\"auto\" data-start=\"4548\" data-end=\"4610\">Perubahan data kemudian dapat direpresentasikan sebagai event. Contohnya:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>{\r\n  \"operation\": <span class=\"\u037cz\">\"UPDATE\"<\/span>,\r\n  \"table\": <span class=\"\u037cz\">\"customers\"<\/span>,\r\n  \"id\": <span class=\"\u037cy\">1024<\/span>,\r\n  \"before\": {\r\n    \"status\": <span class=\"\u037cz\">\"inactive\"<\/span>\r\n  },\r\n  \"after\": {\r\n    \"status\": <span class=\"\u037cz\">\"active\"<\/span>\r\n  }\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"4788\" data-end=\"4867\">Format event sebenarnya dapat berbeda-beda tergantung teknologi yang digunakan.<\/p>\n<p dir=\"auto\" data-start=\"4869\" data-end=\"4906\"><span style=\"font-size: 20px\">5. Event Dikirim ke Sistem Tujuan<\/span><\/p>\n<p dir=\"auto\" data-start=\"4908\" data-end=\"4965\">Event kemudian diteruskan ke consumer atau sistem tujuan. Contohnya:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>CDC\r\n \u2193\r\nKafka\r\n \u2193\r\nData Warehouse<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"5023\" data-end=\"5028\">atau:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>CDC\r\n \u2193\r\nStreaming Platform\r\n \u2193\r\nSearch Engine<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"5086\" data-end=\"5162\">Sistem tujuan kemudian menggunakan event tersebut untuk memperbarui datanya.<\/p>\n<h2 dir=\"auto\" data-start=\"5164\" data-end=\"5198\">Jenis-Jenis Change Data Capture<\/h2>\n<p dir=\"auto\" data-start=\"5200\" data-end=\"5335\">CDC dapat diimplementasikan dengan beberapa pendekatan. Masing-masing memiliki karakteristik, kelebihan, dan keterbatasan yang berbeda. Secara umum, beberapa metode yang sering dibahas adalah <em>log-based CDC, trigger-based CDC, timestamp-based CDC, dan query-based CDC.<\/em><\/p>\n<p dir=\"auto\" data-start=\"5474\" data-end=\"5494\"><span style=\"font-size: 20px\">1. Log-Based CDC<\/span><\/p>\n<p dir=\"auto\" data-start=\"5496\" data-end=\"5600\"><em>Log-based CDC<\/em> memanfaatkan transaction log atau mekanisme log perubahan yang tersedia pada database. Database biasanya mencatat aktivitas transaksi untuk kebutuhan seperti recovery dan konsistensi data. CDC dapat membaca informasi perubahan tersebut dan meneruskannya ke sistem lain. Contohnya:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Database\r\n   \u2193\r\nTransaction Log\r\n   \u2193\r\nCDC Connector\r\n   \u2193\r\nEvent Stream\r\n   \u2193\r\nConsumer<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"5892\" data-end=\"6040\">Metode ini banyak digunakan dalam arsitektur data modern karena dapat menangkap perubahan tanpa harus melakukan query berulang terhadap tabel utama. Beberapa teknologi CDC populer menggunakan pendekatan berbasis log untuk database tertentu.<\/p>\n<p dir=\"auto\" data-start=\"6135\" data-end=\"6159\"><span style=\"font-size: 20px\">2. Trigger-Based CDC<\/span><\/p>\n<p dir=\"auto\" data-start=\"6161\" data-end=\"6277\">Pada metode ini, database menggunakan <em>trigger <\/em>untuk menjalankan tindakan tertentu ketika terjadi perubahan data. Misalnya, ketika sebuah baris diperbarui:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>UPDATE customers\r\n      \u2193\r\nDatabase Trigger\r\n      \u2193\r\nCDC Table \/ Audit Table<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"6409\" data-end=\"6476\">Trigger kemudian dapat mencatat perubahan tersebut ke tabel khusus. Kelebihannya adalah mekanisme dapat diterapkan pada database yang mendukung trigger. Namun, trigger juga perlu dirancang dengan hati-hati karena logika tambahan tersebut berjalan dalam konteks operasi database.<\/p>\n<p dir=\"auto\" data-start=\"6690\" data-end=\"6716\"><span style=\"font-size: 20px\">3. Timestamp-Based CDC<\/span><\/p>\n<p dir=\"auto\" data-start=\"6718\" data-end=\"6797\">Metode ini menggunakan kolom waktu untuk mengetahui kapan data terakhir diubah. Contohnya:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>id | name  | updated_at\r\n---|-------|-------------------\r\n1  | Andi  | 2026-09-23 10:00\r\n2  | Budi  | 2026-09-24 08:00<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"6940\" data-end=\"7007\">Sistem kemudian mengambil data yang berubah setelah waktu tertentu. Misalnya:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037cv\">SELECT<\/span> <span class=\"\u037cv\">*<\/span>\r\n<span class=\"\u037cv\">FROM<\/span> customers\r\n<span class=\"\u037cv\">WHERE<\/span> updated_at <span class=\"\u037cv\">&gt;<\/span> <span class=\"\u037cz\">'2026-09-23 23:59:59'<\/span>;<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"7098\" data-end=\"7161\">Pendekatan ini relatif sederhana, tetapi memiliki keterbatasan. Salah satunya adalah penghapusan data. Ketika sebuah baris benar-benar dihapus, data tersebut tidak lagi tersedia untuk ditemukan melalui kolom <code data-start=\"7307\" data-end=\"7319\">updated_at<\/code>.<\/p>\n<p dir=\"auto\" data-start=\"7322\" data-end=\"7442\">Karena itu, timestamp-based CDC perlu dirancang dengan mekanisme tambahan apabila sistem harus menangkap operasi delete.<\/p>\n<p dir=\"auto\" data-start=\"7444\" data-end=\"7466\"><span style=\"font-size: 20px\">4. Query-Based CDC<\/span><\/p>\n<p dir=\"auto\" data-start=\"7468\" data-end=\"7564\">Query-based CDC menggunakan query untuk secara berkala memeriksa database dan mencari perubahan. Misalnya:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Setiap 5 menit\r\n       \u2193\r\nQuery database\r\n       \u2193\r\nCari data yang berubah\r\n       \u2193\r\nKirim perubahan<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"7686\" data-end=\"7825\">Metode ini lebih sederhana untuk kebutuhan tertentu, tetapi semakin kurang ideal ketika volume data dan kebutuhan real-time semakin tinggi.<\/p>\n<h2 dir=\"auto\" data-start=\"7827\" data-end=\"7853\">Perbandingan Metode CDC<\/h2>\n<div class=\"group TyagGW_tableContainer\" dir=\"auto\">\n<div class=\"TyagGW_tableWrapper flex flex-col-reverse w-fit\">\n<table class=\"w-fit min-w-(--thread-content-width)\" dir=\"auto\" style=\"height: 303px\" width=\"837\" data-start=\"7855\" data-end=\"8455\">\n<thead data-start=\"7855\" data-end=\"7905\">\n<tr data-start=\"7855\" data-end=\"7905\">\n<th class=\"last:pe-10\" data-start=\"7855\" data-end=\"7864\" data-col-size=\"sm\">Metode<\/th>\n<th class=\"last:pe-10\" data-start=\"7864\" data-end=\"7877\" data-col-size=\"sm\">Cara kerja<\/th>\n<th class=\"last:pe-10\" data-start=\"7877\" data-end=\"7889\" data-col-size=\"md\">Kelebihan<\/th>\n<th class=\"last:pe-10\" data-start=\"7889\" data-end=\"7905\" data-col-size=\"md\">Keterbatasan<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"7924\" data-end=\"8455\">\n<tr data-start=\"7924\" data-end=\"8088\">\n<td data-start=\"7924\" data-end=\"7936\" data-col-size=\"sm\">Log-based<\/td>\n<td data-start=\"7936\" data-end=\"7969\" data-col-size=\"sm\">Membaca transaction\/change log<\/td>\n<td data-start=\"7969\" data-end=\"8031\" data-col-size=\"md\">Efisien dan dapat mendukung perubahan secara near real-time<\/td>\n<td data-start=\"8031\" data-end=\"8088\" data-col-size=\"md\">Bergantung pada dukungan database dan konfigurasi log<\/td>\n<\/tr>\n<tr data-start=\"8089\" data-end=\"8221\">\n<td data-start=\"8089\" data-end=\"8105\" data-col-size=\"sm\">Trigger-based<\/td>\n<td data-start=\"8105\" data-end=\"8134\" data-col-size=\"sm\">Trigger mencatat perubahan<\/td>\n<td data-start=\"8134\" data-end=\"8178\" data-col-size=\"md\">Dapat menangkap perubahan secara langsung<\/td>\n<td data-start=\"8178\" data-end=\"8221\" data-col-size=\"md\">Menambah logika dan beban pada database<\/td>\n<\/tr>\n<tr data-start=\"8222\" data-end=\"8325\">\n<td data-start=\"8222\" data-end=\"8240\" data-col-size=\"sm\">Timestamp-based<\/td>\n<td data-start=\"8240\" data-end=\"8270\" data-col-size=\"sm\">Menggunakan waktu perubahan<\/td>\n<td data-start=\"8270\" data-end=\"8290\" data-col-size=\"md\">Relatif sederhana<\/td>\n<td data-start=\"8290\" data-end=\"8325\" data-col-size=\"md\">Delete perlu mekanisme tambahan<\/td>\n<\/tr>\n<tr data-start=\"8326\" data-end=\"8455\">\n<td data-start=\"8326\" data-end=\"8340\" data-col-size=\"sm\">Query-based<\/td>\n<td data-start=\"8340\" data-end=\"8374\" data-col-size=\"sm\">Melakukan polling\/query berkala<\/td>\n<td data-start=\"8374\" data-end=\"8406\" data-col-size=\"md\">Mudah dipahami dan diterapkan<\/td>\n<td data-start=\"8406\" data-end=\"8455\" data-col-size=\"md\">Dapat membebani database dan memiliki latency<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"8457\" data-end=\"8668\">Tidak ada satu metode CDC yang selalu cocok untuk semua sistem. Pemilihan metode perlu mempertimbangkan database, volume transaksi, kebutuhan latency, jenis perubahan yang perlu ditangkap, dan arsitektur sistem.<\/p>\n<h2 dir=\"auto\" data-start=\"8670\" data-end=\"8706\">Apa Saja Data yang Ditangkap CDC?<\/h2>\n<p dir=\"auto\" data-start=\"8708\" data-end=\"8766\">CDC pada umumnya dapat menangkap tiga jenis operasi utama.<\/p>\n<p dir=\"auto\" data-start=\"8768\" data-end=\"8778\"><strong>1. Insert<\/strong><\/p>\n<p dir=\"auto\" data-start=\"8780\" data-end=\"8824\">Insert terjadi ketika data baru ditambahkan. Contoh:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Customer baru\r\n      \u2193\r\nINSERT\r\n      \u2193\r\nCDC Event<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"8895\" data-end=\"8905\"><strong>2. Update<\/strong><\/p>\n<p dir=\"auto\" data-start=\"8907\" data-end=\"8969\">Update terjadi ketika data yang sudah ada mengalami perubahan. Misalnya:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Status: Pending\r\n        \u2193\r\nStatus: Paid<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"9034\" data-end=\"9084\">CDC dapat meneruskan informasi perubahan tersebut.<\/p>\n<p dir=\"auto\" data-start=\"9086\" data-end=\"9096\"><strong>3. Delete<\/strong><\/p>\n<p dir=\"auto\" data-start=\"9098\" data-end=\"9140\">Delete terjadi ketika sebuah data dihapus. Contohnya:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Customer ID 1001\r\n       \u2193\r\nDELETE\r\n       \u2193\r\nCDC Event<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"9219\" data-end=\"9298\">Consumer kemudian dapat menghapus atau menandai data tersebut di sistem tujuan.<\/p>\n<h2 dir=\"auto\" data-start=\"9300\" data-end=\"9334\">Contoh Sederhana Penggunaan CDC<\/h2>\n<p dir=\"auto\" data-start=\"9336\" data-end=\"9418\">Misalnya sebuah perusahaan memiliki sistem e-commerce dengan database operasional: <code>MySQL<br \/>\n<\/code>Data pesanan berada di tabel: <code>orders<\/code><\/p>\n<p dir=\"auto\" data-start=\"9490\" data-end=\"9555\">Perusahaan juga memiliki data warehouse untuk kebutuhan analitik. Tanpa CDC, salah satu pendekatan yang mungkin digunakan adalah:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>MySQL\r\n  \u2193\r\nExport seluruh data\r\n  \u2193\r\nData Warehouse<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"9684\" data-end=\"9731\">Proses tersebut dapat dilakukan secara berkala. Dengan CDC:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>MySQL\r\n  \u2193\r\nCDC\r\n  \u2193\r\nChange Events\r\n  \u2193\r\nData Warehouse<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"9810\" data-end=\"9843\">Ketika sebuah order berubah dari: <code>Pending<\/code> menjadi <code>Paid<\/code><\/p>\n<p dir=\"auto\" data-start=\"9894\" data-end=\"10039\">CDC dapat menangkap perubahan tersebut sehingga sistem analitik dapat memperbarui data yang relevan tanpa harus mengambil seluruh tabel <code data-start=\"10030\" data-end=\"10038\">orders<\/code>.<\/p>\n<h2 dir=\"auto\" data-start=\"10041\" data-end=\"10068\">CDC untuk Data Warehouse<\/h2>\n<p dir=\"auto\" data-start=\"10070\" data-end=\"10186\">Salah satu penggunaan CDC yang cukup umum adalah mengirim perubahan dari database operasional ke data warehouse. Arsitekturnya dapat terlihat seperti:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Application\r\n    \u2193\r\nOperational Database\r\n    \u2193\r\nCDC\r\n    \u2193\r\nStreaming \/ Message Broker\r\n    \u2193\r\nETL \/ ELT\r\n    \u2193\r\nData Warehouse<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"10359\" data-end=\"10414\">Contohnya, database transaksi menyimpan data penjualan. CDC menangkap:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>INSERT order\r\nUPDATE order\r\nDELETE order<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"10484\" data-end=\"10584\">Kemudian perubahan tersebut dikirim ke pipeline data untuk diproses sebelum masuk ke data warehouse. Pendekatan ini membantu mengurangi kebutuhan melakukan full load secara terus-menerus.<\/p>\n<h2 dir=\"auto\" data-start=\"10674\" data-end=\"10696\">CDC untuk Data Lake<\/h2>\n<p dir=\"auto\" data-start=\"10698\" data-end=\"10774\">CDC juga dapat digunakan untuk mengirim perubahan data menuju data lake. Contohnya:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>PostgreSQL\r\n    \u2193\r\nCDC\r\n    \u2193\r\nStreaming\r\n    \u2193\r\nData Lake<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"10854\" data-end=\"10907\">Data yang dikumpulkan kemudian dapat digunakan untuk:<\/p>\n<ul data-start=\"10909\" data-end=\"11007\">\n<li data-start=\"10909\" data-end=\"10929\">analisis historis;<\/li>\n<li data-start=\"10930\" data-end=\"10949\">machine learning;<\/li>\n<li data-start=\"10950\" data-end=\"10974\">business intelligence;<\/li>\n<li data-start=\"10975\" data-end=\"10987\">reporting;<\/li>\n<li data-start=\"10988\" data-end=\"11007\">data exploration.<\/li>\n<\/ul>\n<p dir=\"auto\" data-start=\"11009\" data-end=\"11135\">Namun, desain penyimpanan tetap perlu memperhatikan bagaimana event perubahan akan diproses, diurutkan, dan digunakan kembali.<\/p>\n<h2 dir=\"auto\" data-start=\"11137\" data-end=\"11169\">CDC dalam Real-Time Analytics<\/h2>\n<p dir=\"auto\" data-start=\"11171\" data-end=\"11267\">CDC dapat membantu membangun pipeline analitik yang membutuhkan data dengan jeda relatif rendah. Misalnya sebuah platform e-commerce ingin memantau:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Jumlah transaksi\r\nStok produk\r\nNilai penjualan\r\nStatus pembayaran<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"11398\" data-end=\"11469\">Perubahan dari database operasional dapat dialirkan ke sistem analitik. Alurnya:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Database\r\n   \u2193\r\nCDC\r\n   \u2193\r\nStreaming\r\n   \u2193\r\nProcessing\r\n   \u2193\r\nAnalytics<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"11558\" data-end=\"11647\">Dengan demikian, data analitik tidak harus selalu menunggu proses batch besar berikutnya.<\/p>\n<p dir=\"auto\" data-start=\"11649\" data-end=\"11895\">Namun, istilah real-time perlu digunakan secara hati-hati. Tidak semua CDC menghasilkan latency nol detik. Banyak implementasi lebih tepat disebut near real-time karena tetap memiliki jeda dalam proses capture, pengiriman, dan pemrosesan.<\/p>\n<h2 dir=\"auto\" data-start=\"11897\" data-end=\"11925\">CDC dan ETL: Apa Bedanya?<\/h2>\n<p dir=\"auto\" data-start=\"11927\" data-end=\"12001\">CDC dan ETL sering digunakan bersama, tetapi keduanya bukan hal yang sama. <em>ETL (Extract, Transform, Load) <\/em>merupakan pendekatan untuk mengambil data dari sumber, melakukan transformasi, kemudian memuatnya ke sistem tujuan.<\/p>\n<p dir=\"auto\" data-start=\"12155\" data-end=\"12251\">Sementara itu, CDC berfokus pada bagaimana perubahan data di sumber dideteksi dan ditangkap. Perbedaannya dapat dilihat pada tabel berikut.<\/p>\n<div class=\"group TyagGW_tableContainer\" dir=\"auto\">\n<div class=\"TyagGW_tableWrapper flex flex-col-reverse w-fit\">\n<table class=\"w-fit min-w-(--thread-content-width)\" dir=\"auto\" data-start=\"12301\" data-end=\"12763\">\n<thead data-start=\"12301\" data-end=\"12322\">\n<tr data-start=\"12301\" data-end=\"12322\">\n<th class=\"last:pe-10\" data-start=\"12301\" data-end=\"12309\" data-col-size=\"sm\">Aspek<\/th>\n<th class=\"last:pe-10\" data-start=\"12309\" data-end=\"12315\" data-col-size=\"md\">CDC<\/th>\n<th class=\"last:pe-10\" data-start=\"12315\" data-end=\"12322\" data-col-size=\"md\">ETL<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"12337\" data-end=\"12763\">\n<tr data-start=\"12337\" data-end=\"12412\">\n<td data-start=\"12337\" data-end=\"12345\" data-col-size=\"sm\">Fokus<\/td>\n<td data-start=\"12345\" data-end=\"12372\" data-col-size=\"md\">Menangkap perubahan data<\/td>\n<td data-start=\"12372\" data-end=\"12412\" data-col-size=\"md\">Memindahkan dan mentransformasi data<\/td>\n<\/tr>\n<tr data-start=\"12413\" data-end=\"12481\">\n<td data-start=\"12413\" data-end=\"12422\" data-col-size=\"sm\">Tujuan<\/td>\n<td data-start=\"12422\" data-end=\"12453\" data-col-size=\"md\">Mengetahui data yang berubah<\/td>\n<td data-start=\"12453\" data-end=\"12481\" data-col-size=\"md\">Mengolah dan memuat data<\/td>\n<\/tr>\n<tr data-start=\"12482\" data-end=\"12604\">\n<td data-start=\"12482\" data-end=\"12494\" data-col-size=\"sm\">Real-time<\/td>\n<td data-start=\"12494\" data-end=\"12527\" data-col-size=\"md\">Dapat mendukung near real-time<\/td>\n<td data-start=\"12527\" data-end=\"12604\" data-col-size=\"md\">Sering digunakan dalam batch, tetapi dapat pula dirancang untuk streaming<\/td>\n<\/tr>\n<tr data-start=\"12605\" data-end=\"12671\">\n<td data-start=\"12605\" data-end=\"12620\" data-col-size=\"sm\">Transformasi<\/td>\n<td data-start=\"12620\" data-end=\"12644\" data-col-size=\"md\">Bukan fungsi utamanya<\/td>\n<td data-start=\"12644\" data-end=\"12671\" data-col-size=\"md\">Salah satu fungsi utama<\/td>\n<\/tr>\n<tr data-start=\"12672\" data-end=\"12763\">\n<td data-start=\"12672\" data-end=\"12685\" data-col-size=\"sm\">Penggunaan<\/td>\n<td data-start=\"12685\" data-end=\"12730\" data-col-size=\"md\">Sinkronisasi, event streaming, replication<\/td>\n<td data-start=\"12730\" data-end=\"12763\" data-col-size=\"md\">Integrasi dan pemrosesan data<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"12765\" data-end=\"12820\">CDC dan ETL bahkan dapat digunakan dalam satu pipeline. Contohnya:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Database\r\n   \u2193\r\nCDC\r\n   \u2193\r\nETL \/ ELT\r\n   \u2193\r\nData Warehouse<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"12900\" data-end=\"12985\">CDC menangkap perubahan, sedangkan pipeline data melakukan transformasi dan pemuatan.<\/p>\n<h2 dir=\"auto\" data-start=\"12987\" data-end=\"13006\">CDC vs Full Load<\/h2>\n<p dir=\"auto\" data-start=\"13008\" data-end=\"13092\">Full load berarti mengambil seluruh data dari sumber dan memuatnya ke sistem tujuan. Misalnya:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Source:\r\n10.000.000 rows\r\n\r\nFull Load:\r\n10.000.000 rows diproses<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"13179\" data-end=\"13237\">Sementara dengan CDC, jika hanya 20.000 data yang berubah:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Source:\r\n10.000.000 rows\r\n\r\nCDC:\r\n20.000 perubahan diproses<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"13308\" data-end=\"13449\">Perbedaan tersebut dapat menjadi signifikan ketika database berukuran besar dan perubahan harian relatif kecil dibandingkan keseluruhan data.<\/p>\n<div class=\"group TyagGW_tableContainer\" dir=\"auto\">\n<div class=\"TyagGW_tableWrapper flex flex-col-reverse w-fit\">\n<table class=\"w-fit min-w-(--thread-content-width)\" dir=\"auto\" style=\"height: 338px\" width=\"827\" data-start=\"13451\" data-end=\"13957\">\n<thead data-start=\"13451\" data-end=\"13478\">\n<tr data-start=\"13451\" data-end=\"13478\">\n<th class=\"last:pe-10\" data-start=\"13451\" data-end=\"13459\" data-col-size=\"sm\">Aspek<\/th>\n<th class=\"last:pe-10\" data-start=\"13459\" data-end=\"13471\" data-col-size=\"sm\">Full Load<\/th>\n<th class=\"last:pe-10\" data-start=\"13471\" data-end=\"13478\" data-col-size=\"md\">CDC<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"13493\" data-end=\"13957\">\n<tr data-start=\"13493\" data-end=\"13550\">\n<td data-start=\"13493\" data-end=\"13514\" data-col-size=\"sm\">Data yang diproses<\/td>\n<td data-start=\"13514\" data-end=\"13532\" data-col-size=\"sm\">Seluruh dataset<\/td>\n<td data-start=\"13532\" data-end=\"13550\" data-col-size=\"md\">Perubahan data<\/td>\n<\/tr>\n<tr data-start=\"13551\" data-end=\"13638\">\n<td data-start=\"13551\" data-end=\"13570\" data-col-size=\"sm\">Beban pemrosesan<\/td>\n<td data-start=\"13570\" data-end=\"13585\" data-col-size=\"sm\">Dapat tinggi<\/td>\n<td data-start=\"13585\" data-end=\"13638\" data-col-size=\"md\">Cenderung lebih kecil untuk perubahan incremental<\/td>\n<\/tr>\n<tr data-start=\"13639\" data-end=\"13707\">\n<td data-start=\"13639\" data-end=\"13673\" data-col-size=\"sm\">Efisiensi untuk perubahan kecil<\/td>\n<td data-start=\"13673\" data-end=\"13690\" data-col-size=\"sm\">Kurang efisien<\/td>\n<td data-start=\"13690\" data-end=\"13707\" data-col-size=\"md\">Lebih efisien<\/td>\n<\/tr>\n<tr data-start=\"13708\" data-end=\"13761\">\n<td data-start=\"13708\" data-end=\"13723\" data-col-size=\"sm\">Kompleksitas<\/td>\n<td data-start=\"13723\" data-end=\"13743\" data-col-size=\"sm\">Relatif sederhana<\/td>\n<td data-start=\"13743\" data-end=\"13761\" data-col-size=\"md\">Lebih kompleks<\/td>\n<\/tr>\n<tr data-start=\"13762\" data-end=\"13853\">\n<td data-start=\"13762\" data-end=\"13784\" data-col-size=\"sm\">Kebutuhan real-time<\/td>\n<td data-start=\"13784\" data-end=\"13819\" data-col-size=\"sm\">Tidak ideal jika dilakukan batch<\/td>\n<td data-start=\"13819\" data-end=\"13853\" data-col-size=\"md\">Dapat mendukung near real-time<\/td>\n<\/tr>\n<tr data-start=\"13854\" data-end=\"13957\">\n<td data-start=\"13854\" data-end=\"13868\" data-col-size=\"sm\">Cocok untuk<\/td>\n<td data-start=\"13868\" data-end=\"13902\" data-col-size=\"sm\">Dataset kecil atau initial load<\/td>\n<td data-start=\"13902\" data-end=\"13957\" data-col-size=\"md\">Sinkronisasi incremental dan pipeline berkelanjutan<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"13959\" data-end=\"14152\">Dalam praktiknya, CDC dan full load juga dapat digunakan bersama. Full load dapat digunakan untuk melakukan initial synchronization, kemudian CDC digunakan untuk menangkap perubahan berikutnya.<\/p>\n<h2 dir=\"auto\" data-start=\"14154\" data-end=\"14184\">Manfaat Change Data Capture<\/h2>\n<p dir=\"auto\" data-start=\"14186\" data-end=\"14245\">CDC memiliki sejumlah manfaat untuk arsitektur data modern.<\/p>\n<p dir=\"auto\" data-start=\"14247\" data-end=\"14299\"><span style=\"font-size: 20px\">1. Mengurangi Pemrosesan Data yang Tidak Berubah<\/span><\/p>\n<p dir=\"auto\" data-start=\"14301\" data-end=\"14408\">CDC hanya berfokus pada perubahan yang terjadi sehingga sistem tidak harus terus memproses seluruh dataset.<\/p>\n<p dir=\"auto\" data-start=\"14410\" data-end=\"14444\"><span style=\"font-size: 20px\">2. Mendukung Sinkronisasi Data<\/span><\/p>\n<p dir=\"auto\" data-start=\"14446\" data-end=\"14526\">Perubahan pada database sumber dapat diteruskan ke database atau sistem lainnya. Hal ini berguna ketika perusahaan memiliki beberapa sistem yang membutuhkan data yang sama.<\/p>\n<p dir=\"auto\" data-start=\"14621\" data-end=\"14663\"><span style=\"font-size: 20px\">3. Mendukung Data Pipeline Incremental<\/span><\/p>\n<p dir=\"auto\" data-start=\"14665\" data-end=\"14732\">CDC dapat menjadi sumber perubahan untuk pipeline data incremental. Sistem tidak perlu melakukan full extraction secara terus-menerus.<\/p>\n<p dir=\"auto\" data-start=\"14802\" data-end=\"14844\"><span style=\"font-size: 20px\">4. Mendukung Arsitektur Near Real-Time<\/span><\/p>\n<p dir=\"auto\" data-start=\"14846\" data-end=\"14979\">Perubahan dapat diteruskan segera setelah terdeteksi sehingga sistem tujuan dapat memperoleh data dengan latency yang relatif rendah.<\/p>\n<p dir=\"auto\" data-start=\"14981\" data-end=\"15019\"><span style=\"font-size: 20px\">5. Mengurangi Beban Query Berulang<\/span><\/p>\n<p dir=\"auto\" data-start=\"15021\" data-end=\"15153\">Pada implementasi tertentu, CDC berbasis log dapat mengurangi kebutuhan melakukan polling terhadap tabel utama secara terus-menerus.<\/p>\n<p dir=\"auto\" data-start=\"15155\" data-end=\"15187\"><span style=\"font-size: 20px\">6. Membantu Integrasi Sistem<\/span><\/p>\n<p dir=\"auto\" data-start=\"15189\" data-end=\"15274\">CDC dapat menjadi salah satu komponen yang menghubungkan database operasional dengan:<\/p>\n<ul data-start=\"15276\" data-end=\"15377\">\n<li data-start=\"15276\" data-end=\"15293\">data warehouse;<\/li>\n<li data-start=\"15294\" data-end=\"15306\">data lake;<\/li>\n<li data-start=\"15307\" data-end=\"15324\">message broker;<\/li>\n<li data-start=\"15325\" data-end=\"15341\">search engine;<\/li>\n<li data-start=\"15342\" data-end=\"15360\">sistem analitik;<\/li>\n<li data-start=\"15361\" data-end=\"15377\">aplikasi lain.<\/li>\n<\/ul>\n<h2 dir=\"auto\" data-start=\"15379\" data-end=\"15414\">Tantangan dalam Implementasi CDC<\/h2>\n<p dir=\"auto\" data-start=\"15416\" data-end=\"15487\">Walaupun memiliki banyak manfaat, CDC juga memiliki sejumlah tantangan.<\/p>\n<p dir=\"auto\" data-start=\"15489\" data-end=\"15522\"><span style=\"font-size: 20px\">1. Kompleksitas Infrastruktur<\/span><\/p>\n<p dir=\"auto\" data-start=\"15524\" data-end=\"15694\">CDC biasanya tidak hanya melibatkan database sumber dan tujuan. Arsitektur dapat mencakup connector, message broker, stream processor, monitoring, dan sistem penyimpanan. Semakin kompleks arsitekturnya, semakin banyak komponen yang harus dikelola.<\/p>\n<p dir=\"auto\" data-start=\"15774\" data-end=\"15807\"><span style=\"font-size: 20px\">2. Menangani Urutan Perubahan<\/span><\/p>\n<p dir=\"auto\" data-start=\"15809\" data-end=\"15841\">Urutan perubahan sangat penting. Misalnya:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>UPDATE A\r\nUPDATE B\r\nUPDATE C<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"15894\" data-end=\"16006\">Sistem tujuan perlu memahami urutan event tersebut ketika urutan memang memiliki arti terhadap konsistensi data.<\/p>\n<p dir=\"auto\" data-start=\"16008\" data-end=\"16030\"><span style=\"font-size: 20px\">3. Duplicate Event<\/span><\/p>\n<p dir=\"auto\" data-start=\"16032\" data-end=\"16133\">Dalam sistem terdistribusi, sebuah event dapat diproses lebih dari sekali tergantung desain pipeline. Karena itu, consumer perlu mempertimbangkan mekanisme <em>idempotency <\/em>agar pemrosesan ulang tidak menyebabkan data menjadi salah.<\/p>\n<p dir=\"auto\" data-start=\"16266\" data-end=\"16289\"><span style=\"font-size: 20px\">4. Schema Evolution<\/span><\/p>\n<p dir=\"auto\" data-start=\"16291\" data-end=\"16323\">Struktur database dapat berubah. Misalnya:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>customer_id\r\nname\r\nemail<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"16372\" data-end=\"16393\">kemudian ditambahkan: <code>phone<\/code>, Pipeline CDC perlu mampu menangani perubahan schema tersebut dengan benar.<\/p>\n<p dir=\"auto\" data-start=\"16490\" data-end=\"16509\"><span style=\"font-size: 20px\">5. Delete Event<\/span><\/p>\n<p dir=\"auto\" data-start=\"16511\" data-end=\"16623\">Operasi delete perlu ditangani secara khusus karena data yang sudah dihapus tidak lagi tersedia di tabel sumber. Sistem tujuan perlu mendapatkan informasi bahwa data tersebut memang telah dihapus.<\/p>\n<p dir=\"auto\" data-start=\"16710\" data-end=\"16727\"><span style=\"font-size: 20px\">6. Monitoring<\/span><\/p>\n<p dir=\"auto\" data-start=\"16729\" data-end=\"16757\">Pipeline CDC harus dipantau. Beberapa hal yang dapat diperhatikan antara lain:<\/p>\n<ul data-start=\"16810\" data-end=\"16927\">\n<li data-start=\"16810\" data-end=\"16820\">latency;<\/li>\n<li data-start=\"16821\" data-end=\"16829\">error;<\/li>\n<li data-start=\"16830\" data-end=\"16845\">consumer lag;<\/li>\n<li data-start=\"16846\" data-end=\"16865\">koneksi database;<\/li>\n<li data-start=\"16866\" data-end=\"16881\">volume event;<\/li>\n<li data-start=\"16882\" data-end=\"16907\">kegagalan sinkronisasi;<\/li>\n<li data-start=\"16908\" data-end=\"16927\">perubahan schema.<\/li>\n<\/ul>\n<p dir=\"auto\" data-start=\"16929\" data-end=\"17033\">Tanpa monitoring yang baik, pipeline dapat berhenti atau mengalami keterlambatan tanpa segera diketahui.<\/p>\n<h2 dir=\"auto\" data-start=\"17035\" data-end=\"17060\">Apa Itu CDC Connector?<\/h2>\n<p dir=\"auto\" data-start=\"17062\" data-end=\"17204\">Dalam arsitektur modern, CDC sering menggunakan <em>connector <\/em>yang bertugas menghubungkan database sumber dengan sistem streaming atau tujuan. Contoh alurnya:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Database\r\n   \u2193\r\nCDC Connector\r\n   \u2193\r\nMessage Broker\r\n   \u2193\r\nConsumer<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"17298\" data-end=\"17422\">Connector dapat bertugas membaca perubahan dari database dan mengubahnya menjadi event yang dapat diproses oleh sistem lain. Salah satu ekosistem yang banyak digunakan untuk kebutuhan tersebut adalah <em>Apache Kafka,<\/em> yang dapat dipadukan dengan teknologi CDC seperti <em>Debezium.<\/em><\/p>\n<p dir=\"auto\" data-start=\"17582\" data-end=\"17706\">Pemilihan connector tetap bergantung pada database, platform streaming, kebutuhan deployment, dan kemampuan operasional tim.<\/p>\n<h2 dir=\"auto\" data-start=\"17708\" data-end=\"17744\">CDC dan Event-Driven Architecture<\/h2>\n<p dir=\"auto\" data-start=\"17746\" data-end=\"17811\">CDC juga dapat menjadi bagian dari <em>event-driven architecture<\/em>. Dalam pola tersebut, perubahan data dapat menghasilkan event yang kemudian dikonsumsi oleh beberapa layanan. Contohnya:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Database\r\n    \u2193\r\nCDC\r\n    \u2193\r\n\"Order Updated\"\r\n    \u2193\r\nMessage Broker\r\n    \u251c\u2500\u2500 Notification Service\r\n    \u251c\u2500\u2500 Analytics\r\n    \u251c\u2500\u2500 Inventory\r\n    \u2514\u2500\u2500 Data Warehouse<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"18098\" data-end=\"18252\">Dengan pendekatan ini, satu perubahan data dapat digunakan oleh berbagai sistem tanpa masing-masing sistem harus terus melakukan query ke database sumber.<\/p>\n<p dir=\"auto\" data-start=\"18254\" data-end=\"18491\">Namun, penting membedakan <em>database change event dengan business event.<\/em> Perubahan pada sebuah baris database tidak selalu memiliki makna bisnis yang sama dengan event seperti <code data-start=\"18436\" data-end=\"18447\">OrderPaid<\/code>, <code data-start=\"18449\" data-end=\"18463\">OrderShipped<\/code>, atau <code data-start=\"18470\" data-end=\"18490\">CustomerRegistered<\/code>.<\/p>\n<p dir=\"auto\" data-start=\"18493\" data-end=\"18675\">CDC terutama menangkap perubahan pada data. Jika aplikasi membutuhkan event yang merepresentasikan proses bisnis, event tersebut dapat dirancang secara eksplisit pada level aplikasi.<\/p>\n<h2 dir=\"auto\" data-start=\"18677\" data-end=\"18712\">Kapan Sebaiknya Menggunakan CDC?<\/h2>\n<p dir=\"auto\" data-start=\"18714\" data-end=\"18795\">CDC mulai menarik untuk dipertimbangkan ketika sistem memiliki kebutuhan seperti:<\/p>\n<ul data-start=\"18797\" data-end=\"19153\">\n<li data-start=\"18797\" data-end=\"18824\">database berukuran besar;<\/li>\n<li data-start=\"18825\" data-end=\"18864\">perubahan data terjadi terus-menerus;<\/li>\n<li data-start=\"18865\" data-end=\"18903\">kebutuhan sinkronisasi antar sistem;<\/li>\n<li data-start=\"18904\" data-end=\"18932\">pipeline data incremental;<\/li>\n<li data-start=\"18933\" data-end=\"18976\">kebutuhan analitik dengan latency rendah;<\/li>\n<li data-start=\"18977\" data-end=\"18994\">replikasi data;<\/li>\n<li data-start=\"18995\" data-end=\"19038\">integrasi database dengan data warehouse;<\/li>\n<li data-start=\"19039\" data-end=\"19077\">integrasi database dengan data lake;<\/li>\n<li data-start=\"19078\" data-end=\"19104\">arsitektur event-driven;<\/li>\n<li data-start=\"19105\" data-end=\"19153\">kebutuhan mengurangi full extraction berulang.<\/li>\n<\/ul>\n<p dir=\"auto\" data-start=\"19155\" data-end=\"19307\">Sebaliknya, CDC mungkin tidak diperlukan jika aplikasi sangat sederhana dan kebutuhan sinkronisasi datanya dapat diselesaikan dengan proses batch biasa.<\/p>\n<h2>Kapan CDC Tidak Perlu Digunakan?<\/h2>\n<p>Meskipun Change Data Capture (CDC) dapat membantu menangkap dan mengalirkan perubahan data secara efisien, teknologi ini tidak selalu diperlukan untuk setiap aplikasi. Pada sistem dengan volume data yang masih kecil, perubahan data yang terjadi sangat jarang, atau kebutuhan sinkronisasi hanya dilakukan satu kali dalam sehari, penggunaan proses batch sederhana mungkin sudah cukup untuk memenuhi kebutuhan tersebut. Begitu pula pada aplikasi dengan arsitektur yang sederhana dan tidak membutuhkan sinkronisasi data dengan latency rendah.<\/p>\n<p>Penerapan CDC pada kondisi yang belum membutuhkannya justru dapat menambah kompleksitas infrastruktur. Sistem perlu mengelola komponen tambahan seperti CDC connector, message broker, pipeline pemrosesan, monitoring, serta mekanisme penanganan error dan recovery.<\/p>\n<p>Oleh karena itu, sebelum menggunakan CDC, sebaiknya pertimbangkan terlebih dahulu volume perubahan data, frekuensi sinkronisasi, kebutuhan latency, dan kompleksitas sistem. Jika kebutuhan tersebut masih dapat dipenuhi dengan proses batch yang lebih sederhana, CDC mungkin belum menjadi pilihan yang diperlukan.<\/p>\n<h2 dir=\"auto\" data-start=\"20696\" data-end=\"20727\">Contoh Arsitektur CDC Modern<\/h2>\n<p dir=\"auto\" data-start=\"20729\" data-end=\"20776\">Berikut salah satu contoh arsitektur yang umum:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>             \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n             \u2502   Application    \u2502\r\n             \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n                      \u2193\r\n             \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n             \u2502 Source Database  \u2502\r\n             \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n                      \u2193\r\n             \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n             \u2502   CDC Connector  \u2502\r\n             \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n                      \u2193\r\n             \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n             \u2502  Message Broker  \u2502\r\n             \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n                      \u2193\r\n          \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n          \u2193           \u2193           \u2193\r\n     Data Lake   Data Warehouse  Search<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"21407\" data-end=\"21527\">Dengan arsitektur seperti ini, perubahan dari database operasional dapat digunakan oleh berbagai sistem secara terpisah. Hal tersebut dapat membantu mengurangi ketergantungan langsung antara aplikasi utama dan sistem analitik.<\/p>\n<h2 dir=\"auto\" data-start=\"21636\" data-end=\"21680\">Perbedaan CDC dengan Database Replication<\/h2>\n<p dir=\"auto\" data-start=\"21682\" data-end=\"21796\">CDC dan database replication memiliki konsep yang berdekatan, tetapi tujuan dan implementasinya tidak selalu sama.<\/p>\n<div class=\"group TyagGW_tableContainer\" dir=\"auto\">\n<div class=\"TyagGW_tableWrapper flex flex-col-reverse w-fit\">\n<table class=\"w-fit min-w-(--thread-content-width)\" dir=\"auto\" style=\"height: 275px\" width=\"806\" data-start=\"21798\" data-end=\"22240\">\n<thead data-start=\"21798\" data-end=\"21836\">\n<tr data-start=\"21798\" data-end=\"21836\">\n<th class=\"last:pe-10\" data-start=\"21798\" data-end=\"21806\" data-col-size=\"sm\">Aspek<\/th>\n<th class=\"last:pe-10\" data-start=\"21806\" data-end=\"21812\" data-col-size=\"md\">CDC<\/th>\n<th class=\"last:pe-10\" data-start=\"21812\" data-end=\"21836\" data-col-size=\"md\">Database Replication<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"21851\" data-end=\"22240\">\n<tr data-start=\"21851\" data-end=\"21919\">\n<td data-start=\"21851\" data-end=\"21859\" data-col-size=\"sm\">Fokus<\/td>\n<td data-start=\"21859\" data-end=\"21886\" data-col-size=\"md\">Menangkap perubahan data<\/td>\n<td data-start=\"21886\" data-end=\"21919\" data-col-size=\"md\">Menyalin perubahan ke replica<\/td>\n<\/tr>\n<tr data-start=\"21920\" data-end=\"22008\">\n<td data-start=\"21920\" data-end=\"21929\" data-col-size=\"sm\">Tujuan<\/td>\n<td data-start=\"21929\" data-end=\"21976\" data-col-size=\"md\">Integrasi, analitik, streaming, sinkronisasi<\/td>\n<td data-start=\"21976\" data-end=\"22008\" data-col-size=\"md\">Menyediakan salinan database<\/td>\n<\/tr>\n<tr data-start=\"22009\" data-end=\"22081\">\n<td data-start=\"22009\" data-end=\"22018\" data-col-size=\"sm\">Output<\/td>\n<td data-start=\"22018\" data-end=\"22061\" data-col-size=\"md\">Change events atau perubahan terstruktur<\/td>\n<td data-start=\"22061\" data-end=\"22081\" data-col-size=\"md\">Database replica<\/td>\n<\/tr>\n<tr data-start=\"22082\" data-end=\"22143\">\n<td data-start=\"22082\" data-end=\"22093\" data-col-size=\"sm\">Consumer<\/td>\n<td data-start=\"22093\" data-end=\"22115\" data-col-size=\"md\">Dapat banyak sistem<\/td>\n<td data-start=\"22115\" data-end=\"22143\" data-col-size=\"md\">Umumnya replica tertentu<\/td>\n<\/tr>\n<tr data-start=\"22144\" data-end=\"22240\">\n<td data-start=\"22144\" data-end=\"22157\" data-col-size=\"sm\">Penggunaan<\/td>\n<td data-start=\"22157\" data-end=\"22187\" data-col-size=\"md\">Data pipeline dan integrasi<\/td>\n<td data-start=\"22187\" data-end=\"22240\" data-col-size=\"md\">Availability, read scaling, atau salinan database<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p dir=\"auto\" data-start=\"22242\" data-end=\"22415\">Dalam beberapa arsitektur, teknologi yang sama dapat mendukung kemampuan yang beririsan, sehingga istilah dan implementasinya perlu dilihat berdasarkan konteks teknologinya.<\/p>\n<h2>Kesimpulan<\/h2>\n<p>Change Data Capture (CDC) adalah teknik untuk menangkap perubahan data seperti insert, update, dan delete, kemudian meneruskannya ke sistem lain secara efisien. CDC banyak digunakan untuk mendukung sinkronisasi data, data warehouse, data lake, hingga pipeline data yang membutuhkan pemrosesan secara near real-time.<\/p>\n<p>Dengan metode seperti log-based, trigger-based, timestamp-based, dan query-based CDC, pemilihan teknologi dapat disesuaikan dengan kebutuhan database, volume data, latency, dan kompleksitas sistem. Meski menawarkan banyak manfaat, penerapan CDC tetap membutuhkan perencanaan dan monitoring agar pipeline berjalan konsisten.<\/p>\n<p>Ingin mengetahui lebih banyak tentang teknologi, database, cloud, hosting, dan perkembangan digital lainnya? Kunjungi <em><a href=\"https:\/\/hosteko.com\/blog\/\"><strong>Blog Hosteko<\/strong><\/a><\/em> untuk menemukan berbagai artikel informatif dan praktis lainnya.<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-right kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;right&quot;,&quot;id&quot;:&quot;33330&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;1&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;0&quot;,&quot;greet&quot;:&quot;Jadilah yang pertama untuk memberi nilai&quot;,&quot;legend&quot;:&quot;5\\\/5 - (1 vote)&quot;,&quot;size&quot;:&quot;22&quot;,&quot;title&quot;:&quot;Mengenal Change Data Capture (CDC): Cara Cerdas Menangkap Perubahan Data&quot;,&quot;width&quot;:&quot;110&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 22px; height: 22px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 22px; height: 22px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 22px; height: 22px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 22px; height: 22px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 22px; height: 22px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 110px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 22px; height: 22px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 22px; height: 22px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 22px; height: 22px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 22px; height: 22px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 22px; height: 22px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 17.6px;\">\n            5\/5 - (1 vote)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Dalam sistem digital, data terus berubah setiap saat. Data pelanggan dapat diperbarui, transaksi baru masuk, stok produk berubah, atau status pesanan berpindah dari diproses menjadi selesai. Perubahan-perubahan tersebut perlu diketahui oleh sistem lain agar data tetap sinkron dan proses bisnis dapat berjalan dengan baik. Salah satu pendekatan yang digunakan untuk menangkap perubahan data secara efisien [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":33331,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rop_custom_images_group":[],"rop_custom_messages_group":[],"rop_publish_now":"no","rop_publish_now_accounts":{"twitter_2392824914_2392824914":""},"rop_publish_now_history":[{"account":"twitter_2392824914_2392824914","service":"twitter","timestamp":1790224734,"status":"error"}],"rop_publish_now_status":"done","_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"enabled":false},"version":2}},"categories":[3],"tags":[24684,24686,24683,24690,24682,20903,20918,24691,24693,24687,24688,24685,24692,24689],"class_list":["post-33330","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-apa-itu-cdc","tag-cara-kerja-cdc","tag-cdc","tag-cdc-database","tag-change-data-capture","tag-data-integration","tag-data-pipeline","tag-data-synchronization","tag-database-cdc","tag-jenis-cdc","tag-manfaat-cdc","tag-pengertian-cdc","tag-real-time-data","tag-teknologi-cdc"],"featured_image_src":{"landsacpe":["https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/09\/Desain-tanpa-judul55-1140x445.png",1140,445,true],"list":["https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/09\/Desain-tanpa-judul55-463x348.png",463,348,true],"medium":["https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/09\/Desain-tanpa-judul55-300x169.png",300,169,true],"full":["https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/09\/Desain-tanpa-judul55.png",1366,768,false]},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Mengenal Change Data Capture (CDC): Cara Cerdas Menangkap Perubahan Data - Hosteko Blog<\/title>\n<meta name=\"description\" content=\"mengenal Change Data Capture (CDC): Kenali pengertian, cara kerja, jenis, manfaat, dan penerapan CDC untuk sinkronisasi serta integrasi data.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mengenal Change Data Capture (CDC): Cara Cerdas Menangkap Perubahan Data - Hosteko Blog\" \/>\n<meta property=\"og:description\" content=\"mengenal Change Data Capture (CDC): Kenali pengertian, cara kerja, jenis, manfaat, dan penerapan CDC untuk sinkronisasi serta integrasi data.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc\" \/>\n<meta property=\"og:site_name\" content=\"Hosteko Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-24T04:38:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/09\/Desain-tanpa-judul55.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1366\" \/>\n\t<meta property=\"og:image:height\" content=\"768\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Fitri Ana\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fitri Ana\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc#article\",\"isPartOf\":{\"@id\":\"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc\"},\"author\":{\"name\":\"Fitri Ana\",\"@id\":\"https:\/\/hosteko.com\/blog\/#\/schema\/person\/ffcd8071a8a3d6a862a4e1381d1c4ea0\"},\"headline\":\"Mengenal Change Data Capture (CDC): Cara Cerdas Menangkap Perubahan Data\",\"datePublished\":\"2026-09-24T04:38:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc\"},\"wordCount\":2405,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/hosteko.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/09\/Desain-tanpa-judul55.png\",\"keywords\":[\"apa itu CDC\",\"cara kerja CDC\",\"CDC\",\"CDC database\",\"Change Data Capture\",\"data integration\",\"Data Pipeline\",\"data synchronization\",\"database CDC\",\"jenis CDC\",\"manfaat CDC\",\"pengertian CDC\",\"real-time data\",\"teknologi CDC\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc\",\"url\":\"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc\",\"name\":\"Mengenal Change Data Capture (CDC): Cara Cerdas Menangkap Perubahan Data - Hosteko Blog\",\"isPartOf\":{\"@id\":\"https:\/\/hosteko.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc#primaryimage\"},\"image\":{\"@id\":\"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/09\/Desain-tanpa-judul55.png\",\"datePublished\":\"2026-09-24T04:38:31+00:00\",\"description\":\"mengenal Change Data Capture (CDC): Kenali pengertian, cara kerja, jenis, manfaat, dan penerapan CDC untuk sinkronisasi serta integrasi data.\",\"breadcrumb\":{\"@id\":\"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc#primaryimage\",\"url\":\"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/09\/Desain-tanpa-judul55.png\",\"contentUrl\":\"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/09\/Desain-tanpa-judul55.png\",\"width\":1366,\"height\":768},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/hosteko.com\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mengenal Change Data Capture (CDC): Cara Cerdas Menangkap Perubahan Data\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/hosteko.com\/blog\/#website\",\"url\":\"https:\/\/hosteko.com\/blog\/\",\"name\":\"Hosteko Blog\",\"description\":\"Berita &amp; Informasi Dunia IT\",\"publisher\":{\"@id\":\"https:\/\/hosteko.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/hosteko.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/hosteko.com\/blog\/#organization\",\"name\":\"HOSTEKO\",\"url\":\"https:\/\/hosteko.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/hosteko.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2019\/04\/logo-hosteko.png\",\"contentUrl\":\"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2019\/04\/logo-hosteko.png\",\"width\":195,\"height\":57,\"caption\":\"HOSTEKO\"},\"image\":{\"@id\":\"https:\/\/hosteko.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/hosteko.com\/blog\/#\/schema\/person\/ffcd8071a8a3d6a862a4e1381d1c4ea0\",\"name\":\"Fitri Ana\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/hosteko.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a099f723518ab9b89aa80b7ed8cadd2d3fae127c5bd735733cf24a661e75a882?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a099f723518ab9b89aa80b7ed8cadd2d3fae127c5bd735733cf24a661e75a882?s=96&d=mm&r=g\",\"caption\":\"Fitri Ana\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Mengenal Change Data Capture (CDC): Cara Cerdas Menangkap Perubahan Data - Hosteko Blog","description":"mengenal Change Data Capture (CDC): Kenali pengertian, cara kerja, jenis, manfaat, dan penerapan CDC untuk sinkronisasi serta integrasi data.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc","og_locale":"en_US","og_type":"article","og_title":"Mengenal Change Data Capture (CDC): Cara Cerdas Menangkap Perubahan Data - Hosteko Blog","og_description":"mengenal Change Data Capture (CDC): Kenali pengertian, cara kerja, jenis, manfaat, dan penerapan CDC untuk sinkronisasi serta integrasi data.","og_url":"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc","og_site_name":"Hosteko Blog","article_published_time":"2026-09-24T04:38:31+00:00","og_image":[{"width":1366,"height":768,"url":"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/09\/Desain-tanpa-judul55.png","type":"image\/png"}],"author":"Fitri Ana","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fitri Ana","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc#article","isPartOf":{"@id":"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc"},"author":{"name":"Fitri Ana","@id":"https:\/\/hosteko.com\/blog\/#\/schema\/person\/ffcd8071a8a3d6a862a4e1381d1c4ea0"},"headline":"Mengenal Change Data Capture (CDC): Cara Cerdas Menangkap Perubahan Data","datePublished":"2026-09-24T04:38:31+00:00","mainEntityOfPage":{"@id":"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc"},"wordCount":2405,"commentCount":0,"publisher":{"@id":"https:\/\/hosteko.com\/blog\/#organization"},"image":{"@id":"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc#primaryimage"},"thumbnailUrl":"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/09\/Desain-tanpa-judul55.png","keywords":["apa itu CDC","cara kerja CDC","CDC","CDC database","Change Data Capture","data integration","Data Pipeline","data synchronization","database CDC","jenis CDC","manfaat CDC","pengertian CDC","real-time data","teknologi CDC"],"articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc#respond"]}]},{"@type":"WebPage","@id":"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc","url":"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc","name":"Mengenal Change Data Capture (CDC): Cara Cerdas Menangkap Perubahan Data - Hosteko Blog","isPartOf":{"@id":"https:\/\/hosteko.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc#primaryimage"},"image":{"@id":"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc#primaryimage"},"thumbnailUrl":"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/09\/Desain-tanpa-judul55.png","datePublished":"2026-09-24T04:38:31+00:00","description":"mengenal Change Data Capture (CDC): Kenali pengertian, cara kerja, jenis, manfaat, dan penerapan CDC untuk sinkronisasi serta integrasi data.","breadcrumb":{"@id":"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc#primaryimage","url":"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/09\/Desain-tanpa-judul55.png","contentUrl":"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/09\/Desain-tanpa-judul55.png","width":1366,"height":768},{"@type":"BreadcrumbList","@id":"https:\/\/hosteko.com\/blog\/mengenal-change-data-capture-cdc#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/hosteko.com\/blog"},{"@type":"ListItem","position":2,"name":"Mengenal Change Data Capture (CDC): Cara Cerdas Menangkap Perubahan Data"}]},{"@type":"WebSite","@id":"https:\/\/hosteko.com\/blog\/#website","url":"https:\/\/hosteko.com\/blog\/","name":"Hosteko Blog","description":"Berita &amp; Informasi Dunia IT","publisher":{"@id":"https:\/\/hosteko.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/hosteko.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/hosteko.com\/blog\/#organization","name":"HOSTEKO","url":"https:\/\/hosteko.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/hosteko.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2019\/04\/logo-hosteko.png","contentUrl":"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2019\/04\/logo-hosteko.png","width":195,"height":57,"caption":"HOSTEKO"},"image":{"@id":"https:\/\/hosteko.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/hosteko.com\/blog\/#\/schema\/person\/ffcd8071a8a3d6a862a4e1381d1c4ea0","name":"Fitri Ana","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/hosteko.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a099f723518ab9b89aa80b7ed8cadd2d3fae127c5bd735733cf24a661e75a882?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a099f723518ab9b89aa80b7ed8cadd2d3fae127c5bd735733cf24a661e75a882?s=96&d=mm&r=g","caption":"Fitri Ana"}}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/09\/Desain-tanpa-judul55.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/posts\/33330","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/comments?post=33330"}],"version-history":[{"count":3,"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/posts\/33330\/revisions"}],"predecessor-version":[{"id":33337,"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/posts\/33330\/revisions\/33337"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/media\/33331"}],"wp:attachment":[{"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/media?parent=33330"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/categories?post=33330"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/tags?post=33330"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}