- Program server berjalan sebagai daemon
- Untuk bisa akses console database, perlu buka program client (kalau di linux seperti command mysql di bash)
- Program client dan utama berinteraksi lewat socket
- Program client bisa mengakses server dari mana aja
📗 Autentikasi
-
Ada username dan password tertentu untuk bisa akses database yang dia punya hak. Jika root (sudo) bisa akses semua database (tidak perlu didefinisikan secara rinci haknya, hanya dia bisa akses atau nggak).
-
Username, password, dan hak akses db disimpan di suatu database juga, tapi tidak ada user yang bisa akses database tersebut kecuali mengakses menggunakan root.
📗 Authorisasi
- Untuk dapat mengakses database yang dia punya permission dengan command. Pembuatan tabel dan semua DML butuh untuk mengakses database terlebih dahulu.
- Yang bisa memberikan permission atas database untuk suatu user hanya root.
- User hanya bisa mengakses database dimana dia diberi permission untuk database tersebut.
📗 Data Definition Language
-
Input penamaan database, tabel, dan kolom hanya angka dan huruf.
-
Semua user bisa membuat database, otomatis user tersebut memiliki permission untuk database tersebut.
-
Root dan user yang memiliki permission untuk suatu database untuk bisa membuat tabel untuk database tersebut, tentunya setelah mengakses database tersebut. Tipe data dari semua kolom adalah string atau integer. Jumlah kolom bebas.
-
Bisa melakukan DROP database, table (setelah mengakses database), dan kolom. Jika sasaran drop ada maka didrop, jika tidak ada maka biarkan.
📗 Data Manipulation Language
-
INSERT Hanya bisa insert satu row per satu command. Insert sesuai dengan jumlah dan urutan kolom.
-
WHERE Command UPDATE, SELECT, dan DELETE bisa dikombinasikan dengan WHERE. WHERE hanya untuk satu kondisi. Dan hanya ‘=’.
📗 Logging
- Setiap command yang dipakai harus dilakukan logging ke suatu file dengan format. Jika yang eksekusi root, maka username root.
📗 Reliability
- Harus membuat suatu program terpisah untuk dump database ke command-command yang akan di print ke layar. Untuk memasukkan ke file, gunakan redirection. Program ini tentunya harus melalui proses autentikasi terlebih dahulu. Ini sampai database level saja, tidak perlu sampai tabel.
Contoh hasil isi file database1.backup:
- Program dump database dijalankan tiap jam untuk semua database dan log, lalu di zip sesuai timestamp, lalu log dikosongkan kembali.
📗 Tambahan
📗 Error Handling
- Jika ada command yang tidak sesuai penggunaannya. Maka akan mengeluarkan pesan error tanpa keluar dari program client.
📗 Extra
- Program client dan dump berkomunikasi dengan socket ke program utama dan tidak boleh langsung mengakses file-file di folder program utama.
- Requirement disini adalah requirement minimum, jika Anda mengerjakan melebihi requirement disini, maka akan mendapat nilai tambah.
- Terapkan apa saja yang sudah kalian pelajari di praktikum sistem operasi ini untuk mengerjakan final project.