Ini akan sedikit kasar, tapi saya benar-benar kesal dengan perangkat lunak di mana orang mencoba untuk menciptakan bahasa query mereka sendiri. Kami sudah memiliki satu triliun ORM yang berbeda, satu triliun database lain dengan bahasa permintaan kami masing-masing, dan satu triliun produk SaaS lainnya, untuk akses yang Anda perlukan untuk menguasai beberapa DSL reguler yang mereka ciptakan.
Kembalikan SQL saya. Bahasa ini bisa dimengerti oleh semua orang, sudah ada sejak tahun 70-an dan selama ini berhasil menjadi standar. Mudah dibaca dan dapat digunakan oleh siapa saja, dari bisnis hingga insinyur.
Namun, sebagai gantinya, saya harus belajar banyak "bahasa permintaan sampah" yang berbeda karena orang masih mencoba menemukan kembali roda.
Mari kita mulai dengan ORM. Fitur utama mereka adalah pengurangan waktu pengembangan. Tetapi alih-alih menulis SQL yang dapat dimengerti oleh semua orang, saya harus mempelajari dokumentasi ORM tertentu untuk mengetahui cara menulis pertanyaan saya untuknya. Selain itu, saya harus menghabiskan waktu debugging untuk mencari tahu mengapa ORM ini menerjemahkan permintaan saya ke beberapa SQL mengerikan yang bergabung dengan 17 tabel menggunakan pemindaian penuh mereka. Alih-alih berpegang pada standar SQL, di mana cukup mudah untuk berbicara tentang efisiensi ("coba gunakan kolom yang diindeks dalam predikat", "jangan berlebihan dengan bergabung dalam satu permintaan", dll.), Saya harus berurusan dengan lapisan berlumpur tambahan, yang menyembunyikan permintaan SQL asli. Pada akhirnya, Anda akan dibiarkan dengan kelas data bengkak tingkat tinggi, daripada berurusan dengan struktur database yang mudah dimengerti dan diproses.
Belum lagi ada sekitar lima ribu ORM, jadi alih-alih belajar SQL, begitu saya harus belajar 34 ORM yang berbeda. Ini tidak berarti bahwa orang belajar ORM, itu berarti bahwa mereka tidak belajar SQL.
Dan semua produk SaaS ini. Saya baru saja mengambil beberapa dari tumpukan perusahaan saya:
Apa yang bisa lebih buruk daripada dump data? Tumpukan data yang menciptakan bahasa kueri sendiri.
Dalam keadilan, harus dikatakan bahwa beberapa pertanyaan ini masih seperti SQL, atau setidaknya mengklaim peran ini, tetapi dengan kebiasaan mereka sendiri yang membuat saya membuang semua yang saya tahu tentang SQL sebelumnya. Kadang-kadang sedemikian rupa sehingga pengetahuan masa lalu inilah yang bisa berubah menjadi praktis tidak berharga.
Selain itu, setiap basis data juga mencoba untuk menemukan kembali bahasa permintaan. Mongo memiliki bahasa query yang mengerikan , yang tidak pernah saya mengerti, Lucene memiliki bahasa sendiri , dll.
Apa yang saya minta? Tidak terlalu banyak:
- Setiap produk SaaS harus menyediakan kemampuan untuk menyalin semua data ke dalam database SQL saya sendiri (dalam kasus saya Postgresql / Redshift). Saya tidak ingin menggunakan DSL mereka. Mungkin Uni Eropa akan dapat menetapkan ini sebagai persyaratan selanjutnya setelah adopsi arahan layanan perbankan terbuka PSD2 .
- Diperlukan 30 tahun moratorium untuk menciptakan bahasa permintaan yang baru.
- Kita perlu menghilangkan mitos bahwa ORM membuat kode lebih bersih. Beralih ke SQL murni dan Anda akan mendapatkan interaksi yang lebih sederhana dan lebih transparan dengan database Anda.
Itu saja. Saya mengerti bahwa saya seperti penggerutu tua, tetapi saya mengambil risiko ini pada diri saya sendiri.
PS
Posting ini menerima jumlah pandangan yang cukup, sehingga harus menimbulkan minat yang besar di kalangan masyarakat. Ikuti diskusi tentang Peretas Berita dan komentar tentang Reddit r / pemrograman .