全部产品
Search
文档中心

Hologres:Konsep Dasar

更新时间:Jun 23, 2025

Hologres adalah mesin gudang data real-time terdistribusi serba guna dengan kinerja tinggi yang memisahkan komputasi dari penyimpanan. Data disimpan dalam shard pada sistem penyimpanan bawah. Topik ini menjelaskan grup tabel dan jumlah shard dalam Hologres.

Grup tabel dan jumlah shard

Dalam Hologres, data disimpan dalam shard pada Sistem File Terdistribusi Apsara. Grup tabel merupakan logika penyimpanan yang digunakan untuk mengelola shard-shard tersebut. Data dalam sebuah tabel disimpan dalam kelompok shard tetap. Saat data ditulis ke tabel Hologres, data tersebut didistribusikan ke shard tertentu berdasarkan kunci distribusi. Saat tabel dibuat, sekelompok shard dialokasikan untuk menyimpan data dalam tabel. Kelompok shard ini disebut grup tabel.

Grup tabel adalah konsep penyimpanan logis spesifik untuk Hologres. PostgreSQL tidak memiliki konsep ini. Grup tabel berbeda dari tablespace dalam PostgreSQL. Tablespace secara unik mengidentifikasi lokasi penyimpanan objek database dan mirip dengan direktori. Grup tabel mewakili sekelompok shard logis bawah.

Gambar berikut memberikan pandangan jelas tentang grup tabel.Layout of table groupsBerdasarkan gambar tersebut, hubungan-hubungan berikut dapat disimpulkan:

  • Hubungan antara grup tabel dan skema

    Skema adalah konsep basis data standar, sedangkan grup tabel bukan konsep basis data standar, melainkan konsep penyimpanan logis. Tabel-tabel dalam skema yang berbeda dapat termasuk dalam grup tabel yang sama. Dengan kata lain, kelompok shard yang sama digunakan untuk menyimpan data dalam tabel-tabel ini di lapisan bawah.

  • Hubungan antara grup tabel dan basis data

    Basis data berisi satu atau lebih grup tabel, dan setiap basis data hanya dapat memiliki satu grup tabel. Setelah Anda membuat basis data, Hologres membuat grup tabel default. Anda dapat menambahkan grup tabel atau memodifikasi grup tabel default sesuai kebutuhan bisnis Anda.

  • Hubungan antara grup tabel yang berbeda

    Basis data dapat berisi beberapa grup tabel. Shard tidak dibagi antara grup tabel ini, dan setiap shard memiliki ID unik dalam suatu instance.

  • Jumlah Shard

    Jumlah shard dalam grup tabel disebut sebagai jumlah shard. Anda harus menentukan jumlah shard saat membuat grup tabel, dan Anda tidak dapat mengubah jumlah shard nanti. Anda hanya dapat mengubah jumlah shard dengan membuat grup tabel lain.

  • Hubungan antara tabel dan shard

    • Shard digunakan untuk menyimpan dan menanyakan data dalam tabel. Hologres menentukan shard tempat data didistribusikan berdasarkan kunci distribusi. Tanpa kunci distribusi, data dialokasikan secara acak ke shard.

    • Grup tabel dapat berisi beberapa tabel. Dengan kata lain, beberapa tabel dapat termasuk dalam kelompok shard yang sama. Namun, sebuah tabel hanya dapat termasuk dalam satu grup tabel. Jika grup tabel tidak berisi tabel, Hologres secara otomatis menghapus grup tabel.

    • Anda tidak dapat memindahkan tabel ke grup tabel lain kecuali Anda membuat ulang tabel atau memanggil fungsi yang digunakan untuk memindahkan tabel ke grup tabel lain.

Hubungan antara jumlah shard dan node komputasi pekerja

Dalam Hologres, mesin penyimpanan digunakan untuk mengelola dan memproses data. Dalam Bahasa Manipulasi Data (DML), mesin penyimpanan menyediakan operasi pembuatan, pembacaan, pembaruan, dan penghapusan (CRUD) tunggal atau batch. Mesin query dapat mengakses data pada shard dengan memanggil operasi-operasi ini untuk mengimplementasikan penulisan atau pembacaan data berkinerja tinggi.

Gambar berikut menunjukkan hubungan antara pekerja, mesin penyimpanan, dan jumlah shard. Relationship diagramGambar berikut menunjukkan bagaimana grup tabel dan jumlah shard terkait dengan alokasi penyimpanan dan pekerja.

  • Saat Anda membuat basis data, Anda dapat membuat grup tabel dan menetapkan jumlah shard untuk setiap grup tabel. Setiap pekerja membuat beberapa mesin penyimpanan internal dan setiap mesin penyimpanan membaca data dari dan menulis data ke shard. Jika Anda tidak menentukan jumlah grup tabel dan jumlah shard saat membuat basis data, Hologres membuat grup tabel default untuk Anda dan menetapkan jumlah shard default untuk grup tabel tersebut. Untuk informasi lebih lanjut, lihat Manajemen Instance.

  • Hologres memastikan bahwa mesin penyimpanan didistribusikan secara merata di setiap pekerja. Ini memungkinkan sumber daya dialokasikan secara merata di antara para pekerja.

  • Hologres memastikan bahwa shard dalam grup tabel didistribusikan ke beberapa pekerja. Ini mencegah alokasi sumber daya yang tidak merata di mana grup tabel dialokasikan ke satu pekerja dan pekerja lainnya menganggur. Namun, jika jumlah shard dalam grup tabel tidak proporsional dengan jumlah pekerja dalam suatu instance, shard tidak dapat dialokasikan ke beberapa pekerja dan pekerja-pekerja tersebut menjadi menganggur. Saat Anda menentukan jumlah shard, pastikan bahwa jumlah shard total dalam instance proporsional dengan jumlah pekerja.

    Pada gambar sebelumnya, Table Group 1 berisi tiga shard tetapi shard ini dialokasikan ke dua pekerja. Ini berarti jumlah shard dalam grup tabel tidak proporsional dengan jumlah pekerja. Oleh karena itu, jumlah shard yang dialokasikan ke satu pekerja satu lebih banyak daripada yang dialokasikan ke pekerja lainnya. Dalam kasus ini, sumber daya dialokasikan secara tidak merata ke pekerja dan ekor panjang terjadi. Untuk mengatasi hal ini, kami sarankan Anda mengubah jumlah shard untuk memastikan bahwa jumlah shard proporsional dengan jumlah pekerja. Pada gambar berikutnya, jumlah shard total dalam Table Group 1 dan Table Group 2 adalah kelipatan dari jumlah pekerja. Sumber daya dapat dialokasikan secara merata ke pekerja. Even resource allocation

    Jika pekerja gagal karena alasan seperti kehabisan memori (OOM), Hologres secara otomatis mengalokasikan shard yang sesuai dengan pekerja ini ke pekerja sehat lainnya. Ini memastikan alokasi shard yang merata ke setiap pekerja sehat. Dalam contoh berikut, ada empat pekerja dalam suatu instance dan dua grup tabel berisi delapan shard. Awalnya, setiap pekerja memiliki dua mesin penyimpanan dan mesin penyimpanan tersebut sesuai dengan dua shard. Setelah Worker 4 yang dialokasikan Shard 7 dan Shard 8 gagal, Shard 7 dan Shard 8 dengan cepat dialokasikan ke tiga pekerja lainnya. Karena hanya ada dua shard, sistem secara acak memilih dua pekerja untuk mengalokasikan shard. Ini memastikan bahwa jumlah mesin penyimpanan pada setiap pekerja hampir merata. Example

Ringkasan

Jumlah pekerja sangat erat kaitannya dengan jumlah shard. Jika jumlah grup tabel dan jumlah shard diatur dengan benar, data dapat ditulis, diperiksa, dan dianalisis dengan konkurensi tinggi. Ini meningkatkan penggunaan sumber daya serta efisiensi penyimpanan dan komputasi data. Jika jumlah grup tabel dan jumlah shard tidak diatur dengan benar, kinerja mungkin tidak sesuai harapan dan tidak dapat dioptimalkan dalam jangka panjang.

  • Jika grup tabel memiliki jumlah shard besar, data dapat ditulis, diperiksa, dan dianalisis dengan konkurensi tinggi. Namun, jumlah shard yang lebih besar tidak selalu membawa kinerja yang lebih baik. Komunikasi dan sumber daya komputasi yang lebih banyak serta ruang memori yang lebih besar diperlukan untuk peningkatan jumlah shard. Dari sudut pandang ini, jika sumber daya tidak mencukupi atau hanya sejumlah kecil data yang diperiksa, meningkatkan jumlah shard dapat menyebabkan efek sebaliknya.

  • Dalam Hologres, batas bawah jumlah shard adalah 1. Jika jumlah data hanya ratusan atau ribuan rekaman, Anda dapat menetapkan jumlah shard menjadi 1. Secara prinsip, batas atas jumlah shard adalah jumlah total inti komputasi instance Anda. Ini memastikan bahwa setiap shard dapat menempati setidaknya satu inti untuk komputasi. Jika jumlah shard melebihi jumlah inti komputasi, beberapa shard tidak dapat dialokasikan sumber daya CPU sepanjang waktu selama kueri. Ini dapat menyebabkan ekor panjang dan overhead failover.

  • Mirip dengan jumlah shard, jumlah grup tabel harus diatur ke nilai yang sesuai. Sebuah shard menempati ruang memori tertentu terlepas dari apakah sedang digunakan, untuk menyimpan informasi seperti metadata dan skema dalam tabel. Jika data ditulis ke tabel, shard menempati lebih banyak ruang memori. Jumlah shard total dalam instance Anda meningkat dengan jumlah grup tabel, yang menghasilkan ruang memori yang lebih besar. Selain itu, jika Anda ingin melakukan operasi join lokal pada beberapa tabel yang saling terkait, tabel-tabel ini harus termasuk dalam grup tabel yang sama.

  • Dari sudut pandang disk, untuk tabel yang sama, jika lebih banyak shard ada, data lebih tersebar, file kecil lebih mungkin muncul, dan jumlah file lebih besar. Jika sejumlah besar tabel dan shard ada, jumlah file menjadi sangat besar. Akibatnya, lebih banyak overhead diperlukan selama kueri dan failover, I/O kueri meningkat, dan waktu pemulihan yang lebih lama diperlukan.