HeadlinesBriefing HeadlinesBriefing.com

InnoDB vs Iceberg: Penjelasan OLTP dan OLAP

Hacker News •
×

Versi pertama repositori analisis saham saya menjalankan analitik di mesin OLTP, dan versi kedua menjalankan beban kerja yang sama di tumpukan OLAP. Saya memilih tumpukan OLAP untuk satu optimasi, tetapi saya harus memahami seluruh lakehouse agar bisa memanfaatkannya.

Desain InnoDB memberikan tiga jaminan yang membentuk pilihan awal saya. Ia menyimpan semua kolom dalam satu baris secara bersamaan, sehingga mengambil satu bar untuk satu simbol hanya menyentuh satu lokasi di disk, yang cocok untuk ingesti. Namun, indikator yang hanya membutuhkan dua kolom tetap mengambil semua kolom melalui buffer pool. Indeks mempercepat pembacaan tetapi memperlambat penulisan, karena setiap penulisan harus memperbarui setiap B-tree dalam tabel. Ini bagus untuk pembacaan selektif dan sangat buruk untuk ingesti yang berat penulisan, itulah sebabnya tabel Raw* saya hanya memiliki primary key.

InnoDB juga menggunakan undo log, yang memungkinkan pembacaan dan penulisan berjalan bersamaan. Ketika sebuah baris diperbarui atau dihapus, nilai lama disimpan agar sesi lain tetap dapat membacanya. Penyisipan menghasilkan undo log yang lebih kecil yang dibersihkan saat commit. Undo log untuk pembaruan dan penghapusan masuk ke daftar riwayat global, yang dibersihkan InnoDB setelah setiap sesi yang dimulai sebelum commit selesai. Mekanisme ini disebut Multi-Version Concurrency Control, atau MVCC, yang memungkinkan penyisipan dan pembaruan terjadi tanpa memblokir pembacaan.

Tanpa menyadarinya, saya telah merancang database InnoDB saya menggunakan prinsip dasar OLAP. Tabel financialdata saya menyimpan tanggal dan waktu bersama harga OHLC, dan setiap indikator teknikal memerlukan join ke tabel tersebut untuk menemukan tanggalnya. Ini adalah salah satu desain data terburuk saya, dan saya baru menyadarinya ketika database sudah berisi lebih dari 100GB data. Memperbaikinya sangat melelahkan.

Sumber: Hacker News · Diringkas oleh HeadlinesBriefing