Apa yang terjadi dengan popularitas MySQL dan PostgreSQL? Diskusi mitap

Pada 24 April, kami menjadi tuan rumah mitap online MySQL @ Scale pada masalah skalabilitas MySQL . Pembicara dari Avito, Badoo dan ECOMMPAY berpartisipasi: Andrey Aksenov (penulis Sphinx, pemimpin infrastruktur pencarian), Evgeny Kuzovlev (CIO ECOMMPAY), Vladimir Fedorkov (pakar MySQL / DBA di ECOMMPAY) dan Nikolai Korolev (pakar MySQL / DBA di Badoo).

Mitap keluar lama, jadi kami memutuskan untuk menerbitkannya di bagian-bagian, dan mulai dari akhir - dengan diskusi yang sangat menarik dalam pendapat kami tentang popularitas MySQL dan PostgreSQL, alasan untuk popularitas PostgreSQL, ORM, ketidakcocokan impedansi, indeks fraktal, kemarahan, penolakan, tawar menawar dan pengaturan vakum otomatis dan masalah lain dalam memilih DBMS oleh pengembang buku tamu di NodeJS. Perhatian! Tidak ada kosakata yang sangat disensor, sejumlah generalisasi yang salah telah diganti, dan setiap kebetulan adalah acak dan sama sekali tidak bersifat ofensif.

Alexey Rybak : Ambil MySQL vs PostgreSQL, bukan hanya holivar, tetapi hal yang cukup terukur dan terlihat. Ada analitik, saya melihat tidak hanya pada satu indikator. Sekarang saya ingat dua hal di kepala saya. Kami memiliki grup Facebook tentang mengelola dan mengembangkan proyek-proyek besar. Ada beberapa ribu orang. Saya melakukan jajak pendapat tentang PostgreSQL atau MySQL, termasuk yang memiliki cloud, menggunakan non-cloud, karena ini juga merupakan topik baru, sangat panas dalam beberapa tahun terakhir.

Dan ternyata Postgres (sedikit) di depan MySQL, dan bagi saya itu pada dasarnya semacam cerita baru, karena tampaknya proporsinya harus berbeda. Dan ada jajak pendapat yang dilakukan di konferensi HighLoad, mereka diterbitkan. Saya tidak memiliki perbandingan sistematis langsung dari tahun ke tahun, tetapi jelas menunjukkan bahwa Postgres di beberapa titik dalam hal jumlah jawaban untuk pertanyaan "apa database utama Anda" menyusul dan menyalip MySQL.

Saya berbicara dengan Petya Zaitsev. Sudah lama sekali, mungkin dua tahun lalu, dia datang ke Moskow. Ini pada dasarnya semua pikiran Petya. Pikiran sedemikian rupa sehingga, pertama, banyak yang telah dilakukan untuk memperkenalkan berbagai jenis solusi manajemen atau operator dalam sejarah cloud. Dan kesenjangan awal antara pilihan MySQL atau Postgres, tampaknya diratakan, dalam arti bahwa jika semuanya lebih sederhana dengan MySQL, butuh dan berhasil, maka Postgres harus memiliki banyak tarian dengan rebana terlebih dahulu sehingga hal ini akan sembuh . Dan di lingkungan cloud Anda memiliki sesuatu: mengklik tombol - semuanya muncul. Yaitu, di satu sisi, celah ini telah dihapus. Kemudian persepsi umum tertentu dalam hal lisensi, hak milik, bukan hak milik, bla bla bla, juga terpengaruh. Secara kasar, jika Anda menyederhanakannya sepenuhnya, jika saya tidak peduli melakukannya dengan satu tombol, saya akan memilih apa yang lebih bebas, yah,atau mereka mengatakan itu gratis. Sebenarnya, itu tidak jelas, tapi tetap saja. Apa yang dikemas dalam kotak ideologis lebih tepat. Ini satu cerita.

Dan cerita kedua adalah bahwa ini khusus untuk Rusia, karena saya mengandalkan data, setelah semua, bukan dunia, tetapi Rusia, mungkin di dunia ceritanya sedikit berbeda. Ada sebuah kisah yang pada suatu saat post-congressors bersatu dengan cukup kuat, dan mulai sangat menyukai PR. Dan mereka menciptakan kelompok kerja dan konferensi, dan selama beberapa tahun telah ada perusahaan yang benar-benar membuat solusi perusahaan Rusia.

Pertama-tama, apa yang Anda pikirkan, di Rusia, di dunia, adalah penyeimbangan kembali antara MySQL dan Postgres, dan jika demikian, apa alasannya, berapa banyak alasannya yang saya tunjukkan rasional, masuk akal, mungkin ada yang lain penyebab?

Evgeny Kuzovlev: Sejujurnya, saya tidak pernah berpikir bahwa awan itu tampaknya memuluskan semua perbedaan, mungkin karena saya memiliki semua yang ada di lokasi. Bagi saya, awan adalah hal-hal yang, katakan di sana, sesuatu di Amazon, mari kita cepat-cepat mengisinya, maka itu awan bagi saya. Karena itu, dari sisi ini saya entah bagaimana tidak pernah mempertimbangkan. Tapi di sini, memang, kompleksitas berkurang.

Sebelumnya, secara kondisional, sekitar delapan tahun yang lalu, agar Postgres bekerja hanya untuk Anda, perlu menari begitu banyak dengan rebana sehingga saat ini ibu tidak berduka. Dan Anda mengeluarkan MySQL dari kotak dan itu berhasil untuk Anda. Mungkin bukan delapan, mungkin 10-12 tahun yang lalu. Memang, kompleksitas dalam Postgres ini telah sangat berkurang, dan intinya adalah operasional dan pengembangan, itu dibandingkan dengan MySQL dalam beberapa cara.

Tapi saya, misalnya, untuk diri kita sendiri, kita memecahkan masalah seperti itu, saya mencoba untuk mendekati, dan saya mencoba untuk mendekati sejauh mungkin. Kami perlu, ketika kami mulai DWH, untuk memilih mesin untuk tabel denormalized. Pada saat yang sama, tidak ada analitik di sana, analitik ada pada level yang sedikit berbeda. Ini hanya penyimpanan murni. DBMS revolusioner diperlukan untuk menyediakan, masing-masing, analisis perbandingan data.

Dan kami mendekati pertanyaan ini MySQL atau Postgres, dan terlepas dari kenyataan bahwa sumber daya operasional cukup berkualitas, kami memilih. Dan saya, misalnya, mendapat kesan bahwa Postgres, dia, Anda tahu, akademis. Seperti yang tertulis di buku teks, jadi itu akan berhasil. Dan MySQL, entah bagaimana cukup ringan dan dengan banyak peretasan. Tetapi pada saat yang sama, peretasan ini bekerja di 99% kasus. Dan tidak peduli berapa banyak orang Postgres yang memberikan tolok ukur sintetis, dalam situasi nyata, yang mencakup 99% dari penggunaan nyata basis data, MySQL menang atas pengguna biasa.

Dan plus, sungguh, sial, itu hanya nilai tambah besar dari MySQL, yang tidak memiliki vakum otomatis. Karena mengatur hal ini di Postgres, tidak semua orang bisa. Dan segera setelah pengguna ...

Vladimir Fedorkov: Kedengarannya kejam (dalam kaitannya dengan insinyur - kira-kira. AR ).

Evgeny Kuzovlev: Dan begitu pengguna mengalami vakum otomatis, mereka mulai mengalami masalah terliar. Begitulah, untuk mendapatkan degradasi sistem sebesar 60 persen, itu untuk Anda sendiri, ini adalah ...

Alexei Rybak: Tidak, saya baru saja masuk ke kartu truf.

Evgeny Kuzovlev: Baiklah, saya minta maaf. Segera ditata seolah di atas meja. Namun, saya tahu, tentu saja, kami memiliki Postgres. Kami punya banyak. Kami memiliki masalah dengan vakum otomatis, terima kasih Tuhan, tidak. Tetapi dalam karier saya, saya melewati semua kasus ini - kemarahan, penolakan, tawar-menawar, dan penyetelan vakum otomatis. Tetapi ini adalah sensasi yang menyakitkan, saya akan memberi tahu Anda. MySQL tidak menyebabkan banyak kesakitan.

Pada saat yang sama, saya sangat marah karena di MySQL saya tidak memiliki kesempatan ... Saya mau, tetapi, di sini saya memiliki indeks B-tree dan hanya itu. Dan meskipun kamu retak! Saya tidak tahu, saya tidak bisa membangun ...

Alexey Rybak: Ada indeks hash.

Evgeny Kuzovlev: Ya. Tapi, mari kita bandingkan jumlah indeks yang kita miliki di MySQL dan jumlah indeks yang kita miliki di Postgres. Ini tidak ada bandingannya. Pada saat yang sama, hal yang sama dapat dikatakan tentang mesin meja. Di MySQL kami memiliki mesin meja, Anda ingin, saya tidak tahu, Anda akan pergi, mengambil beberapa TokuDB, dan Anda akan menikmati dalam satu persen kasus dan dalam 99% kasus Anda tidak mengerti mengapa Anda mengambilnya ...

Andrey Aksyonov: apusan dengan fraktal.

Alexey Rybak:Nah, tunggu dulu, dengan mesinnya, ini juga tipuan. Sebelumnya, ketika ditemukan, rasanya seperti hal yang keren. Tetapi pada kenyataannya, tidak ada yang benar-benar berakar.

Andrey Aksyonov: Mengapa tidak berakar? InnoDB telah berakar.

Alexey Rybak: Tidak, maksudku, selain InnoDB. Artinya, InnoDB telah menjadi standar saja. Dan semua cerita lain dengan potongan kolom, dengan beberapa potongan yang lebih spesifik, seperti Toku. Anda benar, saya bahkan tidak tahu di mana persentase ini. Artinya, mesin ternyata menjadi hal yang meragukan.

Evgeny Kuzovlev: Anda tahu, psikologi manusia, sedemikian rupa sehingga terkadang kemungkinan pilihan lebih penting daripada pilihan itu sendiri. MySQL memberikannya.

Alexei Rybak: Orang tidak memilih MySQL melawan Postgres, karena ada mesin yang berbeda. Saya pikir ini adalah yang terakhir ...

Vladimir Fedorkov: Karena ketika orang memilih MySQL melawan Postgres, jika ada setidaknya seseorang di perusahaan yang berada di belakang Postgres, ia akan dipilih karena itu adalah agama.

Alexey Rybak: MySQL juga sebuah agama.

Vladimir Fedorkov: Tidak, tidak berarti.

Andrey Aksyonov:Tidak ada yang melempar poin penting lainnya, yang disebut "kontingen telah tumbuh." Persyaratan secara alami telah tumbuh di lapisan tertentu. Pertanyaan awal adalah mengapa persentase Postgres tumbuh, persentase palsu palsu yang disebut MySQL ini terus menurun. Dan, tentu saja, pada akhirnya, Pada prinsipnya, planet ini sama, dinosaurus akan menginjak-injak dan MongoDB akan mengalahkan semua orang, tetapi ini di masa depan, tetapi skala web masih penting, karena persyaratan yang dibuat aplikasi, mereka berubah dalam waktu - sekali, dan pada satu titik Postgres matang, untuk bagiannya, dan satu set persyaratan dari pengembang jatuh tempo pada bagian mereka

Alexei Rybak: Dengar, aku tidak percaya, maafkan aku. Katakan padaku, katakanlah secara khusus ...

Andrey Aksyonov: Ayo secara khusus. Lihat, 1995 ...

Alexey Rybak:Perusahaan-perusahaan yang awalnya meluncurkan produk-produk webscale yang dirancang untuk dudes yang sama ... Ya Tuhan, keluar dari kepalaku! Baru saja dipanggil ... Sekarang, ini siapa yang akan mengalahkan semua orang ...

Andrey Aksyonov: Mongo akan menang.

Alexey Rybak: Mongo, ya, ya, ya, maaf, ya. Jadi, Mongo awalnya punya dua hal. Pertama, toko objek, jangan berpikir, singkatnya, ORM, cukup tulis, simpan dan tidak perlu apa-apa, SQL tidak perlu tahu, singkatnya, itu saja. Ini menyebabkan beberapa orang, persyaratan mereka tidak berubah, mereka sederhana: ya, tapi itu mungkin, SQL tidak bisa diajarkan, wow! Keren sekali! Dia hanya berkata: selamatkan objek itu, dan dia meninggalkanku di suatu tempat, kelas! Ini yang pertama.

Kedua apa? Jangan berpikir tentang toleransi kesalahan, pada awalnya kita bisa melakukannya di beberapa DC dan seterusnya. Awalnya itu omong kosong pemasaran. Kemudian mereka memutar sesuatu, dan, pada prinsipnya, seperti yang saya mengerti, dalam versi terbaru sekarang (berfungsi dan) banyak di mana benar-benar Mongo digunakan dalam instalasi besar.

Maksud saya, ini adalah contoh yang baik ketika Anda memasuki pasar, pasar lain, setelah merasakan dua kemungkinan ini, bahwa, pertama, orang-orang yang tumbuh dalam paradigma pemrograman dalam bahasa objek, secara umum, ketidakcocokan impedansi ini, Ini adalah kisah mendasar. Lebih mudah bagi mereka untuk menggunakan alat yang mengatakan: "selamatkan aku," aku akan melakukan segalanya untukmu. Dan pada saat yang sama, di luar kotak, hal-hal seperti itu terkait dengan antrian, dan sesuatu yang lain.
Di sini saya akan mengerti, terlepas dari kenyataan yang saya katakan lagi, Anda troll, Anda mengaturnya sebagai semacam kasus hiperbolisasi, relatif berbicara, semacam fiksi. Namun demikian, kasus ini, katanya persis tentang itu, bahwa Anda dapat pergi dengan produk seperti itu, menemukan ceruk seperti itu, dan dia akan terbang, menginjak-injak, meledak. Saya tidak mengerti apa yang disarankan Postgres atau bagaimana mereka berubah dan apa persyaratan Postgres tiba-tiba, menurut logika Anda, menjadi begitu menarik.

Andrey Aksyonov: Saya ulangi sekali lagi. Kecambah di kedua sisi; Postgres pada parameter tertentu, di satu sisi, dan pengembang pada parameter tertentu, di sisi lain. Sekali lagi, 1995. Anda seorang pengembang. Anda duduk di B ... ( Atyrau ), dapatkan $ 15, dan ini setahun. Dan Anda menulis c ***** ( tidak berharga) buku tamu di Perl. Dan kemudian Anda bangun proses seleksi - database mana yang harus dipilih. Anehnya, baik MySQL dan Postgres sudah ada. Dan jika tidak, maka mereka akan muncul pada tahun 1996. Tapi Anda, s *** (wanita dari keluarga anjing) , pengembang buku tamu tentang Perl di B ... ( Syzran )! Anda memiliki tugas sebesar ini, Anda menyelesaikannya.

Satu-satunya patokan yang dapat Anda pikirkan adalah berapa banyak permintaan "per lingkaran" per detik yang akan Anda hisap. Dan "pada lingkaran" permintaan per detik pada saat ini Postgres menarik empat setengah kali lebih sedikit. Persis seperti itu, hanya karena kau bercinta. Setelah itu, Anda melihat: baik, ya, tetapi dalam transaksi Postgres, dan di MySQL 3.23 MyISAM. Tapi jujur ​​saja, transaksi untuk buku tamu saya tidak **** bagi saya (sama sekali)Tidak dibutuhkan. Pilih MySQL dengan kuat.

Sekarang sedikit waktu telah berlalu, 25 tahun. Pada prinsipnya, Anda masih tinggal di B ... ( Tuymazy ), Anda tidak lagi menulis di Perl, tetapi di NodeJS, gaji Anda telah diindeks, karena itu hanya inflasi dolar, dan sekarang 15 dolar, dikalikan dengan inflasi, - 45, dan ini sebulan. Anda memiliki masalah yang sama, ditambah 100.500 paket di NodeJS. Dan paket NodeJS 100.500 ini perlu menyimpan seluruh negara mereka di suatu tempat, permintaan kompleks tentang manajer paket, dan sebagainya.

Dan tiba-tiba Anda memiliki persyaratan, yang Anda gigit ke basis data, telah tumbuh sedikit. Misalnya, karena alasan tertentu Anda tidak dapat hidup dan tidak ingin hidup tanpa transaksi. Suatu kebetulan yang luar biasa! Anda masih perlu bergabung. Berikut adalah beberapa indeks aneh yang mulai dipikirkan, dan bukan hanya B-tree otomatis, seperti: oh, sial! Tapi alangkah baiknya memiliki indeks geografis, beberapa R-tree, atau, katakanlah, Tuhan menyelamatkan kita, pohon fraktal.

Ini telah mengubah serangkaian persyaratan oleh pengembang, kali. Dan di sisi lain, Postgres, yang pada tahun-tahun kuno secara alami dengan sederhana melambat pada "lingkaran" sederhana ( permintaan).), yang bodoh dan dibutuhkan oleh semua orang, ia sangat meningkat selama periode singkat 25 tahun terakhir, untuk bagiannya. Dan mereka bertemu tiba-tiba, dan semakin banyak orang terkejut menemukan itu, op! Kamu lihat! Tapi Postgres tidak terlalu buruk, ternyata! Dan itu agak lebih baik untuk kebutuhan saya. Hipotesis saya persis seperti itu, secara kasar, pada awal MySQL ...

Alexey Rybak: Dengar, tapi saya tidak mengerti mana yang lebih baik? Apa yang lebih baik Saya mengerti bahwa mereka setara dalam sesuatu, tetapi apa yang lebih baik, saya tidak mengerti.

Andrey Aksyonov: Jadi mereka berdua lebih buruk.

Alexey Rybak: Daripada Mongo?

Andrey Aksyonov:Tentu saja, daripada, dalam tanda kutip, "Mongo". Tetapi ini adalah topik untuk seluruh percakapan terpisah, dan utas percakapan terpisah yang disebut "di mana masa depan yang cerah."

Vladimir Fedorkov: Tidak ada masa depan yang cerah. Basis datanya jahat. Segera setelah Anda memilih database, Anda menandatangani sendiri hukuman mati. Jangan gunakan basis data. Tulis file.

Alexey Rybak: / dev / null! Tulis ke / dev / null, teman, dev / null adalah skala web.

Andrey Aksyonov: Ya. Baiklah, oke, Anda juga bisa menjalankan / dev / null secara prinsip pada kinerja, kami bisa.

Alexey Rybak: Oke, teman. Semua orang mungkin sangat lelah. Kami telah berbicara selama lebih dari dua jam.

Andrey Aksyonov: Tapi pertanyaan yang sangat menarik belum diajukan.

Nikolay Korolev:Baru saja dimulai.

Alexey Rybak: Serius? Apakah Anda ingin melanjutkan?

Andrey Aksyonov: Saya juga tidak menuangkan wiski.

Alexey Rybak: Tapi ini pertanyaan besar mengapa Anda tidak melakukannya.

Andrei Aksyonov: Saya tidak mempersiapkan, tentu saja ...

Vladimir Fedorkov: Jadi mereka mengatakan bahwa penyiaran, penyiaran, tidak ada yang mustahil, Anda tidak bisa bersumpah, Anda tidak bisa gemuk.

Alexey Rybak: Ah! Teman! Setiap orang yang menonton siaran, terima kasih banyak telah bersama kami. Kami memulai bagian tidak resmi, di mana ia mematikan ... Sekarang ... Saya menghapus aliran Live. Terima kasih banyak, terima kasih untuk tamu-tamu kami - Vladimir, Andrey, Eugene, Nikolai. Streaming, selamat tinggal, sampai jumpa.

(akhir rekaman)

Rekaman lengkap mitap dapat dilihat di youtube:



Dalam waktu dekat, kami juga akan mempublikasikan bagian lain pada infrastruktur, pola penskalaan / toleransi kesalahan, dan kondisi sistem-ekosistem MySQL.

Jika Anda menyukai format ini, maka Jumat ini akan ada reli lain yang didedikasikan untuk infrastruktur kontainer, masih ada tempat untuk itu . Peserta: Evgeny Potapov (CEO ITSumma), Dmitry Stolyarov (CTO Flant), Denis Remchukov (alias Eric Oldmann, COO argotech.io, mantan RAO UES Rusia), Andrey Fedorovsky (CTO News360.com) dan Ivan Kruglov (insinyur sistem, ex - Booking.com). Mari kita bicara tentang alat, masalah, dan prospek kontainer dan Kubernetes dalam infrastruktur modern.

Kami juga memiliki grup Facebook yang disebut "Manajemen dan pengembangan proyek IT besar" , saluran @feedmeto dengan publikasi menarik dari blog teknologi perusahaan (kebanyakan asing), dan saluran penulis @rybakalexey tentang manajemen pengembangan di perusahaan makanan.

All Articles