Postgres ditulis ulang menggunakan Rust… dan entah bagaimana lolos semua pengujian

BBetter Stack
컴퓨터/소프트웨어창업/스타트업AI/미래기술

스크립트

00:00:00Seseorang membangun ulang Postgres menggunakan Rust, dan entah bagaimana versi yang dirilis sekarang berhasil melewati semua 46.000 kueri regresi Postgres.
00:00:08Ini berfungsi dengan PSQL standar. Bahkan bisa memuat direktori data Postgres 18.3 yang sudah ada.
00:00:14Itu terdengar seperti pengganti yang siap produksi. Padahal tidak.
00:00:17Tapi versi paling menarik dari proyek ini bahkan belum dirilis.
00:00:21Jadi, apa sebenarnya yang sedang kita lihat di sini? Apakah ini masa depan Postgres atau sekadar eksperimen AI?
00:00:30Nah, untuk memahami mengapa ini penting, Anda perlu memahami masalahnya.
00:00:36Postgres adalah salah satu basis data terbaik yang pernah dibuat, mari kita akui itu.
00:00:40Tetapi Postgres juga membawa beban arsitektur selama hampir empat dekade dan sekitar satu juta baris kode C.
00:00:46Setiap koneksi klien mendapatkan proses backend-nya sendiri.
00:00:49Isolasi itu berguna, tetapi juga berarti overhead memori yang lebih besar, tekanan lebih untuk menggunakan koneksi pooling,
00:00:56dan kesulitan berbagi status di seluruh pekerjaan paralel.
00:01:00PGRust menempuh jalur yang berbeda.
00:01:02Pertahankan perilaku Postgres, pertahankan pengalaman klien, pertahankan format disk, tetapi ganti mesin di bawahnya dengan Rust.
00:01:09Ini bukan ekstensi Postgres.
00:01:11Ini bukan fitur yang ditambahkan di atasnya.
00:01:13Ini sepenuhnya terpisah, sebuah implementasi yang mencoba berperilaku seperti Postgres.
00:01:18Kita banyak melihat penulisan ulang ke Rust sekarang, seperti yang baru saja kita bahas beberapa hari lalu tentang Bun yang menulis ulang seluruh basis kodenya dengan Rust.
00:01:25Saya akan menaruhnya di suatu tempat di sini.
00:01:27Nah, semua ini terdengar bagus, tapi apakah rasanya benar-benar seperti Postgres asli?
00:01:31Kurang teruji dengan benar.
00:01:32Jika Anda menikmati alat pengodean yang mempercepat alur kerja Anda, pastikan untuk berlangganan.
00:01:36Kami terus merilis video setiap saat.
00:01:38Sekarang, saya mulai dengan image Docker resmi, kemudian terhubung dengan klien PSQL yang benar-benar normal.
00:01:43Tidak ada yang dikustomisasi.
00:01:44Sekarang, saya sudah masuk.
00:01:46Pertama, mari periksa versinya.
00:01:48Seperti yang Anda lihat, ia melaporkan dirinya sebagai PGRust dengan versi terbaru.
00:01:53Sekarang, saya bisa membuat tabel, memasukkan beberapa data, dan melihat rencana kueri.
00:01:59Saya hanya akan menjalankannya langsung di terminal saya.
00:02:01Dari luar, ini sama sekali tidak bisa dibedakan dari Postgres.
00:02:05Klien sama, SQL sama, output sama.
00:02:08Anda bahkan bisa melihat perencana kueri memilih pemindaian indeks dan memberi kita statistik eksekusi yang nyata.
00:02:14Sekarang, agar sedikit lebih menarik, mari masukkan 100.000 baris dan jalankan kueri lain.
00:02:20Ini hanyalah 100 ribu baris data yang dibuat secara otomatis.
00:02:23Kita akan memasukkannya ke sini.
00:02:25Lalu, apa gunanya semua ini?
00:02:27Oke, itu pertanyaan yang bagus.
00:02:28Yah, dalam rilis versi awal saat ini, kita tidak akan melihat peningkatan kecepatan yang dramatis dibanding Postgres biasa.
00:02:35Klaim kinerja yang lebih besar datang dari versi pengembangan yang belum dirilis yang beralih ke model thread-per-connection.
00:02:43Namun, semua ini membuktikan bahwa ini bukan sekadar implementasi parsial.
00:02:47Ini telah lulus rangkaian tes regresi Postgres resmi yang lengkap, lebih dari 46.000 kueri.
00:02:53Ia berbicara dengan protokol kabel yang nyata, dan memiliki mesin penyimpanan perencana kueri yang berfungsi.
00:02:59Ini adalah server basis data yang nyata.
00:03:01Hanya saja ditulis dalam Rust.
00:03:03Jadi, dengan kemajuan ini, kita bisa melihat beberapa peningkatan kinerja yang serius dari segi kecepatan.
00:03:08Jadi, sekarang pertanyaannya adalah, mengapa tidak membuat ekstensi Postgres yang lain saja?
00:03:12Karena ekstensi berada di atas inti Postgres yang asli.
00:03:16Sebuah fork bisa mengubah inti tersebut, tetapi kemudian ia mewarisi arsitektur yang sama dan tugas permanen untuk terus mengikuti Postgres hulu.
00:03:25Anda memiliki basis data seperti CockroachDB dan YugaByte, tetapi mereka adalah basis data terdistribusi yang independen.
00:03:31Kompatibilitas drop-in yang tepat bukanlah tujuan utama mereka.
00:03:35PG Rust mencoba sesuatu yang lain.
00:03:37Ia menggunakan perilaku Postgres yang sebenarnya sebagai spesifikasi.
00:03:41Rilis saat ini menargetkan Postgres 18.3.
00:03:44Ia melewati rangkaian regresi standar dan tes isolasi, dan cukup kompatibel untuk melakukan boot dari direktori data Postgres 18.3 yang sudah ada.
00:03:53Eksperimen yang lebih besar di sini terjadi dalam versi terpisah yang belum dipublikasikan, dan versi itu kabarnya menggantikan model proses per koneksi Postgres dengan model thread per koneksi.
00:04:05Dengan model Postgres normal, setiap koneksi mendapatkan prosesnya sendiri.
00:04:09Dengan model baru, setiap koneksi mendapatkan thread di dalam proses yang sama.
00:04:14Hal itu dapat menurunkan overhead per koneksi dan memudahkan bagian-bagian basis data yang berbeda untuk berbagi informasi.
00:04:21Tapi dengan semua ini, pasti ada pertukaran, bukan?
00:04:24Proses terpisah juga menciptakan dinding yang berguna antar koneksi.
00:04:28Jika satu proses gagal, pemisahan itu dapat membantu menahan kerusakan.
00:04:32Dengan thread, satu ekstensi yang tidak aman atau bug memori dapat memengaruhi lebih banyak bagian server.
00:04:38Jadi thread per koneksi tidak secara otomatis lebih baik.
00:04:41Ini hanya membuka pintu baru, tetapi juga mungkin menghilangkan beberapa pengaman.
00:04:45Lalu ada bagian kedua yang utama dari cerita ini, AI.
00:04:49Michael Malice dan Jason Siebel menggunakan agen pengodean secara intensif untuk mempercepat penulisan ulang.
00:04:54Versi yang dipublikasikan secara sengaja mengikuti struktur Postgres asli di banyak tempat.
00:04:59Versi yang belum dipublikasikan adalah tempat mereka mencoba perubahan arsitektur yang lebih besar.
00:05:03Jadi eksperimen sebenarnya bukan sekadar, bisakah Rust membuat Postgres lebih cepat?
00:05:08Lebih tepatnya, bisakah AI membuat penulisan ulang sebesar ini cukup terjangkau sehingga pengembang benar-benar bisa memikirkan kembali arsitektur di balik berbagai hal?
00:05:16Karena AI sangat banyak digunakan di sini.
00:05:19Sekarang, apakah ini mengubah segalanya?
00:05:20Yah, mungkin saja.
00:05:21Ini juga bagian di mana kita perlu sedikit melambat.
00:05:25Versi yang dirilis belum dioptimalkan secara mendalam.
00:05:28Klaim kinerja utama datang dari versi thread per koneksi yang belum dipublikasikan, yang saat ini belum bisa kita uji sepenuhnya.
00:05:36Para pengembang mengklaim kinerja sekitar 50% lebih baik pada beban kerja transaksional.
00:05:40Mereka juga mengklaim sekitar 300 kali kinerja Postgres pada beban kerja analitis.
00:05:45Angka-angka tersebut sangat besar, tetapi kode di balik hasil tersebut saat ini tidak tersedia untuk jenis inspeksi atau tolok ukur apa pun.
00:05:53Jadi, oleh karena itu, masih banyak spekulasi.
00:05:57Tampaknya ada pembagian 50-50 yang baik di sini, setidaknya saat membaca daring, dengan pertanyaan yang terlihat seperti ini.
00:06:03Ini hanyalah masalah-masalah di sini di GitHub.
00:06:05Lalu Anda bahkan mendapatkan satu masalah seperti ini, kan?
00:06:08Yang merupakan pertanyaan yang sangat wajar.
00:06:10Saat Anda membaca masalah ini, para pengembang tampak bersikeras untuk benar-benar mewujudkannya.
00:06:15Jadi, kita belum memiliki statistik nyata.
00:06:17Namun, itu tidak otomatis berarti angka-angka tersebut salah.
00:06:20Itu hanya berarti kita harus memperlakukannya sebagai klaim yang menjanjikan, bukan fakta yang sudah mapan.
00:06:24Dan sejujurnya, pengganda yang tepat mungkin bukan bagian yang paling penting.
00:06:28Kita tidak perlu mengubah seluruh proyek Postgres sebelum mengetahui apakah suatu ide benar-benar berhasil atau tidak.
00:06:34Kebebasan itu mungkin lebih berharga daripada tolok ukur apa pun yang bisa kita dapatkan.
00:06:38Sekarang, reaksi dari para pengembang dengan semua penulisan ulang ke Rust ini, bahkan pada PG Rust ini, sangat masif.
00:06:44Diskusi utama di Hacker News melewati ratusan poin dan komentar, tetapi sekali lagi, tanggapannya terbagi.
00:06:50Kedua belah pihak memberikan argumen yang baik.
00:06:52Pertama, melewati setiap kueri regresi adalah pencapaian yang serius.
00:06:56Banyak proyek mengklaim kompatibel dengan Postgres.
00:06:59Frasa itu bisa berarti hampir apa saja.
00:07:01PG Rust memiliki target yang terukur.
00:07:04Tes Postgres yang sebenarnya adalah hakim dari hal ini.
00:07:07Dan kecepatan penulisan ulang ini menunjukkan bahwa agen pengodean mungkin benar-benar mengubah biaya eksperimen infrastruktur yang besar.
00:07:13Ide-ide yang dulunya tampak terlalu mahal untuk dicoba kini tampaknya menjadi lebih mungkin.
00:07:19Sekarang, untuk sisi lain, lulus tes regresi tidak sama dengan mendapatkan kepercayaan produksi.
00:07:24Tes-tes tersebut tidak menggantikan pengujian pemulihan kerusakan dan replikasi selama bertahun-tahun, atau basis data yang berjalan selama berbulan-bulan tanpa berhenti.
00:07:31Sebuah proyek dapat lulus semua tes yang diketahui dan masih gagal dalam situasi yang tidak terpikirkan oleh siapa pun untuk diuji.
00:07:37Menghasilkan ratusan ribu baris kode adalah satu tantangan.
00:07:42Kompatibilitas ekstensi adalah celah utama lainnya.
00:07:45Sekarang, haruskah Anda mengganti klaster Postgres produksi Anda dengan PG Rust?
00:07:49Tidak, tentu saja tidak.
00:07:51Proyek itu sendiri belum siap produksi.
00:07:53Itu sudah dinyatakan.
00:07:54Ini belum sepenuhnya dioptimalkan.
00:07:56Di area kompatibilitas utama, termasuk ekosistem ekstensi, mereka masih belum selesai.
00:08:02Tapi haruskah Anda mencobanya?
00:08:03Tentu.
00:08:03Jika Anda bekerja dengan basis data, Rust, eksekusi kueri, pengujian kompatibilitas, atau pengembangan AI, mengapa tidak mencobanya?
00:08:10Jalankan image Docker-nya, uji pustaka klien Anda terhadapnya, baca kodenya, dan lihat apa yang terjadi.
00:08:16Jadi, berikan penilaian Anda di kolom komentar.
00:08:18Ke mana proyek ini akan pergi?
00:08:20Apakah kita akan mulai menulis ulang lebih banyak dalam Rust?
00:08:21Kita akan segera tahu.
00:08:23Jika Anda menikmati tips dan trik pengodean seperti ini, pastikan untuk berlangganan saluran BetterStack.
00:08:26Sampai jumpa di video lainnya.

핵심 요약

PGRust membuktikan bahwa penulisan ulang basis data besar dengan Rust menggunakan bantuan AI dimungkinkan, meskipun saat ini masih berupa eksperimen arsitektur yang belum siap untuk lingkungan produksi.

하이라이트

  • PGRust berhasil melewati seluruh rangkaian tes regresi Postgres resmi yang mencakup lebih dari 46.000 kueri.

  • Implementasi ini mendukung PSQL standar dan mampu memuat direktori data Postgres versi 18.3 yang sudah ada.

  • Versi pengembangan yang belum dirilis beralih dari model proses per koneksi ke model thread per koneksi untuk meningkatkan efisiensi.

  • Klaim kinerja awal menyebutkan peningkatan 50% pada beban kerja transaksional dan 300 kali lipat pada beban kerja analitis.

  • Penggunaan agen pengodean AI mempercepat proses penulisan ulang arsitektur basis data yang kompleks.

타임라인

Status dan Kapabilitas PGRust

  • PGRust merupakan implementasi terpisah yang meniru perilaku Postgres asli tanpa menjadi ekstensi.
  • Proyek ini lolos 46.000 tes regresi resmi Postgres.
  • Klien PSQL standar dapat terhubung ke PGRust tanpa perbedaan yang terlihat dari sisi pengguna.

PGRust ditulis ulang menggunakan bahasa Rust dan dirancang untuk mempertahankan perilaku, pengalaman klien, serta format disk dari Postgres asli. Implementasi ini berhasil menjalankan kueri, membuat tabel, dan menampilkan rencana kueri layaknya server basis data nyata. Kepatuhan terhadap tes regresi menunjukkan tingkat kompatibilitas fungsional yang tinggi.

Tujuan Arsitektur dan Peran AI

  • PGRust menargetkan penggantian model proses per koneksi dengan model thread per koneksi.
  • Model thread diharapkan dapat menurunkan overhead memori dan memudahkan berbagi status antar pekerjaan.
  • Penggunaan agen pengodean AI secara intensif memungkinkan pengembang bereksperimen dengan perubahan arsitektur berskala besar.

Model Postgres saat ini memberikan setiap koneksi proses backend-nya sendiri, yang membatasi efisiensi memori. Dengan beralih ke Rust, pengembang mencoba model thread per koneksi untuk efisiensi lebih tinggi, meskipun hal ini berisiko mengurangi isolasi antar koneksi. Agen AI digunakan untuk mempercepat proses penulisan ulang agar eksperimen arsitektur yang sebelumnya dianggap terlalu mahal menjadi layak dilakukan.

Batasan dan Prospek Masa Depan

  • Klaim kinerja tinggi belum terverifikasi secara publik karena kode versi tersebut belum dirilis.
  • PGRust belum siap untuk penggunaan produksi karena belum mendukung ekosistem ekstensi secara penuh.
  • Pencapaian melewati tes regresi merupakan indikator kuat bahwa metodologi ini layak diteliti lebih lanjut.

Meskipun menjanjikan, PGRust saat ini belum memiliki tolok ukur kinerja yang transparan untuk diperiksa. Komunitas terbagi antara mengakui pencapaian teknis dalam melewati tes regresi dan keraguan terhadap kestabilan operasional jangka panjang. Proyek ini disarankan untuk pengujian dan eksplorasi oleh pengembang, namun belum direkomendasikan untuk menggantikan klaster basis data produksi.

커뮤니티 글

모든 글 보기