Friday, May 29, 2015

Manajemen Basis Data 2015

Unknown
Problem: Buana Finance

Abstraksi
Ada sebuah perusahaan leasing bernama Buana Finance. Perusahaan ini memiliki nasabah yang akan melakukan peminjaman uang untuk membeli kendaraan. Sebelum memberikan peminjaman kepada nasabah, Credit Marketing Office (CMO) akan melakukan survey dulu ke tempat nasabah baru memberikan approval untuk peminjaman kepada nasabah tersebut. Setelah di setujui oleh CMO maka petugas perusahaan akan memasukkan data nasabah begitu juga CMO yang bersangkutan sebagai arsip. Nasabah melakukan pembayaran angsuran sesuai dengan perjanjian yang telah ditentukan.
Metodologi
Metodologi yang ditawarkan adalah metodologi active database karena basis data ini akan bertanggung jawab atas dirinya sendiri berdasar ECA Rules yaitu: Event, Condition, Action sehingga ketika data masuk akan langsung di proses untuk menghasilkan aksi yang diinginkan.
Tahap dalam pembuatan

a.  Tahap Perencanaan
Tahapan ini merupakan pendefinisian problem, menentukan metodologi dan sistematika penulisan serta studi literature.


b. Tahap Analisis
Proses identifikasi problem dan mengetahui kebutuhan yang diperlukan perusahaan. Perencanaan pembuatan report yang diperlukan untuk membantu perusahaan

c.       Tahap Perancangan
Pembuatan ERD (Entity Relationship Diagram) dan rancangan basis data aktif berupa rule-rule aktif dan hubungan basis data dengan rule-rule tersebut.

d.      Tahap Implementasi
Penerapan arsitektur basis data ke dalam Data Definition Language (SQL) dan pembuatan trigger serta store procedure. Testing program untuk mengetahui menampilkan report yang diperlukan.

Identifikasi Problem
1.       Perusahaan perlu mengetahui bagaimana angsuran nasabah terbayarkan (monitoring angsuran)
2.       Perusahana perlu mengetahui pergerakan pembelian kendaraan (produk terjual) dan berapa laba perusahaan dari bunga pinjaman.
3.       Perlu diketahui bagaimana proses pengajuan angsuran oleh nasabah disetujui oleh CMO, sehingga atasan dapat mengetahui persetujuan perjanjian leasing tersebut.

Studi Literatur
  1. Basis data aktif (Active Database) merupakan perkembangan dari basis data pasif yang tidak hanya menyimpan data tetapi juga melakukan aksi tertentu terhadap sebuah even dengan menambahkan suatu elemen dinamis yang memiliki kemampuan memantau even kemudia secara aktif melakukan aksi sebagai respon even jika kondisi tertentu terpenuhi. ECA Rules: Event Condition Acton, bisa di representasikan:
    1.       Event merupakan komponen utama yang akan men-trigger rule yang dibuat,
    2.       Condition merupakan pengecekan sebelum action dijalankan,
    3.       Action merupakan statement SQL yang dieksekusi secara otomatis.
    Data Definition Language (DDL)
    DDL merupakan kumpulan perintah SQL yang digunakan untuk membuat, mengubah dan menghapus struktur dan definisi metadata dari objek-objek database. Objek-objek tersebut antara lain: Database, Table, View, Function, Trigger dan Procedure (Stored Procedure).
    Data Manipulation Language (DML)
    DML merupakan kumpulan perintah SQL yang berhubungan dengan pekerjaan mengolah data di dalam table dan tidak terkait dengan perubahan struktur dan definisi tipe data dari objek database seperti table, kolom dan sebagainya.
    Pada tugas kali ini, saya akan menggunakan DDL (Bahasa SQL)  milik Oracle.
    Pemodelan arsitektur database menggunakan PowerDesigner
    Trigger
    Trigger adalah blok PL/SQL yang disimpan dalam database dan akan dikativasi ketika kita melakukan statement SQL (Delete, Update, dan Insert) pada sebuah table. Aktivasi trigger didasarkan pada event yang terjadi di dalam table tersebut sehingga trigger dapat membantu dalam menjaga integritas dan konsistensi data.
    Syntax membuat trigger dalam Oracle:
    create or replace trigger nama_trigger before insert or update on nama_table
    for each row
    begin
         :new.namafield := perintah(:new.namafield )
    end;
    Procedure
    Procedure merupakan blok kode program yang berisi perintah-perintah untuk mengerjakan tugas tertentu. Bila di dalam kode program yang kita buat ada perintah-perintah untuk melakukan tugas yang sama di berbagai tempat, maka lebih baik perintah-perintah tersebut dipanggil dalam procedure.

    Syntax Procedure:
    Create or replace procedure nama_procedure(parameter1, parameter2)
    as | is
    [declaration_section]
    Begin
                    Executable_section
    [Exception]
    End [procedure_name];

    Function
    Function hampir sama dengan procedure, tetapi untuk function PL/SQL akan mengembalikan value (return value)

    Synyax Function:

    Create or replace function function_name(parameter1, parameter2)
    Return data_type
    Is| as
                    Declaration_section
    Begin
                    Executable_section
    [exception]
    End function_name;

Report

Report yang mungkin diperlukan:
1.       Data nasabah
Menampilkan detail nasabah yang terdaftar sebagai pihak kedua (kredit) di perusahaan. Sehingga tidak ada data redundant (yang sama) di dalam database.
2.       Data CMO
Menampilkan nama CMO yang melayani ajuan sewa-guna.
3.       Produk yang terjual
Menampilkan produk/kendaraan apa saja yang terdaftar sebagai kredit dan yang sudah lunas.
4.       Pemasukan dan laba perusahaan
Menampilkan jumlah pemasukan perusahaan dari angsuran kredit nasabah dan bunga.
5.       Transaksi peminjaman uang
Menampilkan jumlah kredit nasabah dan jumlah yang sudah dibayar.
6.       Status survey CMO dan approval
Menampilkan status pengajuan kredit oleh pihak kedua.
7.       Monitoring angsuran nasabah
Menampilkan jumlah angsuran nasabah.

Arsitektur Basis Data
OLTP (Online Transaction Processing)
OLAP (Online Analytical Processing)
OLAP sendiri merupakan sebuah syntax untuk menghasilkan informasi dari data (analisis).
Misal:
Select *from nasabah à untuk menampilkan data nasabah
Select nama vendor from vendormobil v, kredit k, nasabah n where v.kodevendor = (select k.kodevendor from kredir where n.kode_nasabah = k.kode_nasabah) à untuk menampilkan data nama vendor yang dibeli nasabah

Protoype Implementasi

Prototpe implementasi ini merupakan pembuatan trigger, procedure dan function sebagai database aktif sesuai rule masing-masing. Diharapkan ketika user memasukkan data, maka ketiga tameng tadi akan berkasi memberikan hasil yang diminta.

1.Trigger untuk membantu user memasukkan data secara rapi (UpperCase)
trigger ini berguna untuk membantu user dalam ketika terjadi salah penginputan nama (huruf kecil/besar)
2. Function untuk menampilkan jumlah angsuran yang sudah terbayar oleh nasabah
function ini berguna bagi nasabah ataupun perusahaan untuk mengetahui angsuran yang sudah dibayarkan oleh nasabar sebagai monitoring perusahaan
1.     3.  Function untuk mengetahui apakah kendaraan sudah lunas terbayar oleh nasabah
4. Procedure untuk melihat apakah nasabah sudah pernah terdaftar dalam database perusahaan
Kesimpulan
·        Memberikan kemudahan untuk DBA dalam memasukkan data nasabah baru dengan rapi
·        Membantu administasi dalam mengetahui jumlah angsuran yang sudah dibayarkan oleh nasabah
·        Dapat mengetahui dengan cepat pemasukan dan laba perusahaan melalui angsuran dan bunga yang sudah dibayarkan nasabah
·        Manajer dapat mengetahui bagaimana status pengajuan leasing oleh nasabah sudah di terima/ di tindaklanjuti oleh CMO
·        Dapat meningkatkan kinerja karyawan dalam proses perhitungan yang dibutuhkan (angsuran, kendaraan yang sudah lunas, dkk.)

Daftar Pustaka








Friday, February 27, 2015

Active Database

Unknown
Active Database -->  database yang bertanggung jawab atas dirinya sendiri

Database model ini lebih baru dibanding Database Conventional (Passive Database) yang data-datanya diolah secara manual.

Database Aktif --> event-driven architecture (ECA Rules) --> Event, Condition, Action

Event -->kapan trigger dikerjakan
Action-->Apa yang dikerjakan

Passive Database

Ketika dijalankan perntah untuk melihat data, maka yang data yang diperlihatkan akan sama persis seperti yang di inputkan

Misal kita mau, jika data nama yang dimasukkan semua dalam huruf besar. Budi/budi/bUdi-->BUDI

Bagaimana caranya?

Active Database

Disini kita akan menyediakan suatu trigger untuk tabel mahasiswa tersebut.

Trigger --> berjalan di depan tabel (kalau tabel di drop --> trigger bunuh diri)

Syntax untuk membuat trigger

create or replace trigger nama_trigger before insert or update on nama_table
for each row
begin
     :new.namafield := perintah(:new.namafield )
end;






Maka jika dimasukkan data yang sama, yang dimasukkan adalah BUDI bukan Budi.





Monday, January 5, 2015

FILESYSTEM in USERSPACE (FUSE) in Linux by C Language

Unknown
Filesystem atau dalam bahasa Indonesia lebih dikenal sebagai Sistem Berkas merupakan tempat pengorganisasian data pada sebuah komputer. Merupakan sebuah struktur logika yang digunakan untuk mengendalikan akses terhadap data pada Secondary Storage pada komputer.

Ada berbagai jenis file system, mungkin yang banyak kita kenal adalah FAT32, ext4, ext3, etc.

Virtual File System <VFS>

Sistem operasi yang modern adalah sistem operasi yang mampu mengimplementasikan berbagai sistem berkas dengan tipe yang berbeda dalam waktu yang bersamaan. Salah satu solusinya adalah dengan menggunakan VFS.

Ide dari VFS adalah meletakkan informasi di kernel untuk merepresentasikan keseluruhan tipe sistem berkas dan juga terdapat sebuah fungsi untuk setiap operasi yang dimiliki sistem berkas.

VFS berbeda dengan file system tradisional yang menyimpan data ke disk dan mengambilnya langsung dari disk. VFS bertindak sebagai pandangan/terjemahan dari file system yang sudah ada.

Filesystem in Userspace (FUSE)

FUSE sendiri memungkinkan pnegguna untuk menciptaka file system mereka sendiri tanpa mengubah kode kernel.

Bagaimana caranya?Dengan menjalankan kode file system di userspace dan modul FUSE akan menyediakan "jembatan" untuk antarmuka kernel.

FUSE berguna untuk menulis VFS.


 Modul FUSE kita yang nanti akan kita buat, akan dapat dihubungkan dengan suatu folder yang ada di filesystem milik kita dengan cara di mount.

NB: UNTUK MENJALANKAN FUSE INI KITA PERLU INSTALL DULU DI SISTEM OPERASI MASING-MASING!

Link download fuse: Fuse (bagian stable release)

(Proses install di S.O. diserahkan kepada user masing-masing)

Cara Kerja FUSE:
  • fuse_main() (lib/helper.c) = sebagain fungsi main (userspace), program user memanggil fungsi fuse_main() kemudian fungsi fuse_mount() dipanggil.
  • fuse_mount() (lib/mount.c) = menciptakan UNIX domain socket, kemudian di fork dan menciptakan child process yang menjalankan fusermount
  • fusermount() (util/fusermount.c) = untuk mengecek apakah modul FUSE sudah di load. Kemudian membuka /dev/fuse dan mengirim file handle melalu UNIX domain socket kembali ke fungsi fuse_mount()
  • fuse_new() (lib/fuse.c) = menciptakan struktur data yang berisi ruang yang digukanan untuk menyimpan data file system
  • fuse_loop() (lib/fuse.c) = membaca file system calls dari /dev/fuse

 Ini adalah beberapa fungsi yang disediakan oleh FUSE dan akan berguna kita pakai nantinya:
  1. int (*getattr) (const char *, struct stat *);
    Get file attributes.
  2. int (*readlink) (const char *, char *, size_t);
    Read the target of a symbolic link
  3. int (*mknod) (const char *, mode_t, dev_t);
    Create a file node. 
  4. int (*mkdir) (const char *, mode_t);
    Create a directory.
  5. int (*unlink) (const char *);
    Remove a file
  6. int (*rmdir) (const char *);
     Remove a directory
  7. int (*rename) (const char *, const char *);
    Rename a file
  8. int (*chmod) (const char *, mode_t);
    Change the permission bits of a file
  9. int (*chown) (const char *, uid_t, gid_t);
    Change the owner and group of a file
  10. int (*truncate) (const char *, off_t);
    Change the size of a file
  11. int (*open) (const char *, struct fuse_file_info *);
    File open operation.
  12. int (*readdir) (const char *, void *, fuse_fill_dir_t, off_t, struct fuse_file_info *);
    Read directory
  13. int (*read) (const char *, char *, size_t, off_t, struct fuse_file_info *);
    Read data from an open file
  14. int (*write) (const char *, const char *, size_t, off_t, struct fuse_file_info *);
    Write data to an open file
IMPLEMENTASI
Kita harus deklarasikan fungsi-fungsi itu di struct dulu
main dari fuse yang kita bikin










fungsi yang mau di implementasikan
Program di atas ketika dijalankan akan mampu me-ngemount ke path yang ada di atas. Setelah program dijalankan maka folder dari path akan terubung ke /tmp/fuse kita yang tadi kita buat. Pada saat itu, kita tidak dapat melakukan apa-apa, tetapi karena kita punya dua fungsi yaitu rmdir dan mkdir maka kita dapat membuat dan menghapus direktori di folder tersebut yang juga akan terupdate di folder yang kita mount tadi.

Conclusion:
Dengan menggunakan FUSE, pengguna dapat menciptakan sistem berkasnya sendiri dengan berbagai modifikasi (misal tidak bisa membuka file/tidak dapat dapat mengedit file) tanpa mengubah kode kernel. 











Powered by Blogger.

Text

Popular Posts