Judulnya bukan clickbait atau hiperbola. Saya bermaksud untuk membuktikan bahwa berdasarkan desain dan implementasi bahwa PostgreSQL secara objektif dan terukur adalah database yang lebih baik daripada apa pun yang tersedia saat ini, dengan atau tanpa pertimbangan uang.
Bagaimana saya bisa mengklaim dan membenarkan pernyataan yang begitu tinggi? Baca terus, kutu buku yang lembut. Saya berjanji bahwa waktu Anda tidak akan sia-sia.
Keamanan Transparan
PostgreSQL memiliki milis keamanan. Proyek PostgreSQL belajar tentang vektor intrusi pada saat yang sama seperti yang dilakukan orang lain. Tidak ada yang disembunyikan, dan apa pun yang ditemukan dikerjakan dengan kecepatan yang membuat kepala vendor komersial berputar. Jangan tertipu oleh daftar cacat yang lebih pendek yang diterbitkan oleh vendor yang sama yang menyediakan perangkat lunak dalam pengawasan.
Ini berarti bahwa semua vektor serangan yang diketahui ditangani segera setelah dipublikasikan. Responsivitas keamanan semacam ini bahkan tidak terpikirkan di pasar komersial. Untuk vendor komersial, kerahasiaan sampai masalah dapat diatasi sangat penting untuk remediasi. PostgreSQL tidak mendapatkan bantuan seperti itu, dan itu luar biasa untuk Anda.
Kontrol Konkurensi Multi-versi bagus untuk Anda
PostgreSQL memilih metode kontrol konkurensi yang paling cocok untuk beban kerja INSERT dan SELECT yang tinggi.
Sangat mudah untuk mendesain PostgreSQL, dengan mengingat batasan untuk overhead pelacakan untuk
PERBARUI dan HAPUS. Biasanya, jika Anda menghargai data Anda, Anda harus belajar menyukai keamanan data yang diberikan PostgreSQL kepada Anda .
DDL berpartisipasi dalam transaksi menggunakan PostgreSQL. Migrasi bekerja sepenuhnya atau tidak sama sekali (jenis terburuk dari tidak berfungsi adalah hampir berhasil). Harness pengujian sangat mudah dibuat. Perlu mengatur ulang harness pengujian? Hanya ROLLBACK.
PostgreSQL mendukung bentuk isolasi transaksi yang sesuai standar, termasuk serialisasi, read commit, dan readable berulang. Metode ini memberikan kepatuhan ACID lengkap.
PostgreSQL melakukan segalanya
Jadi, Anda ingin NoSQL, Riak, REACT, Redis, Mongo, dll? PostgreSQL melakukan semua itu. Diakui tidak dengan semua lonceng dan peluit dari semua produk asli. Misalnya, PostgreSQL tidak membuat pecahan baru untuk Anda untuk semua itu. Itu masih proses manual. Tapi sekali lagi, selalu ada pg_partman. . .
Anda ingin menyimpan data kolom? Bagaimana dengan hstore? Anda tidak ingin melatih kembali staf Anda? Masukkan bahasa pilihan Anda dan teruslah menggunakan truk. Anda ingin replikasi parsial? Streaming Replikasi Logis adalah untuk Anda.
Saya akan kesulitan memikirkan fitur yang saya inginkan yang tidak dimiliki PostgreSQL, atau bahwa tidak ada ekstensi terkenal untuk disediakan.
Anda ingin mengekstrak data dari sistem lain? PostgreSQL memiliki koleksi objek federasi paling dinamis dari database mana pun. Mereka menyebutnya pembungkus data asing, dan Anda dapat menghubungkan PostgreSQL ke buaya dengan lakban dan ikatan zip. Perlakukan apa pun seperti itu data Anda.
Menghubungkannya ke peta
Komunitas PostGIS bisa dibilang lebih besar dari komunitas PostgreSQL itu sendiri. Kemampuan pemetaan PostgreSQL menempatkannya dalam kelas tersendiri, bahkan dibandingkan dengan alternatif yang sangat mahal.
Proyek PostGIS memilih PostgreSQL sebagai platform karena kemudahan ekstensibilitas dan kemampuan pengayaan data yang ekstensif. Kemampuan ini secara langsung diekspos untuk dimanfaatkan oleh proyek lain. Mereka juga tidak dijawab oleh vendor lain, komersial atau open source.
Pada akhirnya, Anda dapat menghubungkannya dengan apa saja.
PostgreSQL berkembang dan memimpin dalam open source
Proyek PostgreSQL adalah salah satu organisasi yang paling terlihat dalam perangkat lunak sumber terbuka. Dengan komunitas yang besar dan tumbuh dengan kecepatan yang luar biasa, segala kekurangan yang dimilikinya sekarang bisa dibilang akan dikalahkan dalam kerangka waktu yang hanya bisa diimpikan oleh vendor lain.
Fitur kualitas perusahaan tambahan diumumkan secara harfiah setiap hari, dan staf untuk memelihara fitur tersebut dipilih sendiri dari kumpulan orang jenius yang ingin dipekerjakan oleh setiap perusahaan, dan jumlahnya tidak cukup untuk digunakan.
PostgreSQL membangun solusi yang stabil selamanya
PostgreSQL memiliki replikasi logis yang dibangun ke dalam inti. Ini memungkinkan migrasi lintas versi. Baca itu lagi. Anda tidak terkunci dalam versi perangkat keras atau perangkat lunak tertentu. Solusinya dapat ditingkatkan tanpa batas.
Selain itu, PostgreSQL didukung di banyak platform, termasuk versi Linux yang sangat stabil. Apakah Anda memerlukan solusi yang melampaui ROI 3~5 tahun pada umumnya? PostgreSQL akan bertahan selamanya, bahkan jika Anda tidak pernah memutakhirkan perangkat keras sama sekali. Dan biaya untuk itu mudah dihitung. $0.
Deklaratif lebih baik daripada imperatif
Bahasa database umumnya deklaratif. Artinya, Anda menulis kueri dalam bahasa bawaan pilihan Anda, menjelaskan hasil yang ingin Anda lihat. Basis data mencoba memecahkan kode niat Anda, dan memberikan hasil yang sesuai. Ini adalah dasar dari semua model pemrograman deklaratif. Di PostgreSQL, ini mengarah pada pemetaan fungsi ke kata kunci dalam bahasa SQL, terkadang dengan beberapa pilihan algoritme untuk cara mengimplementasikan setiap deklarasi secara tepat.
Dalam argumen kuno tentang model pemrograman imperitif vs. deklaratif5, saya menyadari bahwa pemrograman deklaratif hanyalah pemrograman imperatif dalam penyamaran tipis. Setiap token deklaratif dalam bahasa query database akhirnya memetakan ke satu atau beberapa algoritma yang menerapkan deklarasi dalam istilah imperitive. Dengan demikian, ketidakcocokan impedansi yang ditentukan oleh Henrietta pada akhirnya ada di benak pengembang. Artinya, jika pengembang akan berpikir persis seperti yang dipikirkan oleh pemrogram fungsi basis data, maka tidak akan ada ketidakcocokan.
Jadi bagaimana model deklaratif pada akhirnya bisa lebih baik daripada model imperitive, mengingat yang satu hanyalah fitur panggilan dari yang lain? Senang Anda bertanya, karena itu membawa saya ke poin saya.
Pengembang PostgreSQL lebih pintar dari Anda. Saya tidak bermaksud untuk bercanda atau malu-malu. Secara harfiah ribuan kontributor telah membuat jutaan kontribusi untuk proyek PostgreSQL, banyak dari mereka sebagai peningkatan kontribusi orang lain. Kemungkinan apa pun yang Anda pikirkan di atas kepala Anda lebih baik daripada apa yang telah diterapkan sangat rendah. Dan, bahkan jika pemikiran Anda lebih baik, Anda harus menyumbangkannya ke proyek PostgreSQL untuk kepentingan semua, sehingga meningkatkan standar untuk semua orang.
Jadi, apa yang membuat PostgreSQL begitu luar biasa? Mindshare di seluruh dunia tanpa pertimbangan perusahaan. Ribuan pengembang bekerja ratusan ribu jam untuk membuat pilihan algoritmik yang lebih baik. Jadi perangkat lunak Anda menjadi lebih baik setiap rilis, biasanya tanpa harus melakukan sesuatu yang khusus dari Anda.
Bukankah itu sifat perangkat lunak secara umum, kata Anda? Baiklah. Tetapi tidak mendekati sejauh itu ketika seluruh dunia terlibat dalam proyek Anda. PostgreSQL menikmati tempat yang sangat menonjol di komunitas open source. Vendor komersial tidak akan pernah bisa mengikuti laju perubahan yang dapat diberikan oleh proyek sumber terbuka pada tingkat ini. Migrasi ke open source (dan khususnya PostgreSQL) hadir untuk membuktikannya.
Fitur-fiturnya terus bergulir. Hanya ada sedikit hal yang tersisa yang dapat ditunjukkan oleh vendor komersial sebagai keuntungan tersendiri. Diantaranya adalah dukungan SMP, replikasi dua arah dan alat eksternal. Coba tebak apa yang sedang dikerjakan komunitas sekarang, dan kemungkinan besar akan dirilis dalam beberapa tahun ke depan?
Perpanjang PostgreSQL sesuka Anda
PostgreSQL memiliki komunitas penulis yang dinamis yang menulis perangkat lunak tambahan. Ini termasuk memasukkan bahasa apa pun yang Anda suka, dan menggunakannya untuk memperluas PostgreSQL dengan cara apa pun yang tampaknya membantu. Apakah Anda menyukai penanganan string Perl? Oke, lalu gunakan itu. Bagaimana dengan dukungan peta Python? Tentu, cukup colokkan python dan pergi ke kota. Ingin menulis layanan web menggunakan back end PostgreSQL? Itu luar biasa, dan PostgreSQL akan membantu. JSON? Oke. XML? Anda bertaruh. PostgreSQL memiliki dukungan langsung untuk semua itu dan lebih banyak lagi. Jika Anda dapat memikirkan bahasa yang berfungsi dengan baik, hubungkan ke PostgreSQL dan Anda dapat memilikinya di sisi server.
Anda dapat membuat fungsi Anda sendiri, tipe data, operator, agregat, fungsi jendela, atau apa pun lainnya. Tidak melihat fitur yang Anda sukai? Menjiplak dan menyesuaikannya dari kode sumber. Anda bebas melakukannya karena lisensi.
PostgreSQL juga menyediakan beberapa fungsi kait yang memungkinkan Anda memperluas basis data tanpa harus melakukan pemrograman yang ekstrem.
Kemampuan untuk mengasimilasi fitur apa pun dari bahasa lain apa pun adalah unik untuk PostgreSQL. Anda dapat menyediakan fitur apa pun menggunakan pustaka standar apa pun yang ada. Anda dapat mengikuti standar, mengikuti perubahan, tetap memperbarui PostgreSQL saat masih aktif, dan Anda dapat melakukan semuanya secara gratis.
Menjadi besar dan melebar
PostgreSQL memiliki beberapa fitur untuk memaksimalkan platform perangkat keras yang telah diberikan. Partisi, eksekusi paralel, indeks parsial, tablespace, cache, dan rutinitas pemeliharaan paralel non-blocking (hampir semua yang ada di PostgreSQL memunculkan kata kunci CONCURRENTLY belakangan ini).
Ketika itu tidak cukup untuk Anda, maka replikasi streaming fisik akan membuat banyak membaca siaga untuk Anda dengan harga murah. Sharding, memcache, antrian, penyeimbangan beban, dan penyatuan koneksi semuanya berfungsi dengan PostgreSQL. Masih kurang? Bagaimana dengan replikasi streaming logis? Anda ingin melakukan geoshard database di seluruh dunia, kata Anda? Selamat datang di replikasi dua arah.
Dan label harganya masih $0.
Indeks semua itu
PostgreSQL mendukung daftar indeks yang sangat besar sehingga membingungkan pikiran untuk mengetahui cara menggunakan semuanya. GiST, SP-Gist, KNN Gist, GIN, BRIN, dan Btree semuanya tersedia. Dan masih banyak lagi yang bisa didapat melalui sistem ekstensi, seperti filter Bloom dan lainnya.
PostgreSQL dapat menggunakan ini dengan indeks yang digerakkan oleh fungsi, indeks parsial, indeks yang mencakup dan pencarian teks lengkap. Dan fitur-fitur yang diperluas ini tidak saling eksklusif. Anda dapat menggunakan semuanya secara bersamaan.
Gulung, Gulung
Beberapa teknologi yang telah disebutkan menjadikan PostgreSQL sebagai platform integrasi dan distribusi data yang fantastis. Berbagai bentuk replikasi, dikombinasikan dengan berbagai bentuk federasi, menyediakan teknologi push dan pull untuk hampir semua jenis sistem data.
Ini dapat digabungkan dalam konfigurasi tak terbatas untuk menjembatani solusi penyimpanan database. Semua itu tanpa memerlukan paket pemrosesan ETL/ELT. PostgreSQL hanya melakukannya. Basis data kebenaran sumber tunggal tercepat di planet ini melakukannya dengan tidak memindahkan data keluar dari sistem sumber sama sekali. Ini berarti data selalu terkini, dan waktu respons dapat dikelola.
Jika Anda tidak tahan dengan sistem sumber yang tidak dapat diandalkan atau ingin kinerja yang sedikit lebih baik di sisi kueri, Anda juga masih dapat menyimpan data secara berkala dengan tampilan yang terwujud, yang dapat diperbarui saat masih dalam kueri.
Lisensi terbuka lebar
PostgreSQL memiliki lisensinya sendiri yang sebagian besar didasarkan pada lisensi BSD. Hal ini memungkinkan kebebasan penggunaan dan distribusi yang lebih besar lagi.
Lisensi berlaku untuk semua kode proyek utama, ekstensi kontribusi utama, pustaka klien, manajer koneksi, dan sebagian besar alat terkait.
Ini sangat permisif, ditulis dalam bahasa Inggris biasa, dan tidak tersedia untuk dibeli.
Dokumentasi fantastis
Proyek PostgreSQL mengharuskan setiap pengembang yang mengirimkan kode akan memberikan dokumentasi untuk proposal tersebut. Proposal ini digunakan untuk membuat dokumentasi fitur yang tersedia dalam beberapa format. Dokumentasi ini juga digunakan dalam evaluasi fitur itu sendiri, dan sebagai referensi untuk mengembangkan fitur di masa mendatang.
Secara keseluruhan, ini berarti bahwa PostgreSQL hidup dalam dokumentasi. Ada banyak pengembang untuk PostgreSQL yang telah belajar coding dalam C, cara kerja database, dan bagaimana proyek dikelola dengan bekerja dengan proyek PostgreSQL. Dokumentasi ini tidak ada duanya.
Pengembangan yang didorong oleh pengujian
PostgreSQL diuji secara ekstensif. Tidak, itu tidak mengatakannya dengan cukup kuat. PostgreSQL diuji secara mendalam. Setiap bug dipenuhi dengan tes untuk memverifikasi keberadaannya, dan kode ditulis untuk memenuhi tes. Fitur baru ditulis dengan membuat pengujian (dan dokumentasi) terlebih dahulu, kemudian dikodekan hingga fitur tersebut muncul.
Pengujian ini diintegrasikan ke dalam build farm untuk regresi, jadi bug tidak (kembali) muncul di versi PostgreSQL yang akan datang. Itu berarti bahwa setiap pengujian (yang masih terkini) dijalankan untuk setiap versi PostgreSQL untuk setiap siklus pembangunan. Itu banyak pengujian, dan memastikan bahwa PostgreSQL tetap menjadi database paling stabil yang tersedia.
PostgreSQL hanya dirilis ketika SEMUA tes regresi lulus. Ini menyediakan rilis "0 bug yang diketahui".
Internasionalisasi dan Lokalisasi
Pengembang PostgreSQL datang dari seluruh dunia. Mereka telah bekerja dalam banyak bahasa asli sejak dimulainya PostgreSQL sebagai proyek lulusan perguruan tinggi. Internasionalisasi dan pelokalan telah dimasukkan ke dalam PostgreSQL sebagai praktik standar, bukan hanya karena PostgreSQL mulai menarik pasar global komersial.
Sementara PostgreSQL mendelegasikan beberapa internasionalisasi ke sistem operasi untuk alasan kompatibilitas, sebagian besar terjemahan disematkan ke dalam sistem, memberikan pengalaman transisi bahasa yang mulus.
Operasi awan
PostgreSQL bekerja dalam arsitektur cloud menggunakan alat yang memungkinkan, kubernet, dan berpemilik dari beberapa vendor cloud. Ada beberapa implementasi cloud asli untuk dipilih agar sesuai dengan arsitektur Anda.
Jika Anda ingin memperlakukan server seperti ternak, bukan hewan peliharaan, PostgreSQL juga menyediakannya untuk Anda.
Kepatuhan Standar
PostgreSQL telah menjadi standar yang difokuskan selama masa proyek. Sejak PostgreSQL berasal dari program pascasarjana Universitas, PostgreSQL telah digunakan sebagai implementasi referensi untuk banyak standar SQL.
PostgreSQL mengimplementasikan SQL/Med, dan ANSI SQL.
Menurut dokumentasi fantastis, “PostgreSQL mendukung sebagian besar fitur utama SQL:2016. Dari 179 fitur wajib yang diperlukan untuk kesesuaian Core penuh, PostgreSQL setidaknya memenuhi 160.” Ini lebih dari hampir semua mesin database lainnya.
Fitur Bahasa
PostgreSQL mengimplementasikan ekspresi tabel umum (CTE), struktur kontrol bahasa (jika, untuk, kasus, dll.), penanganan kesalahan terstruktur, dan semua manfaat yang Anda harapkan dari bahasa prosedural yang matang.
Apakah Anda sudah yakin?
Saya masih dapat berbicara tentang komunitas fantastis dari grup pengguna, saluran IRC, situs web dengan solusi, artikel blog, dan mentor. Saya bisa menjadi filosofis tentang cara database itu lintas platform, lintas arsitektur, dan lintas budaya. Ada berjam-jam presentasi, video, dan kuliah.
Atau Anda bisa mengunduhnya, dan lihat apakah itu lebih besar dari imajinasi Anda. Saya pikir Anda akan sangat terkejut.