PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi · Pelajaran

Kajian Kes Dunia Sebenar

Teliti contoh praktikal dan pelajari daripada pelaksanaan pengindeksan serta pembahagian yang berjaya dalam sistem berskala besar.

Pelajaran 3 daripada 411 langkah

Kajian Kes Dunia Sebenar ialah pelajaran PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi merangkumi sejumlah 4 pelajaran.

Pengindeksan dan Pemartisian dalam Dunia Sebenar

Selamat datang ke pelajaran terakhir kami! Kita telah mempelajari indeks dan pemartisian secara berasingan. Kini, mari kita terokai cara ciri-ciri berkuasa ini digabungkan dalam sistem berskala besar dunia sebenar.

Kami akan meneliti kajian kes praktikal untuk melihat cara arkitek pangkalan data menggunakan strategi ini bagi menyelesaikan cabaran prestasi dan pengurusan yang kompleks.

Kajian Kes 1: Pesanan E-dagang

Bayangkan platform e-dagang popular yang memproses berjuta-juta pesanan setiap hari. Jadual orders mereka berkembang dengan pesat dan mengandungi sejarah transaksi selama bertahun-tahun.

  • Cabaran: Pertanyaan untuk pesanan terkini adalah pantas, tetapi laporan sejarah atau carian pesanan lama oleh khidmat pelanggan sangat perlahan.
  • Masalah: Jadual orders tunggal yang besar sukar diselenggara dan disandarkan, manakala saiz indeks menjadi sukar diurus.

Penyelesaian: Pemartisian Julat Mengikut Tarikh

Untuk menangani cabaran e-dagang, pasukan tersebut memutuskan untuk melaksanakan Pemartisian Julat pada lajur order_date. Langkah ini membahagikan jadual besar kepada partisi yang lebih kecil dan mudah diurus, biasanya mengikut bulan atau tahun.

Pertanyaan untuk data terkini hanya mengimbas partisi yang paling baharu, sekali gus mempercepat operasi biasa dengan ketara. Partisi lama boleh diarkibkan atau dicapai dengan kurang kerap.

CREATE TABLE orders (
    order_id BIGINT NOT NULL,
    customer_id INT NOT NULL,
    order_date DATE NOT NULL,
    total_amount NUMERIC(10, 2)
) PARTITION BY RANGE (order_date);

CREATE TABLE orders_y2023m01 PARTITION OF orders
    FOR VALUES FROM ('2023-01-01') TO ('2023-02-01');

Penyelesaian: Indeks Setempat untuk Pesanan

Dengan pemartisian yang telah dilaksanakan, indeks dicipta secara *setempat* pada setiap partisi. Ini bermakna setiap partisi mempunyai indeks kecilnya sendiri, bukannya satu indeks besar untuk seluruh jadual.

  • Manfaat: Indeks yang lebih kecil lebih pantas untuk dicari dan dikemas kini.
  • Manfaat: Pertanyaan yang menyasarkan partisi tertentu (contohnya, mengikut ID pelanggan dalam satu bulan) hanya menggunakan indeks partisi tersebut.
CREATE INDEX idx_orders_y2023m01_customer_id
ON orders_y2023m01 (customer_id);

CREATE INDEX idx_orders_y2023m01_order_id
ON orders_y2023m01 (order_id);

Hasil Kajian Kes E-dagang

Gabungan pemartisian julat dan indeks setempat meningkatkan prestasi platform e-dagang dengan ketara:

  • Masa pertanyaan untuk data terkini berkurang sebanyak 80%.
  • Tugas penyelenggaraan pangkalan data (seperti VACUUM) menjadi lebih pantas pada partisi yang lebih kecil.
  • Data lama dapat diarkibkan atau dibuang dengan cekap hanya dengan menanggalkan dan membuang partisi lama.

Kajian Kes 2: Data Sensor IoT

Seterusnya, mari kita lihat platform Internet Benda (IoT) yang mengumpulkan data sensor daripada berjuta-juta peranti. Setiap peranti menghantar bacaan setiap beberapa saat, lalu menghasilkan data siri masa sebanyak petabait.

  • Cabaran: Memasukkan data pada kadar yang sangat tinggi dan menjalankan pelbagai pertanyaan analitik (contohnya, 'cari semua peranti yang melaporkan suhu > X di rantau Y sepanjang minggu lalu').
  • Masalah: Indeks B-tree standard pada cap masa terlalu besar dan lambat dikemas kini untuk jumlah data sedemikian.

Penyelesaian: Pemartisian Hibrid

Untuk data IoT, strategi pemartisian hibrid selalunya paling sesuai. Pasukan tersebut melaksanakan:

  1. Pemartisian Julat Mengikut Masa: Kunci pemartisian utama ialah timestamp, yang membahagikan data mengikut hari atau jam.
  2. Pemartisian Senarai Mengikut Jenis Peranti: Dalam setiap partisi masa, data dipartisikan lagi mengikut device_type (contohnya, 'sensor', 'actuator', 'gateway').

Hal ini membolehkan pemangkasan yang cekap berdasarkan masa dan ciri-ciri peranti.

CREATE TABLE sensor_data (
    timestamp TIMESTAMPTZ NOT NULL,
    device_id INT NOT NULL,
    device_type TEXT NOT NULL,
    reading_value NUMERIC(10, 2)
) PARTITION BY RANGE (timestamp);

CREATE TABLE sensor_data_2024_01_01 PARTITION OF sensor_data
    FOR VALUES FROM ('2024-01-01 00:00:00') TO ('2024-01-02 00:00:00')
    PARTITION BY LIST (device_type);

Penyelesaian: Indeks Khusus

Untuk mengendalikan pertanyaan IoT yang pelbagai, gabungan indeks khusus digunakan:

  • Indeks BRIN pada Cap Masa: Untuk pertanyaan julat berdasarkan masa, BRIN (Indeks Julat Blok) sangat berkesan pada data yang tersusun secara semula jadi dan menggunakan ruang yang kecil.
  • Indeks B-Tree pada ID Peranti: Indeks B-tree setempat pada device_id dalam setiap subpartisi memastikan carian peranti tertentu dilakukan dengan pantas.
  • Indeks GIN untuk Tag: Jika peranti mempunyai tag berkaitan (contohnya, tags JSONB), indeks GIN boleh mempercepat pertanyaan yang mencari dalam medan JSONB tersebut.
CREATE INDEX brin_idx_sensor_data_time
ON sensor_data USING BRIN (timestamp);

CREATE INDEX btree_idx_sensor_data_device_id
ON sensor_data_2024_01_01_sensor (device_id);

-- Example for a JSONB column
-- CREATE INDEX gin_idx_sensor_data_tags
-- ON sensor_data USING GIN (tags jsonb_path_ops);

Hasil Kajian Kes IoT

Strategi gabungan untuk data IoT menghasilkan peningkatan yang ketara:

  • Kadar pemasukan data dapat dikekalkan pada tahap puncak tanpa kemerosotan prestasi.
  • Pertanyaan analitik yang merangkumi julat masa yang besar dioptimumkan melalui pemangkasan partisi dan indeks BRIN.
  • Carian peranti tertentu atau carian berasaskan tag menjadi sangat cekap hasil penggunaan B-tree setempat dan indeks GIN.

Pendekatan ini memberikan kedua-dua daya pemprosesan penulisan yang tinggi dan prestasi bacaan yang fleksibel.

Gunakan Pengetahuan Anda

Berdasarkan kajian kes tersebut, apakah pertimbangan penting ketika mereka bentuk strategi pengindeksan dan pemartisian untuk pangkalan data PostgreSQL berskala besar?

Imbas Kembali: Pengajaran daripada Kajian Kes

Dalam pelajaran ini, kita telah meneroka dua kajian kes dunia sebenar yang menunjukkan kuasa menggabungkan pengindeksan dan pembahagian PostgreSQL:

  • E-dagang: Menggunakan pembahagian julat mengikut tarikh bersama indeks B-tree setempat untuk data pesanan sejarah, sekali gus meningkatkan kelajuan pertanyaan dan kebolehurusan.
  • Data IoT: Menggunakan pembahagian hibrid (julat mengikut masa, senarai mengikut jenis peranti) bersama indeks khusus seperti BRIN, B-tree dan GIN untuk pertanyaan bervolum tinggi dan pelbagai.

Contoh-contoh ini menunjukkan bahawa strategi terbaik sering melibatkan gabungan teknik yang dirancang dengan teliti, disesuaikan dengan data dan beban kerja khusus anda.

Percuma untuk bermula

Pelajari PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
11
Pelajaran
44

Soalan Lazim

Adakah pelajaran “Kajian Kes Dunia Sebenar” percuma?

Ya — teks penuh “Kajian Kes Dunia Sebenar” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi, tingkat taraf kepada CoddyKit PRO. Kursus PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Kajian Kes Dunia Sebenar”?

Teliti contoh praktikal dan pelajari daripada pelaksanaan pengindeksan serta pembahagian yang berjaya dalam sistem berskala besar. Anda berlatih PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi?

Tiada pengalaman terdahulu diperlukan. Pembelajaran PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Kajian Kes Dunia Sebenar” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi ini?

Ya. Setiap pelajaran PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Menskalakan Indeks dengan Pembahagian
  2. Memilih Strategi Indeks/Pembahagian
  3. Kajian Kes Dunia Sebenar
  4. Indeks BRIN untuk Jadual Berpartisi Besar
← Kembali ke PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi