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.