59 poin oleh xguru 2022-07-27 | 10 komentar | Bagikan ke WhatsApp
  • Sudah memakainya sekitar 1 tahun, dan mengganti semua proyek yang memungkinkan ke EdgeDB
  • EdgeDB adalah DB graph/relasional yang dibangun di atas Postgres
    → Mesin dasarnya tetap sama, tetapi dari sudut pandang pengguna semuanya berubah. Perubahan terbesar ada pada bahasa kueri dan tooling

Bahasa kueri

  • EdgeDB tidak memakai SQL dan menggunakan bahasanya sendiri, EdgeQL, dan ini benar-benar game changer
  • Setelah mencobanya sekali, rasanya tidak ingin kembali ke SQL lagi
    → Tipe yang kuat, berorientasi objek, deep query yang sangat mudah, dan sangat cocok dengan cara manusia berpikir saat mengueri data (karena orang tidak berpikir dalam cara melakukan JOIN)
  • Dulu pun aku bukan penggemar SQL, tetapi memang tidak ada alternatif nyata
  • Setelah belajar dan berlatih beberapa hari dengan tutorial bergaya buku yang luar biasa, aku sadar bahwa memodelkan skema DB bisa jadi pekerjaan yang menyenangkan dan ringan
    → Kompleksitas SQL hilang, dan aku jadi sadar betapa tidak efisien dan anehnya SQL sebagai bahasa kueri
  • EdgeQL mudah dipelajari, dan hanya dengan quickstart serta overview saja sudah bisa memahami sekitar 80%-nya
  • Aku sangat menyukai EdgeQL sampai berharap ini menjadi standar independen. Jadi misalnya akan keren kalau ada sesuatu seperti EdgeDBLite yang memungkinkan penggunaan EdgeQL di DB berbasis file

Tooling

  • Mengikuti pola modern di mana semuanya bisa dijalankan dengan satu binary saja (seperti Go atau Flutter)
    → Instalasi dan update server, pembuatan/penghapusan DB, REPL, migrasi, backup & manajemen proyek, dll
    → Dan dalam kebanyakan kasus, "It Just Works"
  • EdgeDB mereinvent cara berinteraksi dengan DB
    → Dengan konsep "Project", ia terhubung otomatis ke DB dan langsung berfungsi tanpa peduli DSN atau konfigurasi
    Dibandingkan dengan harus mencari-cari perintah SQL yang tepat untuk memberi root access di localhost selama lebih dari 10 tahun, ini terasa sangat menyegarkan

Fitur

  • Pemodelan relasi many-to-many yang sangat mudah
  • Embedded GraphQL (bisa terhubung langsung dari frontend)
  • Properti computed rating := math::mean(.ratings.score)
  • backlinks: menelusuri link secara terbalik
    select User.<author; mencari dari tabel yang terhubung ke User melalui field bernama author
  • uuid, collection, scalar, abstract, dan berbagai tipe lainnya (favoritku adalah cal::local_datetime)
  • Hal-hal menakutkan seperti inheritance, constraints, dan introspection

Pengalaman sejauh ini

  • Sudah memakainya sejak sekitar 1 tahun lalu. Awalnya memigrasikan proyek pribadi kecil, lalu kemudian salah satu proyek di perusahaan
  • Sebagian besar pekerjaanku adalah layanan praktis berskala kecil yang berhadapan langsung dengan pengguna, jadi kadang aku cukup beruntung bisa menanganinya sendiri dan memilih alat yang paling cocok
  • Selama memakai EdgeDB, sebagian besar pengalamannya adalah "It Just Works"
  • Kebanyakan hal mudah ditemukan, dan dokumentasinya luar biasa sehingga sangat mudah dicari (serius, ini salah satu situs dokumentasi terbaik yang pernah kulihat)

Apakah cocok untuk production

  • Sudah "dipakai di production" sejak musim gugur tahun lalu
  • Memang ada orang yang memberi makna lebih besar pada "dipakai di production" dibanding sekadar "benar-benar digunakan", tapi...
  • Saat command-line tool-nya direfaktor, aku memang harus sedikit mengubah skrip otomasi, tetapi bukan masalah besar
  • Dalam hati aku sudah siap membayar harga atas risiko sebagai early adopter, tetapi sejauh ini tidak ada masalah

Daya ekspresif EdgeQL

  • Aku terbebas dari harus terus-menerus googling soal SQL dan mencari batasan ORM serta cara mengakalinya
  • EdgeQL bisa mengekspresikan dengan tepat hal-hal yang ingin kucari dari DB, dan benar-benar bisa dibaca serta dipahami (oleh developer lain juga)
  • Kadang EdgeQL bahkan bisa menghindarkan kebutuhan transaksi. Update bertingkat ganda dalam satu kueri pun memungkinkan.
    → "Simplicity is complicated"

Migrations

  • Salah satu hal paling keren adalah fitur migrasi yang sudah built-in
  • Ubah skema lalu panggil edgedb migration create, maka file migrasi akan dibuat,
    dan di server tinggal jalankan edgedb migration apply agar langsung diterapkan
  • Migrasi saling terhubung dengan hash, jadi tidak akan terjadi kasus satu migrasi acak diterapkan sendirian lalu merusak semuanya
  • Saat membuat migrasi baru, default-nya interaktif, jadi semua perubahan dikonfirmasi di command line

Performa

  • Aku tidak menangani data dalam skala besar, jadi tidak membutuhkan DB berperforma tinggi
  • Tetapi karena memakai Postgres di bawahnya, ini tidak menjadi masalah performa dibanding DB lain
  • EdgeDB sendiri ditulis dengan Python (akan lebih bagus kalau Go, tetapi tampaknya para developernya lebih terbiasa dengan Python)

Library klien Go

  • Karena aku memakai Go, menyenangkan bahwa ada library Go native untuk EdgeQL
  • Ada library resmi untuk Typescript/Javascript, Python, dan Go, sedangkan .Net dan Elixir didukung komunitas

Upgrade

  • EdgeDB mengabstraksikan kompleksitas versi dan update server
  • EdgeDB CLI pada dasarnya menanganinya secara otomatis. Kalau ada update baru, ia akan menampilkannya lalu melakukan upgrade.
    → Mulus sampai terasa mencurigakan
  • Saat ini 2.0 RC sudah keluar, tetapi aku sama sekali tidak khawatir. Pengalaman sejauh ini membuatku percaya bahwa prosesnya akan aman dan mudah

Komunikasi dan dukungan

  • Sebagai early adopter, aku puas karena mendapat jawaban dan bantuan yang sangat cepat lewat kanal resmi EdgeDB

EdgeDB 2.0

  • Di 2.0 yang dirilis besok, ada sejumlah fitur bagus yang ditambahkan
    • EdgeDB UI: editor skema visual, REPL, dan web app lainnya
    • Group query, global schema variable, keamanan tingkat objek, Direct EdgeQL over HTTP, dll

Hal-hal yang tidak kusukai atau kuwaspadai

  • Janji soal kompatibilitas
    • Sejauh ini semuanya bagus. Minor update tidak merusak kompatibilitas
    • Akan bagus kalau ada komitmen yang jelas soal kompatibilitas
  • Set fitur yang terus bertambah
    • Sebenarnya fiturnya sudah lebih banyak dari yang kuinginkan, dan masih terus bertambah
    • Semakin kuat EdgeQL, semakin kabur batas antara DB dan server, sehingga membuatku berpikir "ini seharusnya masuk backend, atau dimasukkan ke skema DB yang pintar?"
    • Memakai embedded HTTP server lalu mendorong arah yang sepenuhnya menggantikan backend server untuk sebagian besar proyek memang tampak masuk akal, tetapi... aku hanya ingin punya DB yang stabil dengan bahasa kueri dan engine sekeren ini
  • Pokoknya, aku berharap EdgeDB tetap stabil dan konsisten, dan tidak menambah terlalu banyak fitur. Dengan set fitur saat ini saja sudah sangat bagus

Kesimpulan

  • Untuk proyek-proyek mendatang, aku tidak berniat lagi mempertimbangkan RDB tradisional
  • Kembali ke SQL terasa seperti berpindah dari Flutter ke Ncurses, atau dari Go kembali ke assembly
  • Bagiku, EdgeDB adalah kemajuan terbesar di dunia DB dalam 20 tahun terakhir.
  • Mungkin pandanganku bisa berubah setelah pengalaman yang lebih banyak, tetapi selama lebih dari 1 tahun memakainya, tidak ada satu pun hal yang mengurangi kegembiraan ini
  • Semakin lama dipakai, semakin besar kepercayaanku pada EdgeDB
  • Semua yang dilakukan tim EdgeDB untuk membangun EdgeDB sendiri, bahasanya, situs webnya, tool-nya, dan komunitasnya sangat mengesankan
    → "Mad respect to the team"
  • Dan mereka tampaknya bahkan baru mulai memanas

10 komentar

 
triumph1 2024-10-02

Berkat ini saya jadi mengenal EdgeDB dan menggunakannya dengan baik! Terima kasih~

 
extremer 2022-08-27

Sepertinya arahnya mirip dengan prisma. Saya cukup sering memakai prisma, tapi dari sisi performa ada banyak hal yang terasa kurang, jadi hasil benchmark-nya lumayan menarik ya?
Secara sintaks sih bukan gaya yang saya suka.. (saya juga pakai protobuf, dan contoh kode konversinya juga agak...)

Yang lain memang lebih suka sintaks seperti graphQL begini ya? Buat saya, ujung-ujungnya backend-nya tetap RDS, jadi nanti akan ada konversi di tengah, dan kalau itu tidak terlihat jelas saya cenderung agak enggan memakainya..

 
dextto 2022-08-14

Saya jadi tertarik setelah melihat postingan ini dan terus mempelajarinya.
Tapi mungkin karena masih tahap awal, saat menemui bagian yang buntu hasil pencariannya masih belum banyak.
Memang ada channel Discord, tetapi saya merasa akan bagus kalau para developer lokal bisa bertanya/jawab dengan lebih nyaman, jadi saya membuat satu ruang obrolan terbuka.
https://open.kakao.com/o/gtGY0Gve

 
forteleaf 2022-07-29

Saya juga ingin mencobanya, jadi saya mencatatnya.

 
ryuheechul 2022-07-28

Setelah membaca tulisan ini dan menuntaskan tutorialnya, saya jadi makin yakin.

 
yunyun0505 2022-07-28

Menarik. Ternyata tidak bisa kembali ke dunia tanpa SQL..

 
jujumilk3 2022-07-27

Menarik juga.

 
nicewook 2022-07-27

Mengesankan!

 
bbulbum 2022-07-27

Untuk kategori graphdb, saya cukup tertarik dengan ArangoDB, tetapi sepertinya saya juga perlu mencoba melihat EdgeDB.

 
xguru 2022-07-27

Pujiannya luar biasa. Mereka mengumumkan 2.0 pada 28/7 pukul 10 pagi (PT).

Rilis EdgeDB 1.0
EdgeDB - ORDB open source generasi berikutnya untuk pengembang