{"id":32773,"date":"2026-08-28T06:31:51","date_gmt":"2026-08-28T06:31:51","guid":{"rendered":"https:\/\/hosteko.com\/blog\/?p=32773"},"modified":"2026-08-28T06:31:51","modified_gmt":"2026-08-28T06:31:51","slug":"mengenal-apa-itu-database-sharding","status":"publish","type":"post","link":"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding","title":{"rendered":"Mengenal Database Sharding: Pengertian, Jenis, dan Contohnya [Lengkap]"},"content":{"rendered":"<p class=\"PDq2pG_selectionAnchorContainer\" data-start=\"84\" data-end=\"464\">Database merupakan salah satu komponen penting dalam aplikasi modern. Seiring bertambahnya jumlah pengguna, transaksi, dan volume data, satu server database pada akhirnya dapat mencapai batas kapasitas CPU, memory, storage, maupun kemampuan menangani query secara bersamaan. Salah satu pendekatan yang dapat digunakan untuk mengatasi masalah tersebut adalah <em>database sharding.<\/em><\/p>\n<p data-start=\"466\" data-end=\"794\">Database sharding merupakan teknik membagi data secara horizontal ke beberapa database atau server yang disebut <em>shard<\/em>. Dengan membagi data dan workload ke beberapa server, sistem dapat melakukan <em>horizontal scaling<\/em> tanpa harus terus bergantung pada peningkatan kapasitas satu server.<\/p>\n<p data-start=\"796\" data-end=\"1042\">Namun, sharding bukan sekadar memindahkan data ke beberapa server. Pemilihan <em>shard key<\/em>, mekanisme routing query, distribusi data, rebalancing, dan pengelolaan transaksi harus dirancang dengan baik agar sharding benar-benar memberikan manfaat.<\/p>\n<h2 data-section-id=\"dfxa8b\" data-start=\"1044\" data-end=\"1073\">Apa Itu Database Sharding?<\/h2>\n<p data-start=\"1075\" data-end=\"1266\">Database sharding adalah teknik membagi data secara horizontal ke beberapa database atau server yang berbeda sehingga setiap server hanya menyimpan sebagian data dari keseluruhan dataset. Setiap bagian data tersebut disebut <em>shard<\/em>. Jika sebuah database memiliki 100 juta data, misalnya, data tersebut dapat dibagi ke beberapa shard berdasarkan aturan tertentu. Contoh sederhana:<\/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\u2502\r\n\u251c\u2500\u2500 Shard 1 \u2192 Data pengguna 1 - 1.000.000\r\n\u251c\u2500\u2500 Shard 2 \u2192 Data pengguna 1.000.001 - 2.000.000\r\n\u251c\u2500\u2500 Shard 3 \u2192 Data pengguna 2.000.001 - 3.000.000\r\n\u2514\u2500\u2500 Shard 4 \u2192 Data pengguna 3.000.001 - 4.000.000<\/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 data-start=\"1680\" data-end=\"1810\">Meskipun data secara fisik tersebar pada beberapa server, seluruh shard dapat dipandang sebagai satu sistem database secara logis. Konsep ini merupakan bentuk <em>horizontal partitioning<\/em>, yaitu membagi baris data ke beberapa lokasi, sementara struktur atau kolom data pada setiap bagian tetap mengikuti skema yang sama. Oracle, misalnya, mendefinisikan sharding sebagai horizontal partitioning data ke beberapa database independen.<\/p>\n<h2 data-section-id=\"11yjilx\" data-start=\"2157\" data-end=\"2197\">Mengapa Database Sharding Dibutuhkan?<\/h2>\n<p data-start=\"2199\" data-end=\"2294\">Salah satu alasan utama menggunakan database sharding adalah keterbatasan <em>vertical scaling. <\/em>Vertical scaling berarti meningkatkan kemampuan satu server dengan menambah:<\/p>\n<ul data-start=\"2374\" data-end=\"2415\">\n<li data-section-id=\"1j40vy8\" data-start=\"2374\" data-end=\"2380\">CPU.<\/li>\n<li data-section-id=\"1j4f33s\" data-start=\"2381\" data-end=\"2387\">RAM.<\/li>\n<li data-section-id=\"s89zxb\" data-start=\"2388\" data-end=\"2398\">Storage.<\/li>\n<li data-section-id=\"1walh2g\" data-start=\"2399\" data-end=\"2415\">Kapasitas I\/O.<\/li>\n<\/ul>\n<p data-start=\"2417\" data-end=\"2729\">Pendekatan tersebut dapat efektif sampai batas tertentu. Namun, satu server tetap memiliki batas kapasitas fisik dan konfigurasi hardware. Ketika kebutuhan aplikasi terus meningkat, menambah kapasitas server bisa menjadi semakin mahal dan pada akhirnya tidak lagi mencukupi. Sharding menggunakan pendekatan berbeda, yaitu <em>horizontal scaling<\/em>. Daripada menggunakan satu server yang semakin besar:<\/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>Server Besar\r\nCPU: 64 Core\r\nRAM: 512 GB\r\nStorage: 10 TB<\/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 data-start=\"2923\" data-end=\"2964\">sistem dapat menggunakan beberapa server:<\/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>Shard 1\r\nShard 2\r\nShard 3\r\nShard 4<\/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 data-start=\"3011\" data-end=\"3069\">Masing-masing server menangani sebagian data dan workload.<\/p>\n<h2 data-section-id=\"1hyhf3t\" data-start=\"3076\" data-end=\"3117\">Bagaimana Cara Kerja Database Sharding?<\/h2>\n<p data-start=\"3119\" data-end=\"3237\">Secara umum, database sharding bekerja dengan menentukan bagaimana data akan dibagi dan ke mana query harus diarahkan. Prosesnya dapat digambarkan sebagai berikut:<\/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     \u2502\r\n     \u2193\r\nQuery Router\r\n     \u2502\r\n \u250c\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2510\r\n \u2193   \u2193    \u2193    \u2193\r\nS1  S2   S3   S4<\/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 data-section-id=\"kya1e2\" data-start=\"3395\" data-end=\"3422\"><span style=\"font-size: 20px\">1. Menentukan Shard Key<\/span><\/p>\n<p data-start=\"3424\" data-end=\"3496\">Langkah penting dalam database sharding adalah menentukan <em>shard key<\/em>. Shard key merupakan field atau kombinasi field yang digunakan untuk menentukan bagaimana data didistribusikan ke shard. Misalnya tabel pengguna memiliki:<\/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>user_id\r\nname\r\nemail\r\ncountry<\/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 data-start=\"3694\" data-end=\"3747\">Sistem dapat menggunakan <code data-start=\"3719\" data-end=\"3728\">user_id<\/code> sebagai shard key. Data kemudian didistribusikan berdasarkan nilai <code data-start=\"3797\" data-end=\"3806\">user_id<\/code>.<\/p>\n<p data-section-id=\"16qq70i\" data-start=\"3809\" data-end=\"3846\"><span style=\"font-size: 20px\">2. Membagi Data ke Beberapa Shard<\/span><\/p>\n<p data-start=\"3848\" data-end=\"3928\">Setelah shard key ditentukan, sistem membagi data berdasarkan strategi tertentu.<\/p>\n<p data-start=\"3930\" data-end=\"3957\">Misalnya menggunakan range:<\/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>Shard 1 \u2192 user_id 1 - 1.000.000\r\nShard 2 \u2192 user_id 1.000.001 - 2.000.000\r\nShard 3 \u2192 user_id 2.000.001 - 3.000.000<\/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 data-start=\"4084\" data-end=\"4142\">Dengan demikian, setiap shard hanya menyimpan subset data.<\/p>\n<p data-section-id=\"5jo8sx\" data-start=\"4144\" data-end=\"4186\"><span style=\"font-size: 20px\">3. Query Router Menentukan Lokasi Data<\/span><\/p>\n<p data-start=\"4188\" data-end=\"4284\">Ketika aplikasi mengirim query, sistem perlu mengetahui shard mana yang menyimpan data tersebut. Pada MongoDB, misalnya, komponen <code data-start=\"4319\" data-end=\"4327\">mongos<\/code> bertindak sebagai query router antara aplikasi dan sharded cluster. Metadata mengenai distribusi data disimpan oleh config server.<\/p>\n<p data-section-id=\"1m55kxk\" data-start=\"4498\" data-end=\"4530\"><span style=\"font-size: 20px\">4. Query Diteruskan ke Shard<\/span><\/p>\n<p data-start=\"4532\" data-end=\"4637\">Jika query memiliki shard key yang sesuai, router dapat mengarahkan query langsung ke shard yang relevan. 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> <span class=\"\u037cv\">FROM<\/span> users\r\n<span class=\"\u037cv\">WHERE<\/span> user_id <span class=\"\u037cv\">=<\/span> <span class=\"\u037cy\">1500000<\/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 data-start=\"4707\" data-end=\"4827\">Jika <code data-start=\"4712\" data-end=\"4721\">user_id<\/code> digunakan sebagai shard key dan ID tersebut berada di Shard 2, query dapat diarahkan langsung ke Shard 2. Pendekatan seperti ini disebut <strong data-start=\"4860\" data-end=\"4878\">targeted query<\/strong> dan umumnya lebih efisien daripada meminta seluruh shard menjalankan query.<\/p>\n<p data-section-id=\"1t786o4\" data-start=\"4994\" data-end=\"5031\"><span style=\"font-size: 20px\">5. Hasil Dikembalikan ke Aplikasi<\/span><\/p>\n<p data-start=\"5033\" data-end=\"5121\">Setelah shard menyelesaikan query, hasilnya dikembalikan melalui router kepada aplikasi. Untuk query tertentu, sistem mungkin harus mengakses lebih dari satu shard dan menggabungkan hasilnya terlebih dahulu.<\/p>\n<h2 data-section-id=\"ojxaka\" data-start=\"5248\" data-end=\"5268\">Apa Itu Shard Key?<\/h2>\n<p data-start=\"5270\" data-end=\"5387\">Shard key adalah atribut atau kumpulan atribut yang digunakan untuk menentukan distribusi data ke berbagai shard. Shard key merupakan salah satu keputusan paling penting dalam desain database sharding. Contohnya, pada tabel:<\/p>\n<div class=\"group TyagGW_tableContainer TyagGW_tableContainerWithTableOfContents\">\n<div class=\"TyagGW_tableWrapper flex flex-col-reverse w-fit\">\n<table class=\"w-fit min-w-(--thread-content-width)\" style=\"height: 210px\" width=\"245\" data-start=\"5502\" data-end=\"5656\">\n<thead data-start=\"5502\" data-end=\"5529\">\n<tr data-start=\"5502\" data-end=\"5529\">\n<th class=\"last:pe-10\" data-start=\"5502\" data-end=\"5512\" data-col-size=\"sm\">user_id<\/th>\n<th class=\"last:pe-10\" data-start=\"5512\" data-end=\"5519\" data-col-size=\"sm\">nama<\/th>\n<th class=\"last:pe-10\" data-start=\"5519\" data-end=\"5529\" data-col-size=\"sm\">negara<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"5545\" data-end=\"5656\">\n<tr data-start=\"5545\" data-end=\"5572\">\n<td data-start=\"5545\" data-end=\"5552\" data-col-size=\"sm\">1001<\/td>\n<td data-start=\"5552\" data-end=\"5559\" data-col-size=\"sm\">Andi<\/td>\n<td data-start=\"5559\" data-end=\"5572\" data-col-size=\"sm\">Indonesia<\/td>\n<\/tr>\n<tr data-start=\"5573\" data-end=\"5600\">\n<td data-start=\"5573\" data-end=\"5580\" data-col-size=\"sm\">1002<\/td>\n<td data-start=\"5580\" data-end=\"5587\" data-col-size=\"sm\">Budi<\/td>\n<td data-start=\"5587\" data-end=\"5600\" data-col-size=\"sm\">Indonesia<\/td>\n<\/tr>\n<tr data-start=\"5601\" data-end=\"5628\">\n<td data-start=\"5601\" data-end=\"5608\" data-col-size=\"sm\">1003<\/td>\n<td data-start=\"5608\" data-end=\"5616\" data-col-size=\"sm\">Citra<\/td>\n<td data-start=\"5616\" data-end=\"5628\" data-col-size=\"sm\">Malaysia<\/td>\n<\/tr>\n<tr data-start=\"5629\" data-end=\"5656\">\n<td data-start=\"5629\" data-end=\"5636\" data-col-size=\"sm\">1004<\/td>\n<td data-start=\"5636\" data-end=\"5643\" data-col-size=\"sm\">Deni<\/td>\n<td data-start=\"5643\" data-end=\"5656\" data-col-size=\"sm\">Singapura<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p data-start=\"5658\" data-end=\"5771\">Jika <code data-start=\"5663\" data-end=\"5672\">user_id<\/code> digunakan sebagai shard key, sistem dapat menggunakan nilai tersebut untuk menentukan lokasi data. Pemilihan shard key harus mempertimbangkan pola query dan distribusi workload. Microsoft juga menekankan bahwa shard key perlu dipilih agar workload dapat tersebar dengan baik di antara shard. Shard key yang buruk dapat menyebabkan sebagian besar data atau request terkonsentrasi pada satu shard sehingga menciptakan <em>hotspot<\/em>.<\/p>\n<h2>Jenis-Jenis Database Sharding<\/h2>\n<p data-start=\"6181\" data-end=\"6258\">Ada beberapa pendekatan yang umum digunakan untuk menentukan distribusi data.<\/p>\n<p data-section-id=\"1s2eoid\" data-start=\"6260\" data-end=\"6286\"><span style=\"font-size: 20px\">1. Range-Based Sharding<\/span><\/p>\n<p data-start=\"6288\" data-end=\"6358\">Range-based sharding membagi data berdasarkan rentang nilai shard key. 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>Shard 1 \u2192 ID 1 - 1.000\r\nShard 2 \u2192 ID 1.001 - 2.000\r\nShard 3 \u2192 ID 2.001 - 3.000<\/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<ul>\n<li data-section-id=\"kz6aq5\" data-start=\"6462\" data-end=\"6475\"><strong>Kelebihan<\/strong><br \/>\nKonsepnya mudah dipahami.<br \/>\nQuery berdasarkan range dapat lebih mudah diarahkan.<br \/>\nCocok untuk pola data tertentu yang memiliki rentang alami.<\/li>\n<\/ul>\n<ul>\n<li data-section-id=\"ouwjcz\" data-start=\"6623\" data-end=\"6637\"><strong>Kekurangan<\/strong><br \/>\nBerpotensi menyebabkan hotspot.<br \/>\nDistribusi data dapat menjadi tidak seimbang.<br \/>\nPenambahan data baru dapat terkonsentrasi pada shard tertentu.<\/li>\n<\/ul>\n<p data-start=\"6787\" data-end=\"6959\">MongoDB mendukung ranged sharding, di mana nilai shard key dibagi menjadi range tertentu dan chunk ditempatkan pada shard yang sesuai.<\/p>\n<p data-section-id=\"14iwbiz\" data-start=\"6966\" data-end=\"6991\"><span style=\"font-size: 20px\">2. Hash-Based Sharding<\/span><\/p>\n<p data-start=\"6993\" data-end=\"7089\">Hash-based sharding menggunakan fungsi hash terhadap shard key untuk menentukan distribusi data. Contoh sederhana:<\/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>user_id\r\n   \u2193\r\nHash Function\r\n   \u2193\r\nShard Assignment<\/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 data-start=\"7172\" data-end=\"7271\">Nilai yang berbeda akan dipetakan ke distribusi hash sehingga data cenderung tersebar lebih merata. MongoDB, misalnya, menyediakan hashed sharding yang menghitung hash dari shard key sebelum menentukan distribusi chunk.<\/p>\n<ul>\n<li data-section-id=\"kz6aq5\" data-start=\"7432\" data-end=\"7445\"><strong>Kelebihan<\/strong><br \/>\nDistribusi data cenderung lebih merata.<br \/>\nDapat mengurangi risiko hotspot akibat nilai shard key yang meningkat secara monoton.<\/li>\n<\/ul>\n<ul>\n<li data-section-id=\"ouwjcz\" data-start=\"7578\" data-end=\"7592\"><strong>Kekurangan<\/strong><br \/>\nQuery berdasarkan range lebih sulit diarahkan ke satu shard.<br \/>\nQuery tertentu dapat membutuhkan akses ke beberapa shard.<\/li>\n<\/ul>\n<p data-section-id=\"fa25hd\" data-start=\"7723\" data-end=\"7753\"><span style=\"font-size: 20px\">3. Directory-Based Sharding<\/span><\/p>\n<p data-start=\"7755\" data-end=\"7855\">Directory-based sharding menggunakan tabel atau layanan metadata untuk menentukan lokasi suatu data. 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>user_id 1001 \u2192 Shard A\r\nuser_id 1002 \u2192 Shard C\r\nuser_id 1003 \u2192 Shard B<\/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 data-start=\"7951\" data-end=\"8052\">Sistem terlebih dahulu mencari informasi lokasi data, kemudian meneruskan query ke shard yang sesuai. Pendekatan ini memberikan fleksibilitas tinggi, tetapi membutuhkan komponen metadata dan mekanisme routing yang harus dikelola dengan baik.<\/p>\n<h2 data-section-id=\"nb1c9f\" data-start=\"8200\" data-end=\"8230\">Perbandingan Jenis Sharding<\/h2>\n<div class=\"group TyagGW_tableContainer TyagGW_tableContainerWithTableOfContents\">\n<div class=\"TyagGW_tableWrapper flex flex-col-reverse w-fit\">\n<table class=\"w-fit min-w-(--thread-content-width)\" style=\"height: 212px\" width=\"927\" data-start=\"8232\" data-end=\"8602\">\n<thead data-start=\"8232\" data-end=\"8284\">\n<tr data-start=\"8232\" data-end=\"8284\">\n<th class=\"last:pe-10\" data-start=\"8232\" data-end=\"8240\" data-col-size=\"sm\">Jenis<\/th>\n<th class=\"last:pe-10\" data-start=\"8240\" data-end=\"8258\" data-col-size=\"sm\">Cara Distribusi<\/th>\n<th class=\"last:pe-10\" data-start=\"8258\" data-end=\"8270\" data-col-size=\"sm\">Kelebihan<\/th>\n<th class=\"last:pe-10\" data-start=\"8270\" data-end=\"8284\" data-col-size=\"sm\">Kekurangan<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"8303\" data-end=\"8602\">\n<tr data-start=\"8303\" data-end=\"8399\">\n<td data-start=\"8303\" data-end=\"8317\" data-col-size=\"sm\">Range-based<\/td>\n<td data-start=\"8317\" data-end=\"8345\" data-col-size=\"sm\">Berdasarkan rentang nilai<\/td>\n<td data-start=\"8345\" data-end=\"8381\" data-col-size=\"sm\">Mudah dan cocok untuk range query<\/td>\n<td data-start=\"8381\" data-end=\"8399\" data-col-size=\"sm\">Risiko hotspot<\/td>\n<\/tr>\n<tr data-start=\"8400\" data-end=\"8498\">\n<td data-start=\"8400\" data-end=\"8413\" data-col-size=\"sm\">Hash-based<\/td>\n<td data-start=\"8413\" data-end=\"8438\" data-col-size=\"sm\">Berdasarkan hasil hash<\/td>\n<td data-start=\"8438\" data-end=\"8468\" data-col-size=\"sm\">Distribusi cenderung merata<\/td>\n<td data-start=\"8468\" data-end=\"8498\" data-col-size=\"sm\">Range query lebih kompleks<\/td>\n<\/tr>\n<tr data-start=\"8499\" data-end=\"8602\">\n<td data-start=\"8499\" data-end=\"8517\" data-col-size=\"sm\">Directory-based<\/td>\n<td data-start=\"8517\" data-end=\"8547\" data-col-size=\"sm\">Berdasarkan metadata lokasi<\/td>\n<td data-col-size=\"sm\" data-start=\"8547\" data-end=\"8566\">Sangat fleksibel<\/td>\n<td data-col-size=\"sm\" data-start=\"8566\" data-end=\"8602\">Membutuhkan metadata dan routing<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h2 data-section-id=\"ctxwug\" data-start=\"8609\" data-end=\"8644\">Perbandingan Database Sharding dan Partitioning<\/h2>\n<p data-start=\"8646\" data-end=\"8772\">Database sharding sering dianggap sama dengan partitioning karena keduanya membagi data. Namun, keduanya tidak selalu identik. <em>Partitioning <\/em>dapat membagi satu tabel atau dataset menjadi beberapa bagian secara logis atau fisik. Sementara sharding umumnya merujuk pada horizontal partitioning yang didistribusikan ke beberapa database atau server independen.<\/p>\n<div class=\"group TyagGW_tableContainer TyagGW_tableContainerWithTableOfContents\">\n<div class=\"TyagGW_tableWrapper flex flex-col-reverse w-fit\">\n<table class=\"w-fit min-w-(--thread-content-width)\" style=\"height: 294px\" width=\"819\" data-start=\"9013\" data-end=\"9506\">\n<thead data-start=\"9013\" data-end=\"9048\">\n<tr data-start=\"9013\" data-end=\"9048\">\n<th class=\"last:pe-10\" data-start=\"9013\" data-end=\"9021\" data-col-size=\"sm\">Aspek<\/th>\n<th class=\"last:pe-10\" data-start=\"9021\" data-end=\"9036\" data-col-size=\"sm\">Partitioning<\/th>\n<th class=\"last:pe-10\" data-start=\"9036\" data-end=\"9048\" data-col-size=\"md\">Sharding<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"9063\" data-end=\"9506\">\n<tr data-start=\"9063\" data-end=\"9135\">\n<td data-start=\"9063\" data-end=\"9080\" data-col-size=\"sm\">Pembagian data<\/td>\n<td data-start=\"9080\" data-end=\"9109\" data-col-size=\"sm\">Menjadi beberapa partition<\/td>\n<td data-start=\"9109\" data-end=\"9135\" data-col-size=\"md\">Menjadi beberapa shard<\/td>\n<\/tr>\n<tr data-start=\"9136\" data-end=\"9215\">\n<td data-start=\"9136\" data-end=\"9145\" data-col-size=\"sm\">Lokasi<\/td>\n<td data-start=\"9145\" data-end=\"9179\" data-col-size=\"sm\">Bisa dalam satu database\/server<\/td>\n<td data-start=\"9179\" data-end=\"9215\" data-col-size=\"md\">Umumnya beberapa database\/server<\/td>\n<\/tr>\n<tr data-start=\"9216\" data-end=\"9278\">\n<td data-start=\"9216\" data-end=\"9225\" data-col-size=\"sm\">Tujuan<\/td>\n<td data-start=\"9225\" data-end=\"9256\" data-col-size=\"sm\">Organisasi dan performa data<\/td>\n<td data-start=\"9256\" data-end=\"9278\" data-col-size=\"md\">Horizontal scaling<\/td>\n<\/tr>\n<tr data-start=\"9279\" data-end=\"9352\">\n<td data-start=\"9279\" data-end=\"9295\" data-col-size=\"sm\">Infrastruktur<\/td>\n<td data-start=\"9295\" data-end=\"9327\" data-col-size=\"sm\">Dapat menggunakan satu server<\/td>\n<td data-start=\"9327\" data-end=\"9352\" data-col-size=\"md\">Biasanya multi-server<\/td>\n<\/tr>\n<tr data-start=\"9353\" data-end=\"9412\">\n<td data-start=\"9353\" data-end=\"9368\" data-col-size=\"sm\">Kompleksitas<\/td>\n<td data-start=\"9368\" data-end=\"9394\" data-col-size=\"sm\">Relatif lebih sederhana<\/td>\n<td data-start=\"9394\" data-end=\"9412\" data-col-size=\"md\">Lebih kompleks<\/td>\n<\/tr>\n<tr data-start=\"9413\" data-end=\"9506\">\n<td data-start=\"9413\" data-end=\"9422\" data-col-size=\"sm\">Contoh<\/td>\n<td data-start=\"9422\" data-end=\"9460\" data-col-size=\"sm\">Partition tabel berdasarkan tanggal<\/td>\n<td data-col-size=\"md\" data-start=\"9460\" data-end=\"9506\">Data pelanggan dibagi ke beberapa database<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p data-start=\"9508\" data-end=\"9674\">PostgreSQL, misalnya, mendukung table partitioning dengan membagi satu tabel besar menjadi bagian-bagian fisik yang lebih kecil.<\/p>\n<h2 data-section-id=\"swjnsj\" data-start=\"9681\" data-end=\"9724\">Database Sharding dan Database Replication<\/h2>\n<p data-start=\"9726\" data-end=\"9767\">Sharding juga berbeda dengan replication. Pada <em>replication<\/em>, data yang sama disalin ke beberapa server. Sementara pada <strong data-start=\"9849\" data-end=\"9861\">sharding<\/strong>, data dibagi sehingga setiap server hanya menyimpan sebagian dataset.<\/p>\n<div class=\"group TyagGW_tableContainer TyagGW_tableContainerWithTableOfContents\">\n<div class=\"TyagGW_tableWrapper flex flex-col-reverse w-fit\">\n<table class=\"w-fit min-w-(--thread-content-width)\" style=\"height: 339px\" width=\"864\" data-start=\"9933\" data-end=\"10434\">\n<thead data-start=\"9933\" data-end=\"9967\">\n<tr data-start=\"9933\" data-end=\"9967\">\n<th class=\"last:pe-10\" data-start=\"9933\" data-end=\"9941\" data-col-size=\"sm\">Aspek<\/th>\n<th class=\"last:pe-10\" data-start=\"9941\" data-end=\"9952\" data-col-size=\"sm\">Sharding<\/th>\n<th class=\"last:pe-10\" data-start=\"9952\" data-end=\"9967\" data-col-size=\"md\">Replication<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"9982\" data-end=\"10434\">\n<tr data-start=\"9982\" data-end=\"10047\">\n<td data-start=\"9982\" data-end=\"9989\" data-col-size=\"sm\">Data<\/td>\n<td data-start=\"9989\" data-end=\"10017\" data-col-size=\"sm\">Dibagi ke beberapa server<\/td>\n<td data-start=\"10017\" data-end=\"10047\" data-col-size=\"md\">Disalin ke beberapa server<\/td>\n<\/tr>\n<tr data-start=\"10048\" data-end=\"10115\">\n<td data-start=\"10048\" data-end=\"10063\" data-col-size=\"sm\">Tujuan utama<\/td>\n<td data-start=\"10063\" data-end=\"10084\" data-col-size=\"sm\">Horizontal scaling<\/td>\n<td data-start=\"10084\" data-end=\"10115\" data-col-size=\"md\">Availability dan redundancy<\/td>\n<\/tr>\n<tr data-start=\"10116\" data-end=\"10177\">\n<td data-start=\"10116\" data-end=\"10155\" data-col-size=\"sm\">Setiap server memiliki seluruh data?<\/td>\n<td data-start=\"10155\" data-end=\"10163\" data-col-size=\"sm\">Tidak<\/td>\n<td data-start=\"10163\" data-end=\"10177\" data-col-size=\"md\">Umumnya ya<\/td>\n<\/tr>\n<tr data-start=\"10178\" data-end=\"10267\">\n<td data-start=\"10178\" data-end=\"10197\" data-col-size=\"sm\">Storage capacity<\/td>\n<td data-start=\"10197\" data-end=\"10222\" data-col-size=\"sm\">Bertambah dengan shard<\/td>\n<td data-start=\"10222\" data-end=\"10267\" data-col-size=\"md\">Tidak otomatis menambah kapasitas dataset<\/td>\n<\/tr>\n<tr data-start=\"10268\" data-end=\"10315\">\n<td data-start=\"10268\" data-end=\"10283\" data-col-size=\"sm\">Read scaling<\/td>\n<td data-start=\"10283\" data-end=\"10300\" data-col-size=\"sm\">Dapat membantu<\/td>\n<td data-start=\"10300\" data-end=\"10315\" data-col-size=\"md\">Sangat umum<\/td>\n<\/tr>\n<tr data-start=\"10316\" data-end=\"10374\">\n<td data-start=\"10316\" data-end=\"10332\" data-col-size=\"sm\">Write scaling<\/td>\n<td data-col-size=\"sm\" data-start=\"10332\" data-end=\"10349\">Dapat membantu<\/td>\n<td data-col-size=\"md\" data-start=\"10349\" data-end=\"10374\">Bergantung arsitektur<\/td>\n<\/tr>\n<tr data-start=\"10375\" data-end=\"10434\">\n<td data-start=\"10375\" data-end=\"10390\" data-col-size=\"sm\">Kompleksitas<\/td>\n<td data-start=\"10390\" data-end=\"10407\" data-col-size=\"sm\">Relatif tinggi<\/td>\n<td data-start=\"10407\" data-end=\"10434\" data-col-size=\"md\">Bergantung implementasi<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p data-start=\"10436\" data-end=\"10597\">Keduanya juga dapat digunakan bersamaan. Misalnya, sebuah sistem dapat memiliki beberapa shard dan setiap shard memiliki replica untuk meningkatkan availability. MongoDB menggunakan pendekatan tersebut pada sharded cluster, di mana setiap shard harus dijalankan sebagai replica set.<\/p>\n<h2 data-section-id=\"tdvro0\" data-start=\"10764\" data-end=\"10796\">Apa Manfaat Database Sharding?<\/h2>\n<p data-section-id=\"1ff4c1m\" data-start=\"10798\" data-end=\"10829\"><span style=\"font-size: 20px\">1. Meningkatkan Skalabilitas<\/span><\/p>\n<p data-start=\"10831\" data-end=\"11037\">Manfaat utama database sharding adalah memungkinkan <strong data-start=\"10883\" data-end=\"10905\">horizontal scaling<\/strong>. Ketika kebutuhan sistem meningkat, kapasitas dapat ditambah dengan menambahkan shard baru.<\/p>\n<p data-section-id=\"d9wgzp\" data-start=\"11039\" data-end=\"11075\"><span style=\"font-size: 20px\">2. Menangani Data Berukuran Besar<\/span><\/p>\n<p data-start=\"11077\" data-end=\"11229\">Jika seluruh dataset sudah terlalu besar untuk ditangani secara efektif oleh satu server, sharding memungkinkan data tersebut dibagi ke beberapa server. Setiap shard hanya perlu menyimpan sebagian data sehingga kapasitas storage dapat ditingkatkan secara horizontal.<\/p>\n<p data-section-id=\"1tk9a2p\" data-start=\"11346\" data-end=\"11377\"><span style=\"font-size: 20px\">3. Mendistribusikan Workload<\/span><\/p>\n<p data-start=\"11379\" data-end=\"11445\">Sharding dapat membagi workload read dan write ke beberapa server. Dengan distribusi yang baik, satu server tidak perlu menangani seluruh operasi database.<\/p>\n<p data-section-id=\"1m4dscw\" data-start=\"11537\" data-end=\"11576\"><span style=\"font-size: 20px\">4. Mengurangi Beban pada Satu Server<\/span><\/p>\n<p data-start=\"11578\" data-end=\"11692\">Karena data dan workload tersebar, penggunaan CPU, RAM, storage, dan I\/O dapat didistribusikan ke beberapa server.<\/p>\n<p data-section-id=\"5vrcw1\" data-start=\"11694\" data-end=\"11730\"><span style=\"font-size: 20px\">5. Mendukung Pertumbuhan Aplikasi<\/span><\/p>\n<p data-start=\"11732\" data-end=\"11862\">Sharding dapat menjadi bagian dari strategi scaling untuk aplikasi yang mengalami pertumbuhan pengguna dan data secara signifikan.<\/p>\n<h1 data-section-id=\"1qxl2ju\" data-start=\"11869\" data-end=\"11899\">Kekurangan Database Sharding<\/h1>\n<p data-start=\"11901\" data-end=\"11978\">Meskipun menawarkan scalability, database sharding juga memiliki konsekuensi.<\/p>\n<p data-section-id=\"1v8qpj\" data-start=\"11980\" data-end=\"12012\"><span style=\"font-size: 20px\">1. Kompleksitas Infrastruktur<\/span><\/p>\n<p data-start=\"12014\" data-end=\"12175\">Sistem tidak lagi hanya mengelola satu database server. Administrator perlu mengelola beberapa shard, routing, metadata, monitoring, backup, dan proses recovery. Microsoft menekankan bahwa sharding dapat meningkatkan scalability, tetapi juga membawa konsekuensi dalam pengelolaan dan distribusi data.<\/p>\n<p data-section-id=\"cgmpqe\" data-start=\"12357\" data-end=\"12388\"><span style=\"font-size: 20px\">2. Pemilihan Shard Key Sulit<\/span><\/p>\n<p data-start=\"12390\" data-end=\"12472\">Shard key yang tidak tepat dapat menghasilkan distribusi data yang tidak seimbang. 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>Shard 1 \u2192 80% workload\r\nShard 2 \u2192 10% workload\r\nShard 3 \u2192 10% workload<\/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 data-start=\"12567\" data-end=\"12657\">Dalam kondisi tersebut, Shard 1 menjadi bottleneck meskipun jumlah server sudah bertambah.<\/p>\n<p data-section-id=\"bxonyr\" data-start=\"12659\" data-end=\"12683\"><span style=\"font-size: 20px\">3. Query Lintas Shard<\/span><\/p>\n<p data-start=\"12685\" data-end=\"12778\">Query yang tidak dapat ditargetkan ke shard tertentu mungkin harus dikirim ke beberapa shard. MongoDB menyebut pola ini sebagai <strong data-start=\"12814\" data-end=\"12832\">scatter\/gather<\/strong>, dan query semacam ini dapat menjadi lebih lambat karena melibatkan banyak shard.<\/p>\n<p data-section-id=\"1s7f92v\" data-start=\"12956\" data-end=\"12994\"><span style=\"font-size: 20px\">4. Transaksi Menjadi Lebih Kompleks<\/span><\/p>\n<p data-start=\"12996\" data-end=\"13161\">Transaksi yang melibatkan data pada beberapa shard dapat membutuhkan mekanisme tambahan dan memiliki overhead lebih tinggi dibandingkan transaksi pada satu database.<\/p>\n<p data-section-id=\"1r5xy9q\" data-start=\"13163\" data-end=\"13192\"><span style=\"font-size: 20px\">5. Maintenance Lebih Rumit<\/span><\/p>\n<p data-start=\"13194\" data-end=\"13228\">Administrator perlu memperhatikan:<\/p>\n<ul data-start=\"13230\" data-end=\"13403\">\n<li data-section-id=\"tmlki2\" data-start=\"13230\" data-end=\"13248\">Distribusi data.<\/li>\n<li data-section-id=\"11qytbr\" data-start=\"13249\" data-end=\"13274\">Kapasitas setiap shard.<\/li>\n<li data-section-id=\"za2ml0\" data-start=\"13275\" data-end=\"13295\">Query performance.<\/li>\n<li data-section-id=\"1u5s9ci\" data-start=\"13296\" data-end=\"13310\">Rebalancing.<\/li>\n<li data-section-id=\"11rykbk\" data-start=\"13311\" data-end=\"13333\">Backup dan recovery.<\/li>\n<li data-section-id=\"btikga\" data-start=\"13334\" data-end=\"13347\">Monitoring.<\/li>\n<li data-section-id=\"10fpar4\" data-start=\"13348\" data-end=\"13366\">Network latency.<\/li>\n<li data-section-id=\"u5cqas\" data-start=\"13367\" data-end=\"13403\">Penambahan atau pengurangan shard.<\/li>\n<\/ul>\n<h2 data-section-id=\"1j9vth3\" data-start=\"13410\" data-end=\"13451\">Apa Itu Hotspot pada Database Sharding?<\/h2>\n<p data-start=\"13453\" data-end=\"13580\"><em>Hotspot <\/em>terjadi ketika workload tidak tersebar secara merata dan sebagian besar request terkonsentrasi pada shard tertentu. 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>Shard 1 \u2192 10% workload\r\nShard 2 \u2192 10% workload\r\nShard 3 \u2192 80% workload<\/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 data-start=\"13676\" data-end=\"13757\">Shard 3 menjadi bottleneck meskipun kapasitas keseluruhan cluster masih tersedia.<\/p>\n<p data-start=\"13759\" data-end=\"14038\">Hotspot dapat terjadi karena pemilihan shard key yang buruk atau pola akses aplikasi yang tidak merata. Karena itu, shard key sebaiknya dipilih berdasarkan distribusi data dan pola query, bukan hanya berdasarkan field yang mudah digunakan.<\/p>\n<h2 data-section-id=\"wk8k2h\" data-start=\"14045\" data-end=\"14091\">Apa Itu Rebalancing dalam Database Sharding?<\/h2>\n<p data-start=\"14093\" data-end=\"14221\">Ketika data tidak lagi tersebar secara merata, sistem dapat melakukan <strong data-start=\"14163\" data-end=\"14178\">rebalancing<\/strong> atau pemindahan sebagian data antar-shard. 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>Sebelum:\r\nShard 1 \u2192 20%\r\nShard 2 \u2192 60%\r\nShard 3 \u2192 20%\r\n\r\nSetelah Rebalancing:\r\nShard 1 \u2192 33%\r\nShard 2 \u2192 34%\r\nShard 3 \u2192 33%<\/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 data-start=\"14363\" data-end=\"14437\">Tujuannya adalah menjaga distribusi data dan workload agar lebih seimbang. MongoDB, misalnya, memiliki balancer yang dapat memindahkan range\/chunk untuk membantu menjaga distribusi data di antara shard.<\/p>\n<h2>Apakah Database Sharding Membuat Database Lebih Cepat?<\/h2>\n<p>Tidak selalu. Database sharding dapat membantu meningkatkan performa ketika data dan workload berhasil didistribusikan secara merata ke beberapa shard. Query yang menggunakan shard key dan dapat diarahkan langsung ke shard tertentu juga berpotensi berjalan lebih efisien karena tidak perlu mengakses seluruh database cluster.<\/p>\n<p>Sebaliknya, query yang harus mengakses beberapa shard dapat menimbulkan overhead tambahan karena sistem perlu mengirimkan query ke beberapa server dan menggabungkan hasilnya. Kondisi ini dapat meningkatkan latency dan membuat performa tidak selalu lebih baik dibandingkan database tanpa sharding.<\/p>\n<p>Oleh karena itu, database sharding tidak sebaiknya diterapkan hanya untuk mempercepat database. Efektivitasnya sangat bergantung pada pemilihan shard key, pola query, distribusi workload, network latency, serta kapasitas masing-masing shard. Dengan desain yang tepat, sharding dapat membantu meningkatkan scalability sekaligus mendukung performa database pada aplikasi berskala besar.<\/p>\n<h2>Kapan Database Sharding Sebaiknya Digunakan?<\/h2>\n<p>Database sharding sebaiknya dipertimbangkan ketika aplikasi sudah memiliki skala besar dan satu database server mulai mengalami keterbatasan kapasitas. Sharding memungkinkan data dan workload dibagi ke beberapa server sehingga aplikasi dapat melakukan horizontal scaling.<\/p>\n<p>Beberapa kondisi yang dapat menjadi pertimbangan untuk menggunakan database sharding antara lain volume data yang sangat besar, traffic database yang terus meningkat, beban read dan write yang tinggi, kebutuhan storage yang melebihi kapasitas satu server, serta vertical scaling yang mulai mencapai batas. Sharding juga lebih efektif ketika workload dapat dibagi berdasarkan karakteristik data atau pola akses tertentu.<\/p>\n<p>Sebaliknya, aplikasi dengan traffic rendah dan database yang masih dapat ditangani oleh satu server biasanya belum membutuhkan sharding. Menerapkan database sharding terlalu dini dapat menambah kompleksitas dalam pengelolaan, monitoring, dan maintenance tanpa memberikan manfaat yang sebanding. Oleh karena itu, sharding sebaiknya diterapkan berdasarkan kebutuhan dan skala aplikasi, bukan hanya sebagai langkah untuk meningkatkan performa.<\/p>\n<h2 data-section-id=\"5q5q67\" data-start=\"16103\" data-end=\"16145\">Contoh Database Sharding pada E-Commerce<\/h2>\n<p data-start=\"16147\" data-end=\"16207\">Bayangkan sebuah e-commerce memiliki puluhan juta pelanggan. Jika seluruh data pelanggan disimpan pada satu database:<\/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                     \u2502\r\n             50 juta pelanggan\r\n                     \u2502\r\n              Satu Server<\/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 data-start=\"16409\" data-end=\"16471\">Seiring pertumbuhan data, server dapat mengalami keterbatasan. Dengan sharding berdasarkan <code data-start=\"16501\" data-end=\"16510\">user_id<\/code>:<\/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                      \u2502\r\n                 Query Router\r\n                      \u2502\r\n       \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n       \u2193              \u2193              \u2193\r\n    Shard 1        Shard 2        Shard 3\r\n    User A-H       User I-P       User Q-Z<\/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 data-start=\"16796\" data-end=\"16839\">Setiap shard hanya menangani sebagian data. Jika pengguna dengan ID tertentu masuk, router menentukan shard yang menyimpan data tersebut dan mengarahkan query ke server yang sesuai.<\/p>\n<h2 data-section-id=\"1gi4sm6\" data-start=\"16985\" data-end=\"17044\">Apakah Database Sharding Selalu Membutuhkan Query Router?<\/h2>\n<p data-start=\"17046\" data-end=\"17247\">Tidak selalu dalam bentuk komponen khusus yang berdiri sendiri, tetapi sistem yang menggunakan sharding membutuhkan mekanisme untuk menentukan lokasi data dan mengarahkan query ke shard yang tepat. Pada MongoDB, fungsi tersebut dilakukan oleh <code data-start=\"17294\" data-end=\"17302\">mongos<\/code>. Dalam arsitektur lain, routing dapat ditangani oleh middleware, application layer, database proxy, atau mekanisme bawaan platform. Karena itu, arsitektur aplikasi perlu mengetahui atau dapat menentukan shard mana yang harus menangani suatu operasi.<\/p>\n<h2 data-section-id=\"7n29z6\" data-start=\"17600\" data-end=\"17667\">Hal yang Perlu Diperhatikan Sebelum Menggunakan Database Sharding<\/h2>\n<p data-start=\"17669\" data-end=\"17738\">Sebelum menerapkan sharding, beberapa aspek penting perlu dianalisis.<\/p>\n<p data-section-id=\"1myrzi3\" data-start=\"17740\" data-end=\"17766\"><span style=\"font-size: 20px\">1. Tentukan Pola Query<\/span><\/p>\n<p data-start=\"17768\" data-end=\"17920\">Pahami query yang paling sering digunakan aplikasi. Shard key sebaiknya mendukung pola query utama sehingga query dapat diarahkan ke shard yang relevan.<\/p>\n<p data-section-id=\"1yeg9hb\" data-start=\"17922\" data-end=\"17961\"><span style=\"font-size: 20px\">2. Pilih Shard Key dengan Hati-Hati<\/span><\/p>\n<p data-start=\"17963\" data-end=\"18162\">Shard key harus membantu mendistribusikan data dan workload secara merata. Kesalahan dalam memilih shard key dapat menyebabkan hotspot dan masalah scalability.<\/p>\n<p data-section-id=\"1mh2cf4\" data-start=\"18164\" data-end=\"18197\"><span style=\"font-size: 20px\">3. Perhatikan Distribusi Data<\/span><\/p>\n<p data-start=\"18199\" data-end=\"18362\">Jangan hanya melihat jumlah data. Distribusi request juga penting. Shard dengan data sedikit tetapi menerima sebagian besar request tetap dapat menjadi bottleneck.<\/p>\n<p data-section-id=\"76bbjz\" data-start=\"18364\" data-end=\"18389\"><span style=\"font-size: 20px\">4. Siapkan Monitoring<\/span><\/p>\n<p data-start=\"18391\" data-end=\"18398\">Pantau:<\/p>\n<ul data-start=\"18400\" data-end=\"18503\">\n<li data-section-id=\"1j40vy8\" data-start=\"18400\" data-end=\"18406\">CPU.<\/li>\n<li data-section-id=\"1j4f33s\" data-start=\"18407\" data-end=\"18413\">RAM.<\/li>\n<li data-section-id=\"s89zxb\" data-start=\"18414\" data-end=\"18424\">Storage.<\/li>\n<li data-section-id=\"1j3vcvj\" data-start=\"18425\" data-end=\"18431\">I\/O.<\/li>\n<li data-section-id=\"1fo8a3c\" data-start=\"18432\" data-end=\"18442\">Network.<\/li>\n<li data-section-id=\"c1oyis\" data-start=\"18443\" data-end=\"18459\">Query latency.<\/li>\n<li data-section-id=\"tmlki2\" data-start=\"18460\" data-end=\"18478\">Distribusi data.<\/li>\n<li data-section-id=\"1jpjtcn\" data-start=\"18479\" data-end=\"18503\">Workload setiap shard.<\/li>\n<\/ul>\n<p data-section-id=\"1nr16i5\" data-start=\"18505\" data-end=\"18540\"><span style=\"font-size: 20px\">5. Siapkan Strategi Rebalancing<\/span><\/p>\n<p data-start=\"18542\" data-end=\"18672\">Pertumbuhan data dapat membuat distribusi awal menjadi tidak seimbang. Sistem perlu memiliki strategi untuk melakukan rebalancing.<\/p>\n<p data-section-id=\"2dn8td\" data-start=\"18674\" data-end=\"18714\"><span style=\"font-size: 20px\">6. Pertimbangkan Backup dan Recovery<\/span><\/p>\n<p data-start=\"18716\" data-end=\"18870\">Setiap shard merupakan bagian dari dataset. Strategi backup dan recovery harus mempertimbangkan seluruh shard agar data dapat dipulihkan secara konsisten.<\/p>\n<h2 data-section-id=\"1as0oro\" data-start=\"18877\" data-end=\"18919\">Database Sharding pada Arsitektur Modern<\/h2>\n<p data-start=\"18921\" data-end=\"19107\">Database sharding sering menjadi bagian dari arsitektur <em>distributed database<\/em> dan sistem berskala besar. Dalam implementasi tertentu, sharding dapat dikombinasikan dengan replication. 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>                 Application\r\n                      \u2502\r\n                 Query Router\r\n                      \u2502\r\n        \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n        \u2193             \u2193             \u2193\r\n     Shard 1       Shard 2       Shard 3\r\n       \u2502             \u2502             \u2502\r\n    Replica       Replica       Replica<\/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 data-start=\"19435\" data-end=\"19605\">Dalam arsitektur seperti ini, sharding digunakan untuk membagi data, sedangkan replication digunakan untuk menyediakan salinan data dan meningkatkan availability. Kombinasi keduanya dapat membantu sistem menangani dataset besar sekaligus menyediakan redundancy, tetapi juga meningkatkan kompleksitas operasional.<\/p>\n<h2>Kesimpulan<\/h2>\n<p>Database sharding adalah teknik membagi data secara horizontal ke beberapa database atau server yang disebut shard. Tujuan utamanya adalah mendukung horizontal scaling sehingga kapasitas storage dan workload database tidak hanya bergantung pada satu server.<\/p>\n<p>Dalam penerapannya, shard key menjadi salah satu komponen penting karena menentukan bagaimana data didistribusikan. Strategi seperti range-based sharding dan hash-based sharding memiliki karakteristik berbeda sehingga pemilihannya perlu disesuaikan dengan pola data dan query aplikasi.<\/p>\n<p>Database sharding dapat membantu meningkatkan scalability, mendistribusikan workload, dan menangani dataset berukuran besar. Namun, penerapannya juga menambah kompleksitas dalam routing query, pemilihan shard key, rebalancing, monitoring, transaksi lintas shard, serta backup dan recovery.<\/p>\n<p>Karena itu, database sharding tidak selalu diperlukan untuk setiap aplikasi. Teknik ini lebih tepat digunakan ketika satu database server mulai menghadapi keterbatasan kapasitas dan horizontal scaling memang dibutuhkan. Dengan perencanaan yang tepat, sharding dapat menjadi bagian penting dari arsitektur database untuk aplikasi berskala besar.<\/p>\n<p>Bagi Anda yang ingin mempelajari lebih banyak mengenai database, server, hosting, jaringan, dan teknologi web, berbagai panduan teknis lainnya juga dapat ditemukan di <a href=\"https:\/\/hosteko.com\/blog\/\"><em><strong>blog Hosteko<\/strong><\/em><\/a>. Informasi tersebut dapat membantu menambah wawasan mengenai pengelolaan website, server, hosting, serta infrastruktur digital.<\/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;32773&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 Database Sharding: Pengertian, Jenis, dan Contohnya [Lengkap]&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>Database merupakan salah satu komponen penting dalam aplikasi modern. Seiring bertambahnya jumlah pengguna, transaksi, dan volume data, satu server database pada akhirnya dapat mencapai batas kapasitas CPU, memory, storage, maupun kemampuan menangani query secara bersamaan. Salah satu pendekatan yang dapat digunakan untuk mengatasi masalah tersebut adalah database sharding. Database sharding merupakan teknik membagi data secara [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":32775,"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":1787898725,"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":[23796,23799,23805,23795,23798,23803,23804,23207,23800,23801,23797,23802],"class_list":["post-32773","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-apa-itu-database-sharding","tag-cara-kerja-database-sharding","tag-database-partitioning","tag-database-sharding","tag-database-sharding-adalah","tag-database-sharding-mysql","tag-database-sharding-postgresql","tag-horizontal-scaling","tag-jenis-database-sharding","tag-manfaat-database-sharding","tag-pengertian-database-sharding","tag-shard-key"],"featured_image_src":{"landsacpe":["https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul187-1140x445.png",1140,445,true],"list":["https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul187-463x348.png",463,348,true],"medium":["https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul187-300x169.png",300,169,true],"full":["https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul187.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 Database Sharding: Pengertian, Jenis, dan Contohnya [Lengkap] - Hosteko Blog<\/title>\n<meta name=\"description\" content=\"Database sharding adalah teknik membagi data ke beberapa server. Pelajari pengertian, cara kerja, jenis, manfaat, dan contoh database sharding.\" \/>\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-apa-itu-database-sharding\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mengenal Database Sharding: Pengertian, Jenis, dan Contohnya [Lengkap] - Hosteko Blog\" \/>\n<meta property=\"og:description\" content=\"Database sharding adalah teknik membagi data ke beberapa server. Pelajari pengertian, cara kerja, jenis, manfaat, dan contoh database sharding.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding\" \/>\n<meta property=\"og:site_name\" content=\"Hosteko Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-28T06:31:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul187-1024x576.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"576\" \/>\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=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding#article\",\"isPartOf\":{\"@id\":\"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding\"},\"author\":{\"name\":\"Fitri Ana\",\"@id\":\"https:\/\/hosteko.com\/blog\/#\/schema\/person\/ffcd8071a8a3d6a862a4e1381d1c4ea0\"},\"headline\":\"Mengenal Database Sharding: Pengertian, Jenis, dan Contohnya [Lengkap]\",\"datePublished\":\"2026-08-28T06:31:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding\"},\"wordCount\":2359,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/hosteko.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul187.png\",\"keywords\":[\"apa itu database sharding\",\"cara kerja database sharding\",\"database partitioning\",\"database sharding\",\"database sharding adalah\",\"database sharding MySQL\",\"database sharding PostgreSQL\",\"horizontal scaling\",\"jenis database sharding\",\"manfaat database sharding\",\"pengertian database sharding\",\"shard key\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding\",\"url\":\"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding\",\"name\":\"Mengenal Database Sharding: Pengertian, Jenis, dan Contohnya [Lengkap] - Hosteko Blog\",\"isPartOf\":{\"@id\":\"https:\/\/hosteko.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding#primaryimage\"},\"image\":{\"@id\":\"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul187.png\",\"datePublished\":\"2026-08-28T06:31:51+00:00\",\"description\":\"Database sharding adalah teknik membagi data ke beberapa server. Pelajari pengertian, cara kerja, jenis, manfaat, dan contoh database sharding.\",\"breadcrumb\":{\"@id\":\"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding#primaryimage\",\"url\":\"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul187.png\",\"contentUrl\":\"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul187.png\",\"width\":1366,\"height\":768},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/hosteko.com\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mengenal Database Sharding: Pengertian, Jenis, dan Contohnya [Lengkap]\"}]},{\"@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 Database Sharding: Pengertian, Jenis, dan Contohnya [Lengkap] - Hosteko Blog","description":"Database sharding adalah teknik membagi data ke beberapa server. Pelajari pengertian, cara kerja, jenis, manfaat, dan contoh database sharding.","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-apa-itu-database-sharding","og_locale":"en_US","og_type":"article","og_title":"Mengenal Database Sharding: Pengertian, Jenis, dan Contohnya [Lengkap] - Hosteko Blog","og_description":"Database sharding adalah teknik membagi data ke beberapa server. Pelajari pengertian, cara kerja, jenis, manfaat, dan contoh database sharding.","og_url":"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding","og_site_name":"Hosteko Blog","article_published_time":"2026-08-28T06:31:51+00:00","og_image":[{"width":1024,"height":576,"url":"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul187-1024x576.png","type":"image\/png"}],"author":"Fitri Ana","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fitri Ana","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding#article","isPartOf":{"@id":"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding"},"author":{"name":"Fitri Ana","@id":"https:\/\/hosteko.com\/blog\/#\/schema\/person\/ffcd8071a8a3d6a862a4e1381d1c4ea0"},"headline":"Mengenal Database Sharding: Pengertian, Jenis, dan Contohnya [Lengkap]","datePublished":"2026-08-28T06:31:51+00:00","mainEntityOfPage":{"@id":"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding"},"wordCount":2359,"commentCount":0,"publisher":{"@id":"https:\/\/hosteko.com\/blog\/#organization"},"image":{"@id":"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding#primaryimage"},"thumbnailUrl":"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul187.png","keywords":["apa itu database sharding","cara kerja database sharding","database partitioning","database sharding","database sharding adalah","database sharding MySQL","database sharding PostgreSQL","horizontal scaling","jenis database sharding","manfaat database sharding","pengertian database sharding","shard key"],"articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding#respond"]}]},{"@type":"WebPage","@id":"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding","url":"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding","name":"Mengenal Database Sharding: Pengertian, Jenis, dan Contohnya [Lengkap] - Hosteko Blog","isPartOf":{"@id":"https:\/\/hosteko.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding#primaryimage"},"image":{"@id":"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding#primaryimage"},"thumbnailUrl":"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul187.png","datePublished":"2026-08-28T06:31:51+00:00","description":"Database sharding adalah teknik membagi data ke beberapa server. Pelajari pengertian, cara kerja, jenis, manfaat, dan contoh database sharding.","breadcrumb":{"@id":"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding#primaryimage","url":"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul187.png","contentUrl":"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul187.png","width":1366,"height":768},{"@type":"BreadcrumbList","@id":"https:\/\/hosteko.com\/blog\/mengenal-apa-itu-database-sharding#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/hosteko.com\/blog"},{"@type":"ListItem","position":2,"name":"Mengenal Database Sharding: Pengertian, Jenis, dan Contohnya [Lengkap]"}]},{"@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\/08\/Desain-tanpa-judul187.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/posts\/32773","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=32773"}],"version-history":[{"count":3,"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/posts\/32773\/revisions"}],"predecessor-version":[{"id":32780,"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/posts\/32773\/revisions\/32780"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/media\/32775"}],"wp:attachment":[{"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/media?parent=32773"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/categories?post=32773"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/tags?post=32773"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}