Lompat ke konten utama
EP 133

Ngobrolin Database

Ringkasan Episode

Bantu Koreksi

Episode ini membahas Database Scaling, khususnya perbedaan antara horizontal scaling dan vertical scaling. Topik ini diajukan oleh Mas Triad Moko melalui GitHub discussion sejak April tahun lalu. Narasumber tamu adalah Mas Doni yang sudah ketiga kalinya hadir di Ngobrolin WEB. Diskusi dimulai dengan cerita lucu tentang tagihan StreamYard yang membengkak hingga 13 juta per tahun setelah stream platform otomatis upgrade ke Pro ketika streaming ke 3 platform sekaligus. Kemudian masuk ke topik utama: database scaling. Host membahas bahwa tidak peduli seberapa cepat framework yang digunakan (Rust, Zig, Laravel), jika database query-nya lambat, aplikasi tetap akan lambat. Episode juga menyentuh perdebatan ORM vs Raw SQL, pentingnya memahami struktur data, tools untuk monitoring slow query, dan peran DBA di era modern.

Poin-poin Utama

  • β€’Horizontal scaling = menambah jumlah server, Vertical scaling = menambah spesifikasi server (CPU, RAM)
  • β€’Database sering menjadi bottleneck terlepas dari kecepatan backend framework
  • β€’Perdebatan ORM vs Raw SQL: ORM support raw query, pilihan tergantung konteks dan kebutuhan
  • β€’SQL memerlukan cara berpikir berbeda (set theory, joins, grouping) yang sulit bagi frontend developer
  • β€’Role DBA (Database Administrator) semakin langka, tugasnya sering dibebankan ke DevOps/SRE
  • β€’Tools untuk monitoring slow query: MySQL slow query log, pgAdmin untuk PostgreSQL, Prometheus + Grafana
  • β€’EXPLAIN ANALYZE untuk melihat execution plan dan mengidentifikasi query yang lambat
  • β€’APM (Application Performance Monitoring) seperti New Relic mahal, alternatif open source: Prometheus + Grafana

[MUSIC]

Dapatkan hanya di Domesticia

[MUSIC]

[TING TONG]

Hello, hello, hello

Selamat malam

Wah lupa disembunyain nih narasumbernya

Ada songsportnya

Mbak Eka, kok berubah?

[TING TONG]

Hello, hello semuanya

Mudah-mudahan teman-teman sehat-sehat ya

Yang ada di Youtube sama yang ada di linkin

Apa kabarnya?

Seperti biasa, selesam malam

Waktunya ngobrolinin

Ngomong-ngomong nggak jadi ada di Twitch lagi ceritanya

[TING TONG]

Tagian membengkak

Gimana cerita, gimana cerita ya Mas Ridha?

Mungkin bisa jadi cerita lucu

Jadi kan baru dapet sponsor nih, kan

Tujuan utama sponsor adalah untuk beli stream ya

Yang paket core namanya, yang tengah-tengah lah

Yang paling murah lah ya, iya kan

Terus nggak lama setelah dapet sponsor

Harganya naik

Harganya naik dulu

Tadinya bukan segitu

Harganya naik, abis itu

Lihat transkrip lengkap (2855 segmen lagi)

Begitu udah upgrade ke yang core

Nggak baca kan target streamingnya bisa hanya dibatasi 2

Bikin lah linkin

X nggak bisa, karena harus premium kan

Akhirnya Twitch

Jadi 3, langsung otomatis naik ke Pro

13 juta

Setahun

Abis itu langsung kaget kan dapet tagian

Kok segi ini, turunin lagi

Ternyata turuninnya juga nggak dapat uang kemali

Tapi dalam bentuk

Ini tarifan cerita ya, tarifan

Iya, tarifan nggak bisa dikasih credit

Jadi ya kita bertahan 2 tahun ke depan menggunakan stream ya

Itulah suka dukanya podcast

Gak melulu, suka melulu ya

Ada jebakan-jebakan

Iya, apa namanya

Uang sponsornya jadi nggak cukup

Harus cari sponsor lagi kita

Ngomongin sponsor ya

Seperti biasa malam hari ini sudah episode ke yang ke berapa ya

134

Dan episode ke 5 atau ke 6 ya sama Domensia

Jadi kita kolaborasi sama Domensia

Nah yang beda adalah kita dapat ini baru

Kita menerima apa namanya

Feedback dari teman-teman

VPS, jadi sekarang

Teman-teman kalau mau langganan atau mau nyobain VPSnya Domensia bisa

Pakai promo code ngobrolin VPS DN

Jadi bisa nyobain virtual private server ya atau VM lah ya

Buat deploy-deploy termasuk nyobain database

Database bisa di VM juga

Promo-nya ini 50%

Sekali pakai aja untuk pembelian baru

Bisa untuk Cloud VPS Turbo

Untuk semua paket

Tidak berlaku untuk Cloud VPS Eco

Kalau Eco ini berarti kayaknya ekonomis ya

Kalau Turbo itu yang paling kencang ya

Nebak-nebak doang

Terima kasih soalnya

Kita coba

Amin Mas Yudi semoga dapat sponsor lagi

Halo

Mas Arif juga dari LinkedIn

Ada Mas Doni

Ada Mas Doni dari Youtube

Ngomong-ngomong soal

Sudah habis

Jadi kita mendatangkan Nara Sumber Langganan ya

Udah berapa kali ya Mas Doni?

Udah berapa kali? Tiga kali ya

Tiga kali

Terima kasih banyak

Udah menyempatkan waktunya

Gimana sekarang?

Lagi sibuk apa Mas?

Lagi banyak speaker-speaker ya

Habis dari Pontianak tadi ceritanya

Ya tadi

Habis pulang dari Pontianak sebenernya

Subuh tadi

Oh tadi pagi

Tadi pagi

Kita ada kesempatan untuk ngisi

Mengenalkan AI ya

Di salah satu event

Adobe US

Kebetulan waktu itu

Diundangnya di Universitas Tanjung Pura Pontianak

Di sana

Jadi membantu untuk memberikan

Perspektif bagaimana

Untuk bisa menggunakan AI

Untuk social impact di sana

Gak melibir ke IKN

Sekalian

Jauh Mas

Siapa tahu

Aku tadi mikirnya sampai Pontianak

Berarti ngajarinya di IKN ini

Itu kayaknya

Kalau diundang di IKN itu

Mix feeling ya

Bisa lihat itu

Bisa lihat tugular yang ipsum loh

Tugular yang ipsum itu

Nggak tahu gimana

Tugu placeholder

Masih loading

Terus gimana

Animo

Teman-teman yang

Penonton di sana

Terhadap perkembangan AI

Mereka menggunakannya itu sudah sejauh mana sih

Legal workshop ya

Di sana

Yang ditargetkan itu sebenernya

Malah bukan yang punya background

Teknik informatika

Atau IT

Tapi yang ikut itu kayak

HI

Kemudian ilmu komunikasi

Di sana

Wokshopnya tentang apa

Wokshopnya itu tentang

Yang pertama itu adalah

Bagaimana perspektif dari penggunaan AI

Dalam kehidupan saya

Yang pertama, yang kedua itu

Pengenalan sederhana machine learning

Pake teachable machine

Oh

Oke, jadi bukan hanya penggunaan

Chat

Transfer learning maksudnya

Transfer learning, oh bukan

Teachable machine itu

Adalah produk dari Google

Yang dimana kita bisa melatih

Machine learning

Hanya menggunakan browser

Di sana

Yang tensorflow.js itu bukan kan

Yang bisa dieksport

Ke tensorflow.js

Oh iya iya

Waktu itu sempat dengar

Waktu masih main sama tensorflow.js

Udah lama sih

2018

2018

Waktu baru-baru

Baru muncul

Iya lagi height

Oke menarik menarik menarik

Ya, jadi malam ini

Kita akan bahas tentang

Scaling database, ini adalah topik

Diminta oleh Mas Triad Moko

Di github

Discussion kita

Iya, udah lama

Mintanya dari April

Tahun lalu

Tahun lalu lagi

April nya bukan April tahun ini

April nya tahun lalu

Yang minta dibahas tentang database scaling

Nah, saya ingat pas

Mas Donny sempat sharing

Cukup banyak kan ya di ex ya

Di twitter, tentang database kan

Kayak best practice

Wah ini kayaknya cocok nih, dicolek aja

Ternyata gayung bersambut

Jadi malam hari ini kita akan bahas

Apa sih bedanya

Horizontal scaling sama vertical scaling

Secara gampangnya dulu, gak usah dalam

Kalau vertical itu

Menambahkan

Spesifikasi dari

Misalkan 2 CPU ke 4 CPU

Jadi nambah

Upgrade

Upgrade device

Kalau horizontal itu menambahkan

Device

Open dengan spek yang sama

Untuk bisa membagi

Cluster

Oh replication

Replication lebih tepat

Oke

Oke

Oke kalau gitu, kita mulai

Dari mana, kalau misalkan

Apa

Nah ini pertanyaan penting

Yang pertama

Kenapa topik database ini penting

Oke

Kalau ada yang kemarin minta ya di githubnya

Itu githubnya Mas Riza ya

Githubnya ngobrolin web

Githubnya ngobrolin web

Nah kalau kita

Dari pertanyaan itu, oh minta dong

Bagaimana pembahasan replikasi dari

Radical punggung horizontal

Sebenernya kalau kita ngomong

Pentingnya dimana, itu adalah

Di back-end, di sisi back-end

Kebanyakan kita itu akan

Selalu berinteraksi dengan database

Di sana

Dan biasanya bottleneck aplikasi

Itu bukan di bahasa

Pemogramannya

Hmm, selalu database pasti ya

Puslim itu database disana

Katakanlah sederhananya

Pakai

JavaScript, Node.js

Atau pakai Rails, pakai PHP

Gitu kan

Atau pakai Rust, gitu ya

Pakai Rust, pakai Zig

Yang blazingly flash

Blazingly fast

Iya blazingly fast, gitu kan ya

Terus 100x kecepatannya

Tetapi in the end, kalau misalnya

Dia terkoneksi dengan database

Dan database itu

Pembutuhkan waktu 5 detik

Untuk memproses, mau pakai

Rust, mau pakai Laravel

Tetap aja 5 detik ya

Ya, 5 detik plus sekian

Disana

Sehingga pemahaman-pemahaman kita

Mengendal kapasitas

Dan skalabilitas dari database

Itu jadi menarik

Penting

Itu kayak never ends

Pembahasannya, dan sangat luas sekali

Ya, oke

Yang paling sering bikin

Lambat itu apa sih biasanya

Query, load

Atau IO

Apa semua

Sebenernya

Kalau kita mau

Apa sih yang membuat lambat, gitu kan

Yang membuat lambat itu

Sebenernya adalah bagaimana

Kita mengakses data ini, gitu kan

Kalau kita ketahui

Database itu adalah

Banyak struktur data yang

Digunakan untuk kita menyimpan data

Dan data itu disimpan di dalam storage

Bayangin dulu jamannya kita ya

Jamannya kita, tahun 2000an

Itu kan SST belum

Belum secepat sekarang

Belum murah sekarang, dan belum semurah sekarang

Murah dan cepat sekarang

Disana, sehingga kerasa itu

Bottle lag nya untuk menang sesetengah itu

Dan RDBMS

Data business ini adalah

Most of the time ada RDBMS

Relational Data Management System

Jadi MySQL, Postgres

Dan Oracle

Atau apapun itu yang berbayar

Itu mereka pasti akan

Ada tabel-tabel

Yang berrelasi satu dengan yang lainnya

Ketika berrelasi

Berarti kita harus menggabungkan

Menjoin tabel-tabel tersebut

Nah, ketika kita melakukan join

Itulah kalau kita tidak

Carefully mengatur

Desain dari data business itu

Maka proses pencarian datanya

Akan menjadi lambat

Disana

Jadi yang membuat lambat itu

Adalah skema nya

Dan cara kita mengambil

Datanya

Query

Plus seberapa besar data

Tersebut

Mungkin dalam tabel bisa giga-giga

An gitu ya

Terapai kalau yang udah di level

Besar sekali

Disana, itu berpengaruh

Oke

Kalau ngomongin

Query

Berarti ada pengaruh

Penggunaan ORM juga dong ya

Oh, itu yang

Kayaknya rame ya

Rame ya

Kita bahas

Di

Di forum

Dan di kalangan

Ada tim puris ya

Tim puris SKLRO

Ada yang tim apatis

Tim ORM

Tidak ada yang lebih baik

Tapi itu tergantung kondisi dan konteks

Iya

Kita juga semua ORM

Itu support

raw SKL kan ya

Harusnya iya

Jadi ORM itu sebenarnya

Gak ini ya

Bukan sesuatu yang

Sangat support gitu

Bahkan mereka itu bisa

Dan raw query

Kalau misalkan ada masalah

Kalau kita pakai ORMnya langsung

Kita mau lebih efisien itu sebenarnya

Bisa tuh

Pakai raw query

Bagi penonton yang berasal dari

Dunia front-end

Kalau database query itu

Antara

Query langsung atau ORM

Itu sama dengan main CSS

CSS vanilla

Pake tailwind

Ya itu lah

Perbandingan apple to apple nya

Iya itu

Analogi yang bisa dipahami ya

Iya

Khusus penonton nanti yang

Ini orang front-end apa ya

Kalau tailwind kayaknya masih

Agak low level ya

Kurang lebih lah begitulah ya

ORM itu object

Relational mapper

Dan

Mungkin ada

Beberapa istilah

Juga

Kalau kita mau berinteraksi

Dengan database maksudnya

Aplikasi atau kode kita mau berinteraksi

Dengan database

Maksudnya

Kalau pakai ORM kan gampang

Bisa koneksi

Terus bisa query pakai

API atau SDK nya dia

Masing-masing ya

Mau pakai drizzle atau pakai

Action

Action apa

Kalau rails lupa namanya pokoknya

Semua ORM ya

Terus

Juga sebenernya

Ada library yang

Di tengah-tengah namanya itu

Query builder

Kalau di node.js itu namanya ada

Dulu ya gak tau sekarang ya ada namanya

Next.js k-n-e-x

Nah itu dia hanya

Hanya membuat

Query aja

Jadi dia

Tidak

Tidak merelasikan antara

Object oriented ya

Object oriented programming dengan

Table atau

Di database gitu jadi dia hanya query

Builder aja

Tapi pengalaman ya

Misalnya kalau bagi kita yang bisa

Langsung SQL query

Dan

Diketemukan sama orang yang

Gak pernah menentu database

Dan taunya hanya main di front-end

Memang susah memahami

Memahami SQL

Query itu loh

Karena harus paham matematika

Dan

Paham itu kan diagram

Dan segala macam kan diagram

Oh join-join

Join-join dan grouping

Itu sebenernya

Kalau

Pada namanya konsep berpikirnya

Sangat berbeda

Untuk lakukan SQL query

Kalau dari sisi

Seberang ya bukan susah

Menjago backend tapi sisi seberang

Itu sulit loh

Karena beda konsep berpikir

Makanya adalah ORM untuk

Mempermudah hip

Tapi dulu saya waktu awal

Awal karir banget

Itu sempat

Ditandemin dengan ada role yang namanya

DBA database administrator

Memang masih ada sampai sekarang

Dia yang bikinin query kita tinggal

Minta doang

Nanti dia bikinin viewsnya kita tinggal

Tinggal select

Tinggal select dari view yang dia buat ya

Enggak select malah udah dikasih

Kayak snippet-snippetnya ini untuk select ini untuk insert

Ini untuk apa gitu

Udah disediain jadi enak banget

Merasa dimanjakan

Gitu

Karena view beda lagi

View itu bisa bikin subset dari table

Betul-betul jadi dia bikinin

Khusus misalkan oh saya mau join

Table ini sama table ini namanya table student

Mungkin subjek gitu ya

Dia bikinin itu view student subjek

Jadi kita gak perlu join

Kayaknya sekarang role nya udah gak ada ya

Atau mungkin role untuk itu

Tapi DBA masih

DBA masih

Kalau yang enterprise itu

DBA itu penting

Karena urusannya

Itu tadi scaling

Scaling

Replication

Backup

Restore disaster recovery

Semua kayaknya penting deh

Tugas DBA itu

Orang

Di dunia modern ini mulai jarang

Mencari DBA

Pada akhirnya kemampuan

Ini itu dibebankan ke temen-temen

Devops, SRI

Dulu Devops, SRI

Padahal itu kayak

Ada art

And science nya sendiri

Aku coba untuk belajar

Database internalnya tuh

Even kayak

How it works itu aku harus tahu

Tentang tree

Tree base data structure gitu

Bagaimana parser dari SKL

Dari kita ngeparser

SKL query supaya jadi execution

Disana itu kayak

Bisa satu semester sendiri

Itu membahas itu semua

Oke

Kalau gitu kita omongin

Gimana caranya

How to start

Gimana mulai untuk

Misalkan udah punya

Database nya

Untuk optimize nya itu mulai dari mana

Mungkin ini berhubungan

Ini ya introdasinya ada

Salah satu pertanyaan di youtube ya

Mas tabel saya pas SKLnya ukurannya

Kurang lebih 300 giga tuh

Mereka nyoba tambah index

Solusinya terbagi gimana

Jadi ini ada step by step

Ya untuk kita mengetahui

Dan nanti

Akan semakin kompleks

Bagaimana kita bisa

Optimize nya

Yang pertama ketika kita mengetahui adanya

Kelambatan dari aplikasi kita

Itu terkadang majoritas

Di Indonesia atau di perusahaan

Indonesia itu belum punya

Monitoring atau observability yang

Cukup oke

Untuk bisa mengetahui blockways

Bagaimana

Jadi definisi lambat itu

Harus ditentukan tidak semua

Proses lambat kan

Misalnya kalau ada select

Select data limit 5

Itu kan enggak lambat

Yang bikin lambat itu adalah query

Yang beri impact ke

Semuanya

Berarti yang harus diketahui adalah

Tahu enggak ada yang slow query

Ini digunakan

Yang namanya ada

Observability tools

Jadi kalau misalnya kamu kebetulan

Kami di siruan group itu

Expertisnya di Postgres ya

Jadi apakah yang cerita dari Postgres

Ada tabel

Kalau pakai PSPL

Aja itu ada tabel namanya

PG stat statement

PG statistic statement

Gimana kita bisa tahu query yang

Lambat

Jadi kalau misalnya

Mas data bisaya lambat

Yang mana yang bikin lambat

Jadi temukan dulu

Querynya

Yang lambat

Atau kalau misalkan

Ada yang punya Grafana

Kalau ada yang pakai

Kalau di Google ya, ada yang namanya Cloud SQL

Itu ada beberapa

Ada beberapa

Metric yang kalian bisa access

Slow query

Itu bisa disediakan

Jadi ada nggak tools

MySQL, ada MySQL slow query kan

Bisa dibuat locknya

Ada

MySQL bisa diaktifkan konfigurasi nya

Untuk lock

Slow query

Nanti query yang lebih dari

700 milliseconds

Atau 1 second itu akan di lock

Betul, disana

Dan setiap engineer itu punya channel

Bisa sendiri untuk mengetahui

Bagaimana slow query itu

Di sana

Jalan Postgres sendiri itu

Kalau kami, biasanya kami pakai

Prometheus ya, untuk irim Metrics

Ini mungkin agak sedikit detail

Ke infra, tapi intinya adalah

Gunakan tools yang mampu untuk bisa

Mengakses statistiknya

Even phm admin aku nggak tahu ya

Phm admin itu ada nggak tools

Untuk mengetahui itu

Karena gpg admin

Itu juga ada beberapa tools untuk

View, jadi tabel itu bisa

Diview di dalam GUI nya

Sehingga GUI nya tahu bahwa ini

Ada beberapa slow query

Yang muncul disana

Jadi itu dulu mas Jejen

Yang pertama gitu kan

Kita lanjutin yang kedua gitu kan

Nah ketika ada

Sudah tau nih, ada

Top 5 gitu kan, top 5 atau top 10

Kita bisa

Investigate, mulai dengan

Ada

Ada salah satu SQL namanya

Bila Explain Analyze

Ini yang mungkin

Jarang ya

Diajarin di kampus juga

Disana

Dan

Orang itu nggak ngah kalau ini tuh

Ada fiturnya, jadi

Explain Analyze

Query

Yang dimana, kalau mungkin

Mas Riza bisa bantu

Untuk mencari ya

Disana

Itu ada, bagaimana kita

Tahu bahwa query tersebut

Yang

Ada atau image ya

Untuk bisa melihat

Repersentasi maksudnya apa

Gak ada, kita cari yang

Lain

MySQL

Reading

Postgre Query Plan

MySQL juga

Punya tuh

Itu kan yang di Postgre ya

Jadi ada, mungkin yang ini aja

Stop disini aja Mas Riza, yang ada hasil

Plan

Misalkan disitu kan

Ada Explain Analyze

Ada selectnya gitu kan ya

From dari

Dari tabel mana

Ada filternya tuh disitu

Nah

Itu akan memberitahu bagaimana

Kiranya, planningnya

Eksekusi itu akan berjalan

Disana, jadi disitu ada

Beberapa

Beberapa detail

Bahwa

Di dalam query itu akan melakukan sesuatu

Di databasenya

Dan

Untuk memahami ini

Itu kita harus belajar

Bagaimana penyimpanan data

Di dalam database, kalau kita

Bisa lihat disitu yang

Yang paling gampang aja, yang paling sering terjadi

Kita nggak usah lihat

Joint condition, total-total

Harusnya ada total ini ya

Ada planning, execution time itu

Lapan, itu lapan

Lapan millisecond

Lapan ribu

Lapan millisecond

Ini koma ya

Iya itu lapan millisecond

Aku lupa bahasanya gimana

Di disana, tapi

Tapi intinya ini nanti akan

Disitu ada salah satu kunci

Namanya sequential scan

Sequential scan disitu

Berarti dia itu akan mencari

Di seluruh data yang ada

Di dalam data table tersebut

Jadi worst case scenario-nya

Berarti end ya

End of data, disana untuk

Menemukan disitu

Dan itu yang kita

Bisa lakukan adalah mengimprove bagaimana

Logika

Data itu disimpan dan ditemukan

Kembali

Jadi basicnya disini

Pemahaman, pembacaan

Explanation, planningnya

Disana

Jadi intinya sebenarnya

Yang pertama adalah

Di-measure ya

Diukur, lambat itu seberapa lambat

Cepat itu seberapa cepat

Karena itu kan relatif ya

Jadi bisa diukur pakai

Apa namanya?

PG-Stat

Terus

Habis itu bisa pakai

Slow query juga kalau di MySQL

Atau lewat APM

Juga bisa kan kelihatan kan ya

Bisa, bisa APM

Tapi biasanya mayoritas

Ini ya

Maksudnya apa kan pekerjaannya

Banyak menghandle

Legacy code dari

Legacy line

Itu jarang punya APM yang bagus

Biasanya

Jadi

Kalau nggak punya

Apalagi kalau yang melihat ini

Malah di luar gitu kan

APM itu kan tidak apa-apa

Disana

Kita bisa langsung akses database-nya

Kalau mau pakai

De-beaver gitu ya

Bisa juga

Sayang-sayang

Sayang-sayang aku udah lama nggak hands-on ya

Jadi aku nggak bisa

Nge-bisa demo-in

Di sini, tapi intinya

Kalian tuh bisa hanya menggunakan

CLI doang untuk mengetahui

Query mana yang lambat

Disana

Boleh mungkin di-spill

Sedikit ya, APM yang bagus itu

Standarnya Mas Donny apa sih?

APM yang bagus adalah

Tergantung budget

APM itu mahal ya

New Relic

Iya, New Relic

Iya, New Relic

Tapi mahal

Kalau punya budget New Relic

Data drop ya

Data drop juga mahal

Tapi kalau mau tahu

Zero One Group pakai apa

Prometheus ganti dashboardnya

Di Grafana

Tapi kami lagi main ekspor namanya

Prometheus

Back-endnya Elastic Stress

Kenapa?

Prometheus back-endnya

Prometheus itu

Stack yang berbeda

Kalau Elastic Stress itu LK

Elastic Log Test

Kibana

Elastic sama Kibana

Betul-betul

Kalau yang Grafana itu biasanya LGTM

Loki

Grafana Tempo

Mimian

Open Source Solution

Kalau misalnya ya

Enterprise, on-premise

Gak perlulah

Kamu bisa akses sendiri lah database

Query gitu

Langsung SSA

Langsung masuk ke ini ya

Atau database-nya di-dump dulu

Coba-coba di lokal gitu ya

Jadi kalau mau start gitu

Kalau mau pakai APM

Kami pakai LGTM

Dan kami lagi eksporasi Cygnos namanya

Cygnos, oke

Sentry mahal by the way

Apa mahal?

Sentry

Sentry mahal ya

Mahal untuk di-running self-host

Jadi dia butuh 4 CPU

4 CPU

6 dan 3

Oh yang self-hostednya ya

Ya, tapi untuk buat start up itu ya murah-murah aja

Tapi dia juga startnya udah yang 4 CPU juga gak murah kan ya

Kalau dihitung per bulannya lumayan ya

Oh iya, lumayan

Jadi makanya APM apa yang paling terbaik tergantung budget

Semakin mahal semakin baik

Ya maksudnya kan tadi

Menyebutin APM-nya kurang gitu kan

Ternyata memang, berarti budgetnya memang kurang

Nah ini Nur Holid ini mantep nih

Sering pakai explain analyze semenjak ada isu query

Ternyata karena order by

Kalau short order dari join gak pake indexing

Ya dia sekuensial

Jadi mungkin kasih gembaran umum ya

Sena yang tadi kan bahwa

Ketika kalian anak back-end itu

Akan sangat bermanfaat

Menginvestasikan waktunya bagi mana tetap sepekerja

Di sana

Nah proses indexing itu adalah

Sebenernya adalah membagi pencarian

Dengan melalui struktur data tree

Gitu

Jadi kita tidak perlu menge-scan semuanya

Data yang ada

Ada yang paling populer itu adalah

B-tree namanya

B-tree index

Di situ yang secara umum sering digunakan

Jadi kalau

Kalau tidak di indexing gitu kan ya

Dia akan langsung nge-scan semua

Yang tadi aku bilang di awal

Nge-scan semua row untuk mencari data

Di sana

Dan itu bisa kayak

10-100x ini

Waktunya

Even seribu

Untuk bisa nyari data

Di situ

Iya

Perlu ya apa

Harus belajar big o notation

Big o notation ya

Analytics good

Analytics good

Analytics good

Sering juga

Karena

Keburu terekspos dengan

Banyak best practice

Kalau database lambat

Tambahin aja indexnya

Index itu kan kalau analoginya

Kayak apa ya? Kayak buku gitu ya

Buku ini lah

Yellow Pages ada yang ngalamin ga sih?

Contact deh

Sebenernya kayak

Sebenernya kayak liat

Kalau kita ngomong

Kalau kita ngomong

Kamu kayaknya terlalu

Marketnya generasi

Yang lebih muda kayaknya ga pernah

Pilih-pilih baju

Daftar isi

Daftar isi tebel o konten

Nah itu

Ini

Langsung gue tunjukin nih

Ini butuh

Buku manual mobil saya

Terus kan isinya

Banyak banget ya kan

Gak mungkin saya baca satu-satu

Yang mau saya cek dimana

Tentu

Kalau index di database itu

Ya langsung saya langsung ke daftar isi

Disini, oh masalah Oli

Halaman sekian

Bukan, daftar isi di depan

Biasanya index di belakang, bener ga sih?

Kalau buku ya

Kalau buku definition indexnya beda

Ya definition indexnya beda

Kalau kayak ini aja lah

Oh ya daftar isi, daftar isi di depan

Kalau

Di belakang itu index

Index untuk kata-kata kan

Ya

Kalau yang di database itu index ini

Index begini, bukan daftar isi

Betul, jadi kayak apa ya

Contact book lah, contact book

Kalau misalkan saya mau cari

Atau Mas Donny mau cari Riza kan

Saya harus scroll dari A sampai R

Dulu kan

Jadi pencet aja huruf R

Nah baru cari Riza, deket

Kalau saya kan tinggal pake "Hi Google

Call Riza"

Woi woi woi

Ini analogi digital ya

Mau ngeluarin yellow pages

Sudah ga punya

Jadi contact book aja

Gitu lah ya

Dan kalau index

Ini di apa ya

Semuanya di index

Ya jadinya sama aja

Balik lagi kayak kita baca buku satu halaman

Satu halaman gitu

Jadi harus diperhatikan juga

Jadi tidak

Semua solusi adalah menambahkan index

Sebenernya karena sebenernya

Kalau kita lihat

Kalau kita menambahkan indexnya lebih banyak

Berarti ketika proses data itu dimasukkan

Itu juga harus memasukkan indexnya juga

Pada waktu itu

Dan itu adalah rate performance

Rate data base nya

Bayangkan

Kalau misalnya itu data

Itu sering banget diisi

Let's say tablet transaksi ya

Yang dihajar banyak

Itu jadinya bisa lebih lama banget

Jadi kita harus punya ini ya

Semua itu trade off ya

Semua itu trade off

Tidak ada solusi ini

Silver bullet

Dan kebanyakan index

Storage nya membengkak

Overhead

Karena index itu kan perlu disimpen

Dalam bentuk pointer

Bahasanya sih pointer

Menuju datanya di raw mana

Jadi kita simpen

Indexnya itu disimpen lagi

Di table pointer

Dan pointer itu memakan space

Kalau data base nya membengkak

Storage kita membengkak juga

Jadi ada

Trade off juga

Yang bakal kita bahas

Kalau sudah mandek disini

Kita next step nya

Lanjut

Jadi next step nya

Setelah katakan lagi

Udah nih kita

Udah oke nih mas

Query nya udah

Udah kita improve

Udah kita kasih index

Disana

Yang dilihat dari level coding nya lagi

Teman-teman disini pakai connection pooling apa enggak

Disana

Connection pooling itu

Ketika kita melakukan connection

Kedalam setelah database itu kan butuh

Membuka connection

Ada shake hand

Ketika sudah dipakai

Connection itu diputus

Bayangin kalau kalian pakai connection pooling itu akan jadi terus-terusan

Contoh analogi nya

Karena kita selalu membahas analogi

Analog analogi nya itu kayak

Kamu parkir sendiri

Mobil kamu

Masuk ke parkiran

Cari yang kosong gitu kan ya

Terus keluar dan super market

Nah connection pooling ini namanya pool ya

Jadi mengumpulkan connection itu kayak

Avali sebenarnya

Jadi kita enggak

Ini kita menggunakan

Satu

Meja yang sama gitu kan ya

Untuk menaruh parkiran kita sederhananya gitu

Jadi connection

Yang kita gunakan untuk membuka

Database

Itu akan direuse untuk

Request yang lain

Jadi kita buka

Connection

Itu juga ada art

Sama science nya sendiri

Karena

Gak bisa dibuka terus

Connection itu bergantung pada RAM

Bergantung pada RAM

Satu connection itu

Mungkin 25 MB

Dan berapa aplikasi

Yang kalian buka gitu kan ya

Kalau misalnya aplikasinya

Ini ya, pakai kube

Horizontal scale, berarti

Kamu harus maintain, kamu harus hitung

Berapa connection pooling yang

Bagus

Kalau misalnya pakai container kan

Container kan bisa

10 kan

Buka connection ke database

Yang sama database nya kan

Gak mungkin, gak banyak juga kan

Jadi kalau misalnya

Container nge scale, jadi dari 10

Ke 100, kalau dia pooling

Mulu, ya misalnya

Masimal tadinya cuma bisa 10 pooling

Ya yang lain bottleneck, nunggu

Tunggu yang satu dimatikan dulu

Dia baru bisa buka lagi

Jadi bottleneck di

Connection

Jadi bukan database nya yang lambat, tetapi

Jalurnya

Yang penuh

Jalurnya yang penuh, jadi tidak hanya database nya

Harus dipikirkan bagaimana kita perinteraksi

Dengan database nya

Salusinya adalah

Ada hitung-hitungan sederhananya

Sebenarnya

Kamu mau pasang

Container berapa

Kamu mau pasang

Kalau kita ngomong ini ya

Kalau kita ngomong

Efficient untuk kita

Bisa menggunakan RAM nya itu

Kita ada hitungan kasarlah

Karena

Ini pengalamanku

Mengerjakan software project di Indonesia ya

Itu tidak

Sampai ke scale nya unicorn

Yang banyak banget

Itu

Kayak

Kebanyakan database yang

For CPU 8GB

Setiap ada

Satu container

Satu container itu bisa buka berapa

Connection itu sebenarnya kita bisa hitung

Di situ, jadi bukan

Kalau misalkan ada database tau-tau

Aku pake kube supaya bisa handle banyak request

Belum tentu

Engga juga

Engga auto scaling tapi koneksinya

Di database nya

Engga cukup gitu kan ya

Anri pada akhirnya

Kayak jalan raya

Ya mobilnya banyak

Tapi jalannya sedikit atau kecil

Jadi ngantri tetap ngantri ya

Terus terakhir dari

Sepenceng apalah juga ya

Terus terakhir

Dari level code ya

Kalau tadi kita udah bahas sedikit

ORM

Kita tau misalnya

Ada LF1

Terus active record

Yang jahat

Prisma ya

Prisma drizzle

Type ORM

Terus sedikit terakhir ya

Perkara ORM ya

Dulu itu pernah maintain salah satu

Salah satu agensi

Yang trading edge ya

Di enterprise

Prisma versi 1

Prisma engine nya masih pake skala

Skala?

Dulu itu Prisma

Engine nya pake skala

Versi 1 ya

Dan itu

Ada GitHub issue dibuka

Salah satu caranya adalah migrasi ke versi 2

Dan selalu out of memory

Karena Java

Karena JVM

Jadi temen-temen yang

Aku gak bilang kalian harus jago

Ini ya SQL

Karena juga tadi bener kata mas Ivan

Frontend itu mungkin

Tidak punya banyak waktu untuk bisa

Mengerti semua yang terlihat kan

ORM itu bisa mematuh

Jadi sebenarnya ya gak ada salahnya

Juga pake ORM

Kecuali kamu di mata purist gitu kan ya

Buat apa pake ORM

Berlaku kebudakannya

Ngapain gak mau nulis

Gampang

Gak produktif ya

Gak produktif

Yang penting ini aja sih

Awareness kita tahu

Kita pake ORM

Jadi kalau terjadi kelambatan

Kita coba cek disitu dulu

Karena kita dari aplikasi

Masih ada satu layer lagi

Sebelum ke SQL

Padahal SQL itu kan sudah layer untuk

Komunikasi ke database kan

Jadi ada satu layer

Di atas SQL

Query Vanilla

Tapi ada sudut pandang yang berbeda nih

Kalau Frontend, anak Frontend kan

Sekarang udah terbiasa dengan

Deklaratif kan

Ngulis kodnya kan

Deklaratif pake React lah

Atau SwiftUI

Sql itu kan deklaratif

Jadi belajar juga harusnya lebih muda

Ya mungkin belajar syntax baru

Cuman kan

Apalagi sekarang bisa dibantu AI

Jadi mungkin cara

Belajarnya sekarang jauh lebih

Learning curve nya

Lebih rendala dibandingkan dulu

Sulit sih mas

Maksudnya

Saya bisa

Belajar Tau SQL Query itu karena kuliah

Dan saat kuliah itu

Mata kuliah database itu

Sampai kayaknya 2 semester deh

2 semester

Basis data 1 sama

Basis data 2

Dan waktu itu

Base nya Oracle

Dan memang dari awal tuh

Dari select, grouping, segala macem

Dan nanti sudah yang basis data 2

Itu lebih advanced lagi

Kayak

Stored procedure

Fuse

Itu sebenernya

Banyak yang bisa

Bisa didistribusikan

Jadi gak perlu semuanya

Di level aplikasi

Stored procedure itu bisa

Di level database kita bisa membuat

Function nya kita sendiri

Di database

Jadi kita cuma tinggal panggil function itu doang sebenernya

Itu bisa cuman

Itu gak stored procedure saya yakin

Di dunia

Kalau kita

Merujuk kepada dunia

Frontend yang pengguna

Next.js dan segala macem

Pasti stored procedure itu bukan

Sesuatu yang sering didengar

Kalau yang sampai

Yang susah juga

Maintainan di dalam stored procedure nya susah

Gak bisa masuk ke git lah

Gitu kan susah kan

Betul

Dia nyantol

Di database nya jadinya

Jadi semuanya sekarang

Semuanya di level aplikasi

Dan database nya sekedar

SQL query nya saja

Untuk ambil dan transaksi data saja

Tapi sebenernya

Database is more than that

Banyak lho

Contoh

Mungkin

Kalau

Melakukan

Select distance misalnya

Radius

Kalau misalnya kita punya

Mapping

Lokasi warehouse

Mana ya kita

Mau

Query jarak terdekat

Dari

Latitude

Longitude ini

Contohnya

Kalau pakai

Aplikasi

Itu susah

Misalnya kita harus query semua

Warehouse

Lalu pakai aplikasi untuk mencari

Jarak terdekat dari latitude longitude

Yang kita punya dari titik tengahnya kita

Anggap aja kita punya ini ya

Punya

Franchise

Dan punya banyak store

Terus mau ditampilkan di Google Map

Contohnya

Terus kita mau cari

Yang mana jarak terdekat dari

Jakarta Barat misalnya

Itu kan dia bisa

Ngecari radius

Kalau pakai aplikasi susah itu

Tapi kalau pakai Postgres

Itu tinggal select distance

Postgres ya

Postgres

Dan bisa langsung sort by distance

Gini ya

Satu query

Itu maksudnya

Banyak hal-hal yang bisa

Database itu bisa lakukan lho

Yang lebih-lebih dalam

Nah ini

Menjawab tadi ya

Rumus connection pool ya

Sebenernya banyak rumus

Spindles ini apa?

Spindles itu

Kalau misalkan

Sebentar aku lagi

Buka Google resource ya

Di sana

Jadi bisa

Ada yang ngomong

Ada yang ngitung itu dari CPU

Ada yang ngitung dari

Tadi kan aku bilang kayak satu buka connection itu

Sekitar 25 megabit

RAM di sana

Referensi ku itu

Mungkin lebih ke

Cari coba cari referensi dari database engine

Yang kalian pakai

Yang aku ngomong RAM itu tadi

Postgres

Beberapa orang ngomong bahwa

Ambil aja 25

Ambil aja 1 connection pool adalah

Di Prisma itu kayak

Ngomong connection pool itu

Dia ambilnya

Ada CPUnya juga

Di sana, hitungannya ada CPU juga

Jadi menurutku kalau menjawab pertanyaan ini

Coba cari database enginenya

Kemudian coba cari beberapa

Referensinya

Aku nggak terlalu

Ada hal yang sakit, karena aku kalau liat di Google

Banyak banget referensi

Connection poolnya

Atau start default dulu deh

Default itu jadi good starting point

Nanti lihat pakai APM

Baru nanti kita bisa lihat apakah connection poolnya itu

Biasanya di APM itu

Ada limit

Connection biasanya

Kita terlalu banyak pakai connectionnya apa nggak

Masing-masing database berbeda ya

Cara penanganannya ya

Kita lanjut aja kali ya

Kita ada beberapa tahap

Di situ

Nah setelah kita udah lihat nih dari keseluruhan

Ternyata tidak masih bisa

Mahendal, baru kita mulai untuk

Bermain infrastructure di sana

Yang paling populer

Di selain scaling gitu ya

Apakah database ini

Punya kompetensi yang berat

Alternatifnya adalah menambahkan layer

Di atas database itu

Adalah credits ya

Caching, kemudian ada

Gvalue store

Yang bisa disimpan di ram biar lebih cepat

Ada search engine

Elastic search

Melee search gitu kan ya untuk mencari data

Ada messaging queue

Jadi yang biasanya untuk

Kayak Kafka

Biasanya kalau data

Rate-nya, call rate-nya tinggi

Daripada kita harus dihajar

Di satu endpoint gitu kan

Kita kasih queue di sana supaya

Lebih terproses dengan

Berurutan

Jadi writing-nya ngantri

Ada queue-nya gitu ya

Pake Kafka

Atau Revit MQ

Itu terserah lagi ya

Terserah dengan familiaritas dengan

Apa teknologi yang digunakan

Mungkin quick lagi ya

Setelah itu

Ada technical scaling ya, itu udah deh

Paling gampang udah

Lakukan semua masih berat

Naikin CPU sama

RAM-nya

Kenapa?

Karena itu

Kita masih bisa maintain dengan

Ini tergantung seberapa besar tim infra-nya

Atau tim monitoring-nya

Paling gampang adalah naikin

Kalau pakai clock enak ya

Tapi kalau on-premise

Kalau saya

Kalau pakai on-premise

Hybrid

Kalau saya

Cek dulu, ini hard disknya

Pakai apa? Masih pakai piringan atau

Itu cek dulu tuh

Karena

Kalau mau gimana pun

Dinaikin, kalau masih piringan

Tetep aja lambat

Dan ini ada

Beberapa pembahasan ya

Salah satunya DHH itu adalah

Yang bikin Rails ya

Oh

Anumayar Hansen

Ya itu

DHH

DHH

Dengan

Kecepatan storage CPU itu

Bahkan sekarang banyak perusahaan

Besar itu masih bisa handle single note

Tetap di sana

Jadi vertical itu

Jadi solusi disitu

Ketika vertical sudah gak bisa gitu kan ya

Terlepas dari budget dan kawan-kawan

Muncul horizontal scale

Yang paling gampang horizontal itu

Bahkan read replica

Jadi

Ketika ada satu database

Kamu bisa tambahkan database kedua

Untuk hanya

Mencari budget database

Disitu

Jadi ada write

Write db

Ada read db, kalau jaman dulu

Yang bahasanya tidak

Inclusive itu

Ada master slave

Jaman gue

Jaman yang gak sudah inclusive

Jadinya harus write sama

Read

Bisa primary replica atau worker manager

Itu tergantung

Ya

Tapi horizontal

Scale juga ada masalahnya juga gitu kan ya

Horizontal scale itu

Replikasi menambahkan

Sesuatu

Latensi

Kemudian kalau misalnya kita membaca

Tapi belum di replikasi

Out of sync

Delay

Itu sudah busing

Out of sync itu

Itu adalah salah satu teori

Yang kita sebut dengan cap theorem ya

Cap theorem itu adalah

Konsistensi, availability

Ataupun partition

Kita gak bisa dapatin ini semuanya

Di sana, jadi kalau kamu mengejar

Konsistensi, berarti ada masalah

Availability, out of syncnya lebih

Lebih ini, lebih

Kerasa

Tapi kalau katakanlah

Ini apa contohnya

Financial application

Kan gak boleh itu misalnya

Ngirim apa

Ngirim uang

Tapi waktu

Orang baca lagi gitu kan ya

Di request kedua kalinya, aku masih pakai saldo yang lama

Bahaya ya

Harus konsisten di semua replica yang ada

Tapi itu berimpak

Sehingga sampai availability

Orang itu gak banyak bisa handle request

Secara concurrent

Availability yang diutamakan

Konsistensi gak perlu

Itu contohnya social media

Kan gak perlu amat kamu harus melihat

Exkut yang terbaru

Terbaru

Yang berubah

Konsisten ke semuanya

Gak harus

Dan banyak tools ya

Banyak tools yang

Di gunakan

Kalau di Postgres itu ada nama Patroni

Patroni untuk bikin

Streaming

Blaster, Postgres

Kalau di MySQL itu Vitesse

Ataupun Proxy SQL

Di sana

Vitesse bukan Vitesse JS ya

Bukan, bukan Vitesse

Bukan Vitesse pakai buat view itu ya

Bukan, bukan

Intinya adalah dia itu

Ada Proxy nya

Yang Patroni itu intinya adalah

Ada Proxy di depan database itu

Yang dia nanti ngatur

Oh ini adalah query read

Dia yang mengatur

Menatur jalannya

Query, jadi di depan itu ada

Load balancer namanya Haproxy

Haproxy

Haproxy

Terus data

Data key value store yang disimpan

Dalam cluster itu pakai etcd

Di sana

Oke

Kayaknya kalau ngomongin Load balancer

Satu topik sendiri lagi kayak Load balancer

Itu, itu

Round-robin

Ada banyak poin ya, algoritma

List connection, layer

Berapa Load balancernya

Panjang ceritanya ya

Jadi kalau

Database vertical horizontal itu kan

Harus ada Load balancernya kan

Jadi yang ngatur

Kan dari aplikasi koneksinya

Cuma tau satu, tapi dari Proxy

Yang ngatur mau ke database yang mana

Yang mungkin cara jadulnya itu adalah

Kalau misalnya tidak ada Load balancernya

Di depan itu kayak

Di dalam code nya ada dua koneksi

Oh ini, ini yang buat

Ada array, ada array

Ngecek ini write apa write

Jadi manual, itu pun bisa dilatukkan

Di sana ya

Jadi ya cuman bikin replika aja

Kamu nggak ada Load balancernya di depan

Itu masih bisa aja, tapi ya

Ribet di aplikasinya

Untuk handle itu ya

Di sana

Mungkin dua lagi tentang scaling ini

Yang selanjutnya itu adalah partisi

Jadi tabel yang gede banget misalkan

Itu bisa dipartisi

Jadi beberapa, kita memacah

Kayaknya ada data structure lagi

Ada 1TB itu kan tabel itu dibagi

250GB supaya lookupnya

Lebih gampang

Di sana, dan yang terakhir

Itu adalah sharding yang di mana

Kita bagi tabel

Semua tabel

Di berbagai macam

Notes

Di server yang berbeda

Itu lebih kompleks

Tapi ada open source yang dibuat oleh Microsoft

Untuk membantu mempermudah

Sharding di Postgres namanya

Cetus

Cetus

Gimana?

Aku nggak tahu saya ngomongnya gimana nih

Cetus, mi apa?

Nggak ada yang relate lho

Kita yang ketawa doang

Last thing

Perkara scalingnya

Kalau kamu mau nggak berepot, ada yang namanya serverless

Data base sekarang lagi rame

Ini planet scale ya?

Planet scale

Planet scale

Itu planet scale ya?

Kalau di Postgres namanya neon

Neon

Jadi dia mau memisahkan

Compute engine nya dengan storage nya

Jadi itu

Another things lagi

Jadi itulah

Sedikit ini ya, macem-macem

Gimana kita bisa nge scale data base

Iya, sempat penasaran juga

Ini serverless data base ini

Gimana kan? Sebelumnya kan kita

Aplikasi yang serverless

Ini data base juga serverless juga ya

Yang diserverless

Kan itulah secara teori

Sederhananya adalah pemisahan

Storage dengan compute nya

Di sana

Jadi

Compute nya yang di scale

Auto scale

Compute nya yang di auto scale

Compute nya yang di auto scale

Di situ

Secara dalam nya aku belum dalam lagi

Tapi itu yang bisa membuat pada akhirnya

Bisa serverless

Jadi disana

Oke

Ini buat MySQL yang tadi neon buat

Postgres ya

Siap

Mantap

Itu untuk

Serverless

Tapi

Dalam sampai tahap apa sih kita

Perlu mendata base scaling

Karena ada juga ide

Kayak apa itu

Situs besarnya masih pakai

Eskialight

Sanggup-sanggup aja gitu

Discord ya

Enggak salah eskialight ya

Bukan

Eskialight

Enggak tahu ya apa ya

Aku lupa

Eskialight itu yang sebenarnya

Unique selling point nya

Adalah dia embedded kan

Jadi yang paling banyak dipakai adalah

Ya HP Android

iOS ya

Windows, HP, Handphone ya

Itu eskialight semua kan

Ya

Tapi kalau untuk

Product web

Ini ada yang kayak aku share ke mana ya

Share ke private chat

Private chat

Docs juga boleh

Ada itu tuh

Kayak berapa terah itu eskialight

Yang mana yang mana

Oh ini private chat ya

Ada

6 terabyte

Searchcode.com

Searchcode.com

Wow

Gede loh itu

6 terabyte

Nah kalau

Eskialight itu gimana

Gimana scalingnya

Gak bisa

Satu file kan

Filebase kan

Enggak usah

Scaling nya dulu deh

Deploy nya gimana kalau deploy

Kalau pakai docker kan harus stateless kan

Gak bisa ya

Saya juga baru belajar kemarin harus pakai volumes

Kalau kita ngomong mungkin aku secara detail

Aku belum baca ini ya

Bagaimana cara dia bisa ngasih scale sebesar

Tapi kita coba untuk

Apa sih benefitnya eskialight

Daripada rdbms engine yang lain

Ya boleh

Jadi

Jadi nilai tambah dari eskialight itu

Adalah kemampuan untuk performance

Query datanya itu sendiri

Di sana

Jauh lebih cepat dari

Apapun rdbms engine yang ada

Mau mysql, mau postgres

Tetapi kurangnya dimana sih

Kurangnya itu adalah

Di dalam konkurensi

User untuk akses database

Asebut

Karena tidak digunakan untuk

Di akses dalam waktu yang bersamaan

Database nya

Di sana

Makanya ada yang namanya Tursow ya

Tursow

Ada satu eskialight

Kemudian direplikasi

Di edge

Untuk orang yang bisa

Akses banyak

Dia itu memanfaatkan

Performance yang eskialight

Kemudian cara yang nyebarnya gimana

Direplikasi ke multiple edge

Untuk bisa mematasi

Sekian concurrent user

Jadi sebenarnya benefitnya

Eskialight itu disitu

Dan banyak juga project-project

Jadi tidak segede-gede apapun

Kayak dashboard

Itu kan banyak heavy di read ya

Itu kita gunakan eskialight aja untuk

Performance query datanya

Kalau kita tidak di akses banyak orang

Contoh ada satu project CMS

Yang aku share di google docs

Itu kan namanya PocketBase ya

PocketGIS itu adalah siap

Kayak eskialight

Ya ya ya

Pernah pake ini

Pernah bahas ya

Disitu

Ini back-end nya go

Terus dia kasih back office

Kan kita bisa operasi bisa

Insert data bisa

Manipulasi bisa update bisa delete

Kan ya. Terus ada

Dia kasih rsapi nya ya

Routes nya ya

Betul disana dan itu pun

Majoritas

Mungkin orang itu cukup

Disana untuk menggunakan eskialight

Tapi jujur aku tidak pernah

Melakukan komparasi

Yang cukup komprehensif ya untuk bisa

Berani berkata bahwa

Ada sekala-sekala tertentu yang

Kayak konkurensi kali ya

Konkurensi

Konkurensi akses

Sebenernya

Kalau misalnya

Kita bikin aplikasi

Yang dipake banyak orang kalau pake eskialight

Mungkin bottleneck disaat read

File nya karena dia file base kan

Betul ya ya ya

Sedangkan kalau

Aplikasi yang personal

Contohnya ya

Misalnya mozilla thunderbird itu pake

Eskialight

Karena kan terisolate

Satu user satu data

Justru kalau pake mozilla thunderbird

Pakainya install my eskialight lagi

Ya susah ya kan

Jadi efektnya pake eskialight

Pocket base kan personal

Atau

Paling maksimal ya 4-5 orang

Dalam keluarga doang kan

Pake ini gitu

Ya kalau misalnya

Sudah di akses sama ratusan

Ribuan secara

Concurrent mungkin

Harus pake DBMS

Ada post read and read file nya itu

Read and write file nya

Yang jadi masalah

Untuk local first juga cocok

Mas Ari sih

Orang dalem orang dalem

By the way

Ada satu kasus yang membuat

Battle neck juga

Kalau saat DBMS itu

Sedang melakukan write operation

Dia akan butuh

Dia sedang ngerite ke table ya

Ya blocking, dia akan blocking

Kalau ngerite, dia akan

Locking ya, bukan blocking

Ada locking mekanisme kan

Kalau satu process sedang

Ngerite dan

Ngerite plus

Ngeindeks kan, jadi habis write dia

Ngerite index, dan process itu

Butuh waktu, nah kalau misalnya

Ada concurrent yang sedang membaca

Table itu di saat yang sama, dia akan

Lock dulu, menunggu sampai process

Write selesai, baru bisa dibaca

Baru bisa diselect ceritanya

Nah, ini

Kita cerita bukan pakai cluster

Yang ada read write

Table ya, beda

Satu database doang

Ceritanya, ya itu akan terjadi

Yang namanya locking mekanisme

Dan karena ada locking

Ya, kelihatannya

Query kita yang

Nge-select selanjutnya itu

Kelamaan, tapi sebenarnya

Kan nge-lock oleh

Process yang sebelumnya

Nah, itu bisa jadi pengalaman

Pribadi

Oh ya, itu sebenarnya kalau yang dibilangin

Mas Ivan adalah

Konsekensi dari mislifat

DBMS yang menerapkan akit

Mungkin kalau teman-teman

Yang kuliah ya

Dan aku selalu tanya

Waktu skill test nya Zero One Group

Kalau ada yang apply

Di Zero One Group, itu selalu aku akan tanyakan

Tau nggak akit itu apa

Di sana

Asem

Jadi, akit itu adalah kepanjang dari

Atomicity, konsistensi,

Integrity, dan Durability

Dan setiap engineer itu

Punya caranya sendiri untuk menghandle ini

Di dalam Postgres itu aku share

Mas Riza di private chat

Ataupun di Google Docs

Ada yang HPG locks the query

Mungkin kita lihat bareng-bareng

Jadi, untuk menjaga

Sebuah integritas dari sorto database

Itu kadang-kadang kita harus nge-lock processnya

Dan setiap query itu punya

Skala lock nya masing-masing

Di sana

Di dalam ini

Dia ngasih tau semua

Impact dari

Query kita itu apakah

Table atau Room

Di sana

Jadi kadang-kadang

Ini juga yang aku masalahin di beberapa project enterprise ya

Karena kan query nya cukup jelimit

Di sana

Di dalam top 3 SQL itu bukan

Yang bikin cool print

Tapi adalah

Impact dari locking

Locking ini

Nah itu ada

Locking sendiri

Jadi kita

Di dalam Postgres itu ada

Locking buat lock

Jadi kita harus kayak

Ini mana yang nge-lock

Di sana

Bisa di trace ya dari situ ya

Di satu

Nah locking ini lagi-lagi

Untuk kita kadang-kadang

Ada konsep namanya

Seperti kayak

Mau beli web ini, tapi di Seriwan Group kan punya live streaming juga

Namanya Astro Office ya

Itu waktu itu

Salah satu engine Seriwan Group, Mbak Amel

Itu bahas tentang ada

Yang namanya bagaimana Postgres itu

Menghandle integritas data

Jadi misalkan apa yang dibaca

Orang itu apakah data yang baru

Atau data yang lama

Dalam suatu transeksyen

Ada konsep namanya ghost read

Ghost read datanya atau gimana

Dan setiap data based engine

Itu punya caranya sendiri

Untuk handle

Bawa bawa bawa

Bawa

Sama itu

Anak BE wajib tahu ajib

Itu itu itu

Bagaimana Postgres itu

Integritasnya gimana

Sebelah mana dia menjaga integritas

Datanya supaya terjadi

Data yang konsisten

Di sana

Jangan lupa di subscribe ya

Live nya setiap

Beberapa bulan

Oh lagi libur

Coba cari format live

Oke oke

Ini tadi

C

Tadi masih

Berlanjut ngobrolin tentang

Eskelat ya

Ada ada apa

Ada beberapa yang menarik juga

Ternyata ada banyak

Yang scaling juga

Salah satunya apa

Posting ini tahun berapa ya

2022

Dia bisa sampai 200 juta

Request per bulan

Atau 4 juta

Request per sekai

Levels I/O ya

Ya levels I/O

Dia kalau gak salah pernah cerita

Eee

Lupa ya

Buka aja opsennya levels.io

Ini kan

Apalagi yang

Pinter namanya

Ya pinter levels ya pinter levels

Yang produknya banyak banget kan

Kalau gak salah dia pernah cerita

Kalau dia pake eskelat itu untuk multi tenancy

Application

Jadi satu tenant satu

Satu udah habis

Expensive

Bukan gak tau apa namanya

Yang jelas

Dia pernah cerita kayak

Ada orang yang

Berlangganan SAS nya dia

Dia bikin satu instant atau satu tenant

Itu database nya satu aja

Jadi selain aman

Nampur sama database orang lain

Yang kedua ya

Udah database nya itu doang satu

Ini beda piter

Beda piter

Beda tuh

Beda

Ya pasti kan ada kayak

Ini ya spesifik use case

Yang kita gak tau gimana cara

Set up nya ya

Tapi di websitenya eskelat.org

Went to use ya, jadi mungkin itu ada referensi utamanya

Went to use

Dari eskelat.org

Yes

Ini ada referensinya silahkan

Kalau ada kasus seperti itu

Kita ke eskelat.org

Ini juga salah satu

Project

Yang sangat menarik

Karena sebenarnya dia

Open source

Dalam artian

Codenya bisa dilihat

Tapi yang bisa commit atau yang bisa nge push

Cuma 3 orang yang punya perusahaan

Gak menerima pull request bahasa itu

Gak menerima pull request ya

Jadi read only ya

Went to use

Ada tuh went to use eskelat itu

Jadi kalau misalnya mau tanya apa harus pakai eskelat sih

Itu

Embedded device

Ini udah pasti ya kan

Udah umum

Application file format

Website

Berarti ini web scale ya

Kalau misalnya

Most of system kita

Pasal block nya Mas Riza

Gak ada masalah pakai eskelat

Nggak gak pakai database

Coba bikin block pakai database

Banyak kali ada yang mau bikin

Kalau block nya sampai

100

100 artikel per hari

Perlu Mas

Itu bukan block itu

Portal berita

Internet kerjaannya Mas Ivan

100 kata per minggu aja

Belum tentu bisa

Apalagi 100 artikel

Ini

Seru ya

Yang nomor 2 nya

Client server

Application

High volume

High concurrency

High concurrency

High concurrency ya

Yang kita bahas

Writer nya itu

Masalah

Betul-betul

Karena file base

Jadi ada

Locking mechanism yang berbeda kan

Pada saat mungkin ada yang lagi

Hanya boleh 1 orang yang boleh merubah

Hanya boleh 1 orang

Jadi gak

Kongkaren

Oke pertanyaan pertama dari saya

Sebelum kita menjawab pertanyaan penonton

Kalau scaling

Scaling yang mana dulu nih

Horizontal

Kalau memang dibutuhkan scaling

Vertikal dulu lebih mudah ya

Ya vertikal sampai mentok

Dan maksudnya vertikal itu tidak selamanya

Jadi yang biasa

Vertikal dulu temukan toolprint nya

Down

Uses nya diturun lagi

Oh bisa

Bisa ya

Jadi kalau kita pakai ini ya

Kalo kan

Apalagi ya pakai manage ya

Manage service

Itu kita harus naikin

Ada concept downtime nya

Kita harus tau downtime nya berapa lama

Setelah dinaikin gitu kan ya

Kita tau nih toolprint nya

Di mana kita work on it

Turun

Diturunin akhirnya

Jadi kayak naik itu hanya untuk sepersekian

Hari

Sepersekian hari untuk

Disana

Supaya gak down

Kapan-kapan harus

Ini tuh gak bisa naik lagi

Gitu adalah ketika memang

CPU nya naik ya

CPU nya naik tapi tidak ada

Slow query yang

Berarti gitu kan ya

Tapi lebih karau banyak request

Untuk nge handle read secara

Secara jumlah request nya

CPU nya naik tapi tidak ada slow query

Tidak ada itu berarti

Sebelah harus di replikasi

Kalau seasonal

Contohnya

Kayak 11/11

9/9, 10/10

Biasanya

Itu disediain dulu

Disediain dulu

Di pre-empt ya

Tau bahwa itu seasonal

Ready

Atau banyak teknik ya

Caching nya sebelah mana

Karena kan contoh yang bisa share ya

Jadi akan pernah terjadi

News media

Quick count

Itu kan seasonal

Iya itu seasonal

Jadi kalau misalnya

Ada satu website yang perlu di read

Caching itu adalah

Bumper utama

Semua di caching

Multi level dari GraphQL nya

Di caching, dari data

Per item nya di caching

Itu level caching nya

Itu banyak dari atas sampai bawah

Tapi kan kalau quick count di caching

Ngamuk tuh entar

Iya, kok nge-net naik ya

Tapi kan quick count

Nggak real time pak

Masa? Oh iya ya

Per 5 menit, per 10 menit update nya ya

Nggak mau level lho

Kalau kita mau real time

Itu beda cerita webshop ya

Ternyata iya kan

Sekalian aja online

Berarti bukan quick count dong namanya ya

Periodic count

Catching count

Catching count

Quick itu kan

Relatif

Iya

Kalau real time count baru

Beda, harus real time

Iya

Atau biasanya

Bulan 2, bulan 3 itu kan

Pelaporan pajak

Tahunan kan

Itu biasanya

Lambat juga

Apalagi awal tahun

Ganti ini ya

Ada versi baru ya

Awal tahun ya

Untung bisa pakai yang lama

Untung tahun ini bisa pakai yang lama

Aku masih pakai yang lama sih

Aku masih pakai yang lama sih

Karena berusaha login nggak bisa

Yaudahlah pusing

Kalau untuk

Peribadi iya yang lama

Tapi kalau untuk perusahaan nggak bisa

Karena pakai yang ber kan

Skortex iya

Luar deh

Ya ampun

Oke

Sebelum kemana-mana

Ini kita jawab-jawabin ya pertanyaannya

Saya siswa RPL kadang bosen

Belajar database, mudah-mudahan abis dengerin ini

Jangan nggak bosen ya

Banyak banget yang bisa di eksplor

Dan kebanyakan

Database itu mahal lho

Iya, kebanyakan developer

Sekarang kan fokusnya belajar aplikasi

Sedangkan database nya kan itu kayak

Second class gitu ya

Kalau kita punya kemampuan database yang

Kuat kayaknya nilai tambahnya

Lebih gede kali ya

Udah bisa bikin app, database nya

Kencang gitu ya

Saya di company saya salah satu

Engineer yang

Mengerti banyak

Mengenai Elasticsearch

Jadi secara karir saya aman

Karena masih ada beberapa klien

Banyak klien yang pakai

Elasticsearch

Jadi kalau ada apa-apa

Saya tetap masih punya pekerjaan

Database engineer

Dajinya menarik

Oh iya

Oh iya

Yang menarik adalah

Sekarang itu banyak AI startup

Bisa jauh datas UMR

Banyak AI

Database

Faktor database

Lagi banyak startup

Itu kadang-kadang

Tahu internalnya, Postgres

Itu sangat-sangat menarik sih

Tapi ya

Berat sekali untuk belajar dan musuhnya

Berat-berat juga

Berat-berat juga

Ini tadi ada yang

Ngomongin tentang

Elasticsearch itu kan bagian dari

NoSQL berarti ya

Ya itu dia

Bukan

Bukan SQL base ya

Bukan SQL base ya

Search engine ya

Search engine jatuhnya ya

Ini ada pertanyaan tentang

MongoDB

Kalau MongoDB gimana scalingnya

NoSQL

Kalau, jadi kalau

Sekarang sederhana ya

RDBM itu sangat

RDBMS itu

Dia kan ada

Asset compliant ya

Dengan posisi dan rubriknya

Most of NoSQL itu adalah

Asset compliant tapi high scalable

Karena

Ini mau read write-nya itu

Cepat banget, karena kan tidak ada skema

Yang menggunakan satu tabel dan satu tabelnya

Di sana

Dia read write-nya cepat

Di sana, tapi saya ingat

Itu MongoDB versi terbaru

Dia mencoba untuk menambahkan fitur

Aku gak tahu konsepnya gimana

Tapi itu

Jadi mungkin ada

Fitur di dalam Mongo

Jadi lebih kala-kala spektrumnya NoSQL itu

Heavy

Highly scalable

Tapi tidak

Agile compliant, RDBMS

Agile compliant tapi tidak

Gampang di scalingnya

Susah scalingnya ya

Susah scalingnya ya

Oke, ini tapi pertanyaannya

Bukan tentang MongoDB sih

Ada proses transaksi yang saat ini

Displit menjadi beberapa collection

Collection-nya, panjang banget

Ada paca ya

Ini database apa ini

Ada alasan khusus

Kenapa skema nya displit terlalu panjang

Pertanyaannya ada gak?

Baca lagi, isu saya sekarang untuk

Generated Report

Agregat data, agregat data salah satunya

Kesulitannya di NoSQL

Kalau non-relational

Untuk agregasi adalah musuhnya

Itu musuh utamanya

Tidak bisa

Kenapa pakai NoSQL?

Atau kalau mau gak mau

Cara paling gampangnya adalah

Mas bikin tron job

Buat masukin itu ke relational database

Atau bikin objeknya sendiri

Khusus untuk view

Atau bikin collection

Bikin collection yang dimana itu

Ngebungkan, jadi ada summary

Ada ITL-nya ya

Extract

Terus di load collection itu

Khusus buat report itu

Jauh lebih gampang bacanya

Jadi bukan quitcon lagi, jadi batching

Saya juga sering menemukan

Beberapa hal tentang

Biasanya terutama MongoDB

Atau NoSQL itu

Mindsetnya masih relational database

Jadi design tablenya itu

Masih relasi gitu

Masih dipisah-pisah

Jadi keunggulan si NoSQL

Jadi gak kepake gitu kan ya

Jadi harus join-join juga

PR banget itu kalau join-join

Aku juga waktu budget firestore dulu ya

Itu cara

Membuat simulasi kita kan

ID ini

Di beberapa collection itu

Itu share gitu

Jadi ketika kita punya satu ID ini

Dia langsung ambil semuanya

Dalam satu waktu bersama itu

Salah satu cara mengakali simulasi

RDPMS

Tapi aku udah agak lupa sih

Karena udah lama banget gak main

Tapi jangan segera

Mengembangkan sama SQL

Jadi RDPMS itu salah

Ya, justru

Kelebihannya justru bukan disitu

Kelebihannya adalah ya tadi

Kencang untuk

Nulis dan baca, tapi kalau untuk

Join-join mah susah, SDK-nya susah

Ada pertanyaan tentang Firebase Data Connect

Wah, gak ngerti nih saya, Mas Donny ngerti gak?

Aku pernah bikin inkos senang ini ya

Di platform lain

Intinya adalah

Data Connect itu sebenarnya pakai Cloud SQL

Cloud SQL?

Oh, oke

Ada magic happen disana

Berarti kamu hal-hal

Tahu bahwa

Ya, jadi kalau kita connect your app

To fully manage scaleable database

Using Cloud SQL for scale-scale

Cuman, Data Connect itu

Interface-nya pakai GraphQL

Itu doang sebenernya

Oh

Oke, oke

Kebayang-kebayang

Untuk saya, aku gak bakal pakai itu sih

Kenapa?

GraphQL, gara-gara GraphQL, bukan?

Karena kami custom solver

Solusinya harus jadi on-off

Oh, karena ini ya, karena kebutuhan

Jadi gak akan pakai, karena gak cocok

Kalau itu cocok buat kamu

Pakai aja nih

Kira-kira cocoknya buat aplikasi seperti apa

Atau perusahaan apa

Yang bergerak di bidang apa

Startup

Karena dia ada

VectorDB ya

Vector PG Vector

Disana, dan ada GameKit

Firebase GameKit

Pernah bikin blog di Google Cloud

Indonesia ya, jadi gampang banget

Bikin receiver sama indexer-nya

Pakai GameKit

Oke, oke

Oh, berarti dia lebih ke integrasinya ya

Kalau kita

Real-time database-nya

Itu connect gak ke

Fire, apa namanya?

Firestore ya? Firebase yang

Real-time database itu? Beda ya?

Beda

Beda ya, oke

Itu kan non-sql juga ya

Itu non-sql juga ya, berarti ya

Ya

Nah, Firebase ini juga salah satu

Database yang mungkin anak front-end

Cukup familiar ya, dengan Firebase

Atau supabase sekarang

Atau tadi pocketbase, dan base-base yang lain

Ada budi-base banyak banget

Bagaimana budi-base?

Itu budi-base

Kayaknya CMS no code ya?

Iya, budi-base itu

Yang buat budi bukan ya orang Indonesia

Itu kayak

Google Cool

Internal Tools gitu loh, Mas

Iya, buat internal tools, kayak apa ya

Ritual

Ritual, ya Ritual

Ya Ritual

Buat dashboard internal

Nah, Mas Rio

Untuk lo audit trail, better

No-sql atau rdbms?

Audit

Trail

Bukan yang pakai itu ya, tadi ya

Elasticsearch gitu ya

Kalau logging-logging

Siapa pernah, akses siapa

Pernah untuk

Nyimpan ini kan ya, lebih ke

Apakah NTT itu dirubah

Bentuk perubahannya apa, kemudian

Siapa yang merubahannya

Aku kebetulan banyak

Kasus dimana

Table audit logging itu di dalam

Database yang sama

Jadi

Menurutku secara mayoritas

Audit ini kayak akan jarang

Dikunakan ya, di akses

Dalam kondisi tertentu

Nggak harus dipisah sih

Mendingan pakai database yang sama

Dan nggak perlu ada relasi, itu cuma kayak

Dam doang

Oke, oke, ada tips nggak

Untuk pindahan data-database

Dari sql server ke

Postgre

Dengan

Iya ya, enak sekarang ya

Kalau dulu kita bikin sendiri ya

Karena

Sebenernya jadi masalah itu adalah

Sql itu share

Sql1 dengan engineer itu

Mungkin di angka 70%

Jadi kamu nggak bisa

Dengan query yang sama

Itu bakal

Mati, gitu kan

Satu-satunya cara adalah

Ya udah, gitu pakai

Demini buat

Untuk bantuan AI ya

Bikin ini disana

Atau pakai ORM

Multi-dialect ya

Data-based ya

Disini gunanya ORM juga ya

Itu juga benefitnya

ORM sih, bisa pindah-pindah

Data-based

Jadi yang mengurus ini tuh bukan kamu

Ya, abstraksi

Ngomongin ORM

Kalau project awal pakai ORM, sekarang

Quailshare aja udah terasa latensinya

Apakah perlu re-readdb atau

Pake query-builder

Ya

Latensinya

Di mana dulu, cari dulu

Cari tahu dulu

Root cause-nya

Locking mechanism

Atau

Locking, atau memang

Ada slow-query, atau ya

Mp1 Anda itu

Yang manggil-manggil

Berulang kali

Jangan-jangan aplikasinya

Atau kodenya yang

Four di dalam four

Terus panggil query langsung kan

Bisa aja, banyak ya

Jadi harus cari tahu ini dulu

Jangan asal

Re-write

Karena takutnya masalahnya bukan di situ

Kawatirnya masalahnya

Bukan di situ

Ini pertanyaan internal nih

Mas Aris

Sampai saat ini ada perdebatan pemilihan tipe data

Primary ke antara UID atau serial

Atau Big Indie MySQL

Ini nama-nama

Nanti aja di jawab internal

Buat yang nggak tahu

Kalau serial itu kan

Autoincrement kan ya

Kalau sekarang kan sudah

Disarankan untuk tidak menggunakan auto increment

Karena terlalu mudah di

Prediksi

Bisa mudah ditebak

Misalkan user/1/edit

Ini user ID 1 nih

Bisa ketahuan

Jadi lebih disarankan menggunakan UID

Itu kalau dari sisi awam ya

UID sudah versi berapa sekarang?

UID 7 ya?

V4

V7

Ada lagi yang baru ulit

Ada ulit itu sudah sendiri

Oh ada, beneran dia

Saya pikir

Bedanya V7 sama V4 itu adalah

V7 itu sudah menambahkan timestamp

Unique timestamp

Dalam generasinya

Kalau di versi 4 kan

Dia cuman random set of

Ini ya, unique

Tidak ada timestampnya, jadi tidak bisa dissolve

Secara ID

Di sana

Perdebatannya panjang

Atau UID

Di sana

Karena set of example itu

Pasti akan mengambil storage

Cukup lumayan

Karena cukup panjang untuk mencari unique ya

Unique, unique ID

Di sana

64 ya?

64 karakter ya?

Berapa banyak sih?

128 bit

128 bit

Panjang ya, panjang karakternya

Apa ulit?

48 bit unique timestamp

4 bit versi random data

Di sana

Oke

Bisa pilih salah satu ya

Kalau pindah dari auto increment ke

UID atau ulit gimana caranya?

Bikin aja

Tablebar, te kolom baru

Generate aja UID nya

Pindahin index nya

Tapi gak jadi primary key

Ya ubah aplikasinya

Dulu

Di alternya

Gak mungkin diritikkan itu kalau direplace

Mending tambah kolom baru

Mending tambah kolom baru

Jangan direplace ya

Apalagi delete

Delete kolom itu cari masalah hidup sih

Terus dari aplikasi

Dilarang

Dilarang menggunakan ID

Jangan lagi pakai kolom ID

Pelan-pelan ya, gak langsung

Semuanya ya, kecuali aplikasinya kecil

Jangan dirit kolom, itu benar kata mas Tony

Apalagi kalau sudah deplikasi

Sekali dirit kolom gede

Itu syncronasi lama

Bisa out of sync

Kalau udah out of sync sakit kepala

Saya kalau sudah out of sync

Mending saya matiin to server

Generate ulang, replikasi aja

Karena sudah susah

Kalau udah out of sync

Aku pernah delete database production

Waktu magang baru 3 hari

Serius

Saya

Saya belum pernah

Delete database, tapi saya pernah

Delete query, tapi lupa where

Begitu liat seribu sekian

Roll affected

Oh oh, kalau itu pernah

Benarnya itu jadi test dari

Perusahaan itu sih, apakah dia punya

Mekanisme dimana kalau ada mistake

Dari sesuatu, bisa direcover dengan

Udah

Di sana, jadi itu experience

Yang tidak akan terlupakan sih

Kalau misalnya, by the way itu

Pernah disini, anaknya Zero One

Untung ada backup

Jadi beneran literalnya, delete

Ada para di backupnya jadi aman

Oh, kalau Mezo

Katanya, tadi

Pernah delete database, tapi nggak kehapus

Gak beneran kehapus, soft delete atau gimana

Nggak tahu deh

Keringet dingin

Oh, di test kali, emang sengaja kali

Di test, emang harus mengalami itu

Dan itu juga bagian test dari perusahaan

Apakah siap kalau terjadi kesalahan-kesalahan

Itu kan kesalahan umum ya

Kalau sesuatu yang

Kamu kerja pernah

Waktu kerja, pernah mengisi form

Untuk bersedia, bekerja di bawah tekanan

Itu paling di bawah tekanan itu kayak gitu

Itu bekerja di bawah tekanan

Itu

Job description yang paling tidak

Tidak bisa dijelaskan

Tekanan apa dulu

Oh iya, itu juga ya

Makanya jangan sekali-kali

Mengesekusi

Sql, yang Mas Oddy itu

Mengesekusi Sql

Di production itu harus dilihat dua kali ya

Kadang-kadang lupa, aware itu

Hapus-hapus semua itu

Betul-betul, saya juga pernah mengalami

Ini kalau aware-nya lupa

Bahkan bukan hanya delete, update

Update juga bahaya kan, aware-nya lupa

Oh iya, nggak pakai aware itu

Makanya harus

Mekanisme

Production, staging

Testing itu harus

Ini dulu ya, harus clear dulu

Kalau di lokal kapus ya

Udah

Harus jangan sendirian ya

Kalau mau mengupdate sesuatu

Di production jangan sendirian, harus lebih dari satu

Orang

Ada kuncennya

Pak Imre kayaknya sekarang rolnya itu ya

Kuncen, udah habis dia ya

Kuncen

Harus udah kuncennya, nggak boleh sendiri

Apalagi anak magang

Wah, ini ada sesuatu yang aneh

Kalau anak magang bisa akses database production langsung ya

Jadi ya gitulah

Kalau saya pernah

Arcing, delete

Tetapi lupa supply

Pathreal-nya

Terus, kehapus dong

Ya kehapus lah

Production

Harusnya path-nya itu A, B, C, D, E, E

A, B, C, D

Tetapi

Waktu di concat itu C dan D-nya

String kosong

Jadinya A, B aja

Jadi semua yang di belakang A, B itu

Ke delete

Aduh kan diwasa

Tapi itu jalannya di GitHub Action

Dan saat deploy

Loh, kok ilang semua

Hati-hati yang kalau pakai

Siapa yang ngerubah kondisional ini

Wah, dilihat

Ya

Tapi bisa recover

Berhasil recover atau

Tidak

Pertanyaannya, saya nggak tahu file apa yang kehapus

Jadi, yang penting-penting

Berhasil recover

Tetap ada backup-nya

Backup file-nya itu kebetulan nggak ada

Jadinya ada yang hilang sih, tapi ya

Ya sudahlah

Ya sudahlah ya

Lesson learned

Pendewasaan ini ya

Tapi bukan saya

Saya bukan, bukan saya penyebabnya

Saya yang dipanggil untuk

Nge-recover

Di investigasi

Recover

Nggak, langsung kayak

Kalau bahas di rumah sakit, code blue

Kayak langsung

Kebakaran

Emergenci, dan saya yang ditugaskan

Untuk merecover itu semua

Secepat mungkin

6 jam saya, sampai jam 12 malam

Baru bisa recover

Berapa situs ya

16 situs

Banyak ya

Itu pendewasan diri ya

Kalau mau jadi senior engineer

Harus melewati fase itu ya

Harus pernah horror story

Besok paginya

Nulis RCA

Postmortem

Postmortem

Sudoh RMRS

Sudoh ya

Ya bukan sudoh, arcing, arcing delet

Itu juga masalahnya

Bahaya, sama bahaya

Sama RMRF

Sama

Menghilangkan sesuatu

Dengan cara yang berbeda

Kalau database

Nggak sih

Kalau database, rusaknya karena itu tadi

Ya saya lakukan delet

Tapi kebanyakan, tapi lupa

Aplikasinya, replikasinya

Yang lain, akhirnya terjadi

Out of sync, database nya

Loking, segala macam

Ya

Sakit kepala disitulah

Membantu situs

Plug Merah

Dia juga

bottleneck nya

Di web server, di hujung nih

Banyak traffic, tapi database nya

Satu, dan nggak ada caching

Itu juga masalahnya

Banyaklah

Pertanyaan terakhir

Ini tentang trigger

Ini mirip juga, kayak tadi kita udah bahas

Store procedure ya, trigger juga sama

Susah maintenance trigger

Betul

Preferensi ku adalah

Mendingan di aplikasi

Karena tidak semua orang

Aware tentang store procedure

Tidak semua orang mengerti

Bagaimana membaca itu

Kalau aplikasi kan sudah fair sama semua ya

Mengerti tahu bahwa itu ada

Cron job, atau ada

Triggering suatu disitu

Paling mentok

Yang aku pakai di post way itu

Adalah auto

Out of sync

Listen change

Jadi ketika ada

Kita kayak, web server itu ya

Kalau misalnya ada suatu

Table, kita bisa listen

Ketika ada perubahan, dia

Otomatis juga menghasilkan

Data yang paling baru

Disana, jadi ada itu di post way

Dan digunakan sama

Beberapa anak siruan

Sebatas itu

Kayak custom

Bikin

SPG

SPG, PGL sendiri

Itu terlalu

Terlalu ini

Terlalu susah untuk

Dipahami

Terlalu susah untuk dipahami, iya

Jadi, sebar-sebar ya bisnis logicnya ya

Lo masih live

Mereka, lo masih live ya

Banyak yang curhat soalnya

Banyak yang curhat

Ini baru mau udahan

Udah pertanyaan terakhir

Gimana, kita cukupkan?

Cukup

Kita cukupkan sampai disini, berarti kesimpulannya adalah

Kalau mau scaling data bis

Pertama yang dilakukan vertical scaling

Dulu ya, sampai mentok

Sampe mentok budgetnya

Ya, sampai mentok

Bukan, sebelum melakukan scaling

Cari tahu justifikasi

Kenapa butuh scaling

Oh iya, ini dulu

Measure dulu

Lambat itu seberapa lambat

Jadi sebelum di optimize

Di measure dulu, oh

Waktu sekarang ini 3 detik

Jangan sampai

Begitu di optimize, malah jadi

6 detik, gitu ya

[tertawa]

Monitoring itu penting

Monitoring itu penting, karena kita bisa tahu

Betul

Sukses apa

Term of suksesnya apa

Kalau optimize, harusnya kan harus lebih cepat

Kalau kita nggak tahu

Berapa lama database

Query-nya dijalankan

Ya, kita nggak bisa measure

Nggak bisa ngitung ini

Jadi lebih baik atau lebih buruk, gitu

Jadi harus measure dulu

Habis itu kalau mau scaling ya

Di check, di check ini dulu ya

Di check query-nya satu-satu

Indexing-nya

Connection pool-nya

Terus ORM-nya

Kalau pakai ORM, di optimize

Query-nya, kalau bisa pakai

Query kalau udah

Lumayan kompleks

Terus habis itu baru

Menuju ke infra

Infra-nya tadi kita nggak bahas ya

Kasing-nya dulu

Kasing-nya dulu

Betul

Kalau misalkan kayak Postgre

Atau MySQL itu kan banyak ya servisnya ya

Ada Cloud SQL

Ada

Aurora

RDS, macam-macam gitu ya

Atau kita bisa sendiri

Menyalahin VM

Install Postgre

Jadi gitu kan bisa juga

Tapi kalau pakai yang servis kan lebih gampang ya

Lebih sederhana

Ada monitoring-nya juga

Terus kalau

Berasa masih lambat

Vertical scaling sampai mentok ya

Mentok, entah itu mentok mesinnya

Atau mentok duitnya, budgetnya

Karena

Semakin ke atas itu

Semakin mahal ya, jaraknya semakin tinggi ya

Harganya

Dan nggak linear ya

Harga Cloud itu nggak linear

Nggak linear

Eksponensial mereka itu

Eksponensial, betul

Kalau setelah vertical scaling

Udah mentok, baru larinya ke

Horizontal ya

Jadi horizontal itu adalah mesinnya dibanyakin

Kalau vertical itu mesinnya

Di upgrade

Abis itu bisa dipecah

Mau dipecah pakai

Replika, partitioning

Sharding

Dan lain-lain

Kalau SQLite beda lagi karena dia satu file

Dan servisnya

Kalau di Cloud-Cloud besar nggak ada ya

Harus bikin sendiri ya, atau pakai

Pocket base tadi

Oke, mungkin cukup

Ada lagi yang mau disampaikan

Sebelum kita udah, cukup

Terima kasih buat teman-teman

Diskusinya seru

Beberapa pertanyaan yang belum terjawab

Mohon maaf belum bisa dijawab

Nanti larinya ke

Github aja

Atau ke Eks

Ke Github

Discussion atau ke Eksnya, Mas Donny

Eksnya apa?

Baru aku liat

Ternyata juga ada bagu hantam

Sedikit informasi aja, di Eks

Sudah ada bagu hantam tentang ORM dan

Rockwell, aku baru liat

Oh iya?

Oh iya?

Apa pas banget kita lagi ngomongin gitu

Tiba-tiba ada bagu hantam

Iya, bagu hantam ini

Ya udah deh

Mas Donny ini yang punya

Manjalah Gatra bukan sih?

Apa?

Bukan!

Sebenernya

Sebenernya, mana ininya

Ini

Terima kasih

Bukan

Iya, Mas Donny harus mampir lagi

Harus

Harus sering-sering mampir ya, jangan sampai

Ya

Oke

Mungkin sekian dulu

Terima kasih buat semuanya, terima kasih juga

Buat Mas Donny yang udah menyempatkan hadir

Terima kasih Mas Donny

Kita ketemu di

Ayo Eks ya

Ayo Eks

Atau di manapun kita ketemu ya

Sampai ketemu

Buat Ivan

Dan Eka, sampai ketemu minggu depan

Bye-bye

Bye-bye

[MUSIK]

Buat eksplorasi, kita akan mencoba.

Deskripsi asli dari YouTube

πŸ—£οΈπŸ•ΈοΈ Selasa malam waktunya #NgobrolinWEB! Malam ini kita akan membedah berbagai cara scaling database. Masih bersama panelis tetap kita Ivan dan Eka. Dan turut mengundang narasumber ahli. 🏷 Gunakan kode NGOBROLINWEBDN dan dapatkan DISKON 10% Untuk Pembelian Web Hosting DomaiNesia: Beli Web Hosting DomaiNesia disini: https://my.domainesia.com/ref.php?u=25754 🎁 DISKON 50% Cloud VPS Turbo dengan Kode Promo: NGOBROLINVPSDN Beli Web Hosting DomaiNesia disin: https://www.domainesia.com/cloud-v Kunjungi https://ngobrol.in untuk catatan, tautan dan informasi topik lainnya.

Episode Terkait

Bagikan:

Suka episode ini?

Episode baru setiap Selasa malam. Dengarkan lewat YouTube, Spotify, atau feed podcast favoritmu.

Pilih Cara Langganan

Memuat komentar dari GitHub Discussions...

Jika komentar tidak muncul karena ekstensi privasi / adblocker, kamu bisa berdiskusi langsung di GitHub Discussions .