Modular Database Management System - Super Group Apacy
mDBMS-Apacy adalah sistem manajemen basis data modular komprehensif yang dibangun dari awal menggunakan Java 17 dan Maven. Proyek ini merupakan tugas akademis yang mendemonstrasikan implementasi komponen inti DBMS termasuk storage management, query processing, concurrency control, dan failure recovery.
Sistem ini diorganisir sebagai monorepo yang terdiri dari 6 modul Maven utama:
- Common (
common/): Modul "Kitab Suci" yang berisi DTOs (record),enum, daninterfaceyang digunakan bersama oleh semua modul lain. - Storage Manager (
storage-manager/): Menangani penyimpanan data fisik, manajemen blok, serialisasi, indexing (Hash, B+ Tree), dan pengumpulan statistik. - Query Optimizer (
query-optimizer/): Bertanggung jawab untuk mem-parsing string SQL menjadi AST (ParsedQuery) dan menerapkan aturan optimasi berbasis heuristik. - Concurrency Control (
concurrency-control/): Mengelola akses data secara konkuren menggunakan locking (LockManager) dan manajemen transaksi. - Failure Recovery (
failure-recovery/): Menjamin konsistensi dan pemulihan data melalui logging (LogWriter) dan mekanisme recovery (LogReplayer). - Query Processor (
query-processor/): Mesin eksekusi utama dan titik masuk CLI (Main.java). Modul ini mengoordinasikan semua modul lain untuk mengeksekusi query dari awal hingga akhir.
Proyek ini mengikuti graf dependensi yang jelas, yang diatur oleh Maven:
- Query Processor (
query-processor/) adalah integrator pusat dan bergantung pada 5 modul lainnya. - Semua 4 komponen lainnya (SM, QO, CCM, FRM) hanya bergantung pada
common. commontidak memiliki dependensi.
- Java 17 (Temurin atau yang setara)
- Maven 3.6+
Compile dan build semua 6 modul dari direktori root proyek:
mvn clean installJalankan semua unit test untuk semua 6 modul:
mvn testTitik masuk utama adalah CLI di modul query-processor.
# Jalankan dari direktori root proyek
mvn -pl query-processor exec:java -Dexec.mainClass="com.apacy.queryprocessor.Main"Ini adalah monorepo public yang digunakan bersama oleh 5 tim (25+ developer). Untuk mencegah kekacauan, kita memberlakukan alur kerja yang ketat menggunakan GitHub Actions (CI) dan CODEOWNERS.
Semua pekerjaan WAJIB mengikuti panduan di dev_workflow.md. (Harap baca file tersebut sebelum memulai).
Aturan Kunci:
- Branch: Semua branch harus mengikuti format
feat/<komponen>/<fitur>(misal:feat/query-processor/implement-join). - PR: Semua kode harus masuk ke
mainmelalui Pull Request (PR). - CI: Semua PR harus lolos CI checks (
mvn clean install&mvn test) sebelum bisa di-merge. - Review: Semua PR wajib mendapatkan minimal satu approval dari
CODEOWNERSkomponen tersebut (misal:@apacy-mdbms/team-qpuntuk perubahan diquery-processor/).
Proyek ini adalah bagian dari tugas akademis untuk mata kuliah IF3140 Sistem Basis Data.