Anda di halaman 1dari 12

Ringkasan Catatan Kuliah : Berkas dan Akses Dosen : Bambang Wahyudi, Skom., MMSI.

PENDAHULUAN Mata kuliah ini membahas pembentukan (pengorganisasian) suatu berkas (file), dan pemrosesannya (akses). Untuk mempelajari mata kuliah ini, prasyarat yang harus dimiliki mahasiswa adalah, mereka (mahasiswa) telah sering (sedapatnya mahir) membuat program untuk memasukkan data secara permanen di eksternal memori komputer, dan mengolah data tersebut. Disarankan bahasa pemrograman yang digunakan adalah bahasa pemrograman yang bersifat generik (seperti BASIC, PASCAL, COBOL, dan sejenisnya), karena bahasa pemrograman semacam ini mengharuskan si pembuat programnya untuk selalu membuat program setiap kali melakukan proses terhadap datanya. Tidak ada fasilitas (perintah) untuk menghapus record, mensortir data, dan sebagainya, melainkan ia harus membuat programnya sendiri. Mata kuliah ini menggambarkan betapa sulitnya si pembuat bahasa pemrograman untuk membuat algoritma bagaimana data itu disimpan, dan bagaimana data yang disimpan itu dapat ditemukan kembali. Catatan ini hanya berupa catatan ringkas/ tambahan dari buku paket yang ada, karenanya, pelajari pula buku paket itu. BERKAS Berkas atau file ada berbagai jenis, hal itu dapat dilihat dari nama ekstensi filenya. Misalkan untuk nama file dengan ekstensi BAS adalah file program yang ditulis dengan bahasa pemrograman BASIC, DBF adalah file data yang dibuat dengan bahasa pemrograman dBase, NTX adalah file indeks yang dibuat dengan bahasa pemrograman Clipper, dan lain sebagainya. Dari berbagai jenis file, mata kuliah ini hanya akan membahas file data. File data tediri atas 2 jenis, yaitu (1) master file, dan (2) transaction file. Sementara itu, master file terdiri atas (1) reference master file, dan (2) dynamic master file. MASTER FILE

Master file (berkas induk) adalah file yang berisi objek-objek yang harus ada di sebuah unit kerja (enterprise). Misalkan, di sebuah perguruan tinggi, objek-objek yang harus ada seperti (1) mahasiswa, (2) dosen, (3) mata kuliah, (4) biaya kuliah, (5) ruang kelas, dan sebagainya. Objek-objek tersebut harus disimpan datanya di dalam file komputer, dan akan masuk ke dalam katagori master file. Dynamic master file adalah master file yang salah satu atau lebih atributnya (field) akan berubah nilai datanya bila terjadi suatu transaksi. Sebaliknya, reference master file adalah master file yang seluruh atributnya tidak mengalami perubahan jika terjadi suatu transaksi (hanya digunakan sebagai referensi saja). TRANSACTION FILE Transaction file adalah berkas transaksi yang harus disimpan di dalam media penyimpanan eksternal komputer. Transaction file terjadi akibat adanya hubungan (relasi) antarmaster file. Misalkan, di perpustakaan ada master file PEMINJAM, dan BUKU. Ketika PEMINJAM melakukan peminjaman BUKU, maka terjadilah transaksi, dan transaksi tersebut harus dicatat, misalkan di file transaksi dengan nama PINJAM. Mengacu pada prinsip basis data, tidak boleh ada atribut yang ganda (berisi sama) di semua file data yang ada kecuali untuk atribut kuncinya (key field), maka pada file data PINJAM, tidak boleh ada atribut nama peminjam dan buku yang dipinjam (lihat gambar 1). Ketika transaksi PINJAM terjadi, tidak satupun atribut PEMINJAM mengalami perubahan, maka file PEMINJAM adalah file berjenis reference master file. Sedangkan pada file BUKU, ada atribut yang berubah nilai datanya, yaitu atribut jumlah buku. Ketika transaksi PINJAM terjadi, jumlah buku yang ada akan berkurang karenanya. Dengan demikian, file BUKU termasuk file berjenis dynamic master file.
NAMA DENDA *NO_ANG ALAMAT *KD_PINJ TGL_KEM JUDUL *KD_BUKU

PEMINJAM

PINJAM

BUKU

JUMLAH

PENGARANG TGL_PINJ **NO_ANG **KD_BUKU TH_TERBIT

Gambar 1. Relasi antarmaster file yang membentuk transaction file

PENGORGANISASIAN BERKAS Data yang disimpan ke media penyimpanan eksternal di komputer harus diorganisasikan agar data tersebut dapat diambil kembali (retrieve) untuk selanjutnya dilakukan pengolahan. Ada 4 macam pengorganisasian file, yaitu (1) sequential, (2) relative, (3) index sequential, dan (4) multi key. Yang mana yang akan dipilih, tentunya dengan mempertimbangkan bagaimana data tersebut kelak akan diproses. SEQUENTIAL ORGANIZATION FILE Sequential (=berurutan), record pertama yang dmasukkan akan menempati posisi pertama di media penyimpanannya, dan seterusnya. Jika akan dilakukan pemanggilan record yang telah disimpan (retrieval), maka komputer akan selalu membaca dari record pertama hingga ditemukanya record yang dicarinya. Keefisienan pembuatan organisasi seperti ini adalah jika semakin besar nilai dari jumah record yang akan diolah dibagi dengan jumlah record keseluruhannya (diistlahkan dengan perhitungan hit ratio) maka akan semakin efisien. Sebagai gambaran, jika semakin banyak lagu yang akan kita dengar dari sebuah kaset, maka akan semakin menguntungkan menggunakan kaset itu dibanding jika kita hanya ingin mendengar satu lagu (apalagi letaknya di paling akhir) dari kaset itu. RELATIVE ORGANIZATION FILE Jika pada organisasi file sequential digambarkan sebagai sebuah kaset, maka organisasi file relatif digambarkan sebagai sebuah compac disk (CD). Kita bisa langsung memilih lagu mana yang akan kita dengarkan tanpa harus didahului (mendengarkan) lagu sebelumnya. Relatif dapat diartikan langsung. Pengorganisasian relatif memungkinkan kita memproses record yang mana saja secara langsung tanpa harus melalui (membaca) recordrecord yang lainnya. INDEXED SEQUENTIAL ORGANIZATION FILE Penyusunan data dengan organisasi indexed sequential dapat digambarkan sebagai meyusun kata dalam sebuah kamus. Kita dapat mencari kata dalam kamus secara sequential maupun dengan memanfaatkan indeksnya. MULTI KEY ORGANIZATION FILE

Organisasi file jenis ini memungkinkan kita mengakses data dengan menggunakan banyak atribut kunci (key field). Pengorganisasian ini hampir sama dengan organisasi file relatif, bedanya, pengorganisasian relatif hanya memiliki sebuah key field, sedang organisasi ini memiliki lebih dari satu key field. Hal ini dilakukan karena banyak pengguna data yang akan mengakses data yang sama tetapi sesuai dengan keinginannya masingmasing. Misalkan, terhadap data tabungan di bank, nasabah menggunakan nomor PIN untuk melakukan transaksi atas data tersebut, sedangkan pegawai bank ada yang menggunakan nomor rekening, ada yang menggunakan jumlah tabungan dan sebagainya, sesuai dengan tujuannya masing-masing. PENGAKSESAN DATA Data yang sudah disimpan dapat diakses melalui teknik pengaksesan secara sequential maupun direct. Semua bentuk organisasi file dapat diakses secara sequential, tapi organisasi file sequential tidak dapat diakses secara direct. Akses secara direct memerlukan key field untuk mendapatkan sebuah record yang dicari, sedangkan organisasi file sequential tidak memiliki (tidak memerlukan) key field. Pengaksesan data dapat dilakukan secara batch, maupun secara iterative. Proses pemberian nilai untuk data Daftar Nilai Semester (DNS) dilakukan secara batch, yaitu, semua nilai dari dosen dan dari proses scanning (jawaban di kertas OMR) dikumpulkan terlebih dulu. Setelah semua terkumpul, barulah diproses nilainya dan dicetak DNS seluruhnya untuk dibagi kepada mahasiswa. Sedangkan proses pencetakan Kartu rencana Studi (KRS) dilakukan secara iterative (dikenal dengan istilah on-line). Setiap mahasiswa yang telah selesai mengisi KRS akan mendapatkan cetakan KRS secara langsung tanpa harus menunggu semua mahasiswa melakukan pengisian KRSnya. TEKNIK PENGALAMATAN (ADDRESSING) Hal yang sangat penting dipertimbangkan dalam pembentukan organisasi file adalah proses penempatan datanya di memori sekunder komputer. Hal ini bertujuan agar data yang telah disimpan dapat diambil atau diraih (retrieve) kembali dengan menunjuk lokasi alamat data tersebut di memori. Gambar 2 di bawah ini menggambarkan berbagai teknik pengalamatan data :

R(Nilai_Key)

Alamat

Pemetaan Langsung (Direct Mapping)

Pemetaan Tabel (Directory Look-up)

Kalkulasi (Calculating)

Pengalamatan Mutlak

Pengalamatan Relatif

Gambar 2. Berbagai Teknik Pengalamatan Data Pemetaan di memori dilambangkan dengan : R(nilai_key) Alamat. Alamat ditentukan oleh nilai sebuah key fieldnya. Organisasi file secara sequential yang tidak membutuhkan key field tidak menggunakan teknik pengalamatan yang akan dibahas ini. PENGALAMATAN MUTLAK Pengalamatan mutlak adalah teknik pengalamatan yang keseluruhannya diberi wewenang kepada programmernya. Programmer bebas menentukan di alamat mana suatu record akan disimpan. Sangat mudah, tapi bila data yang disimpan relatif banyak, apakah si programmer masih hafal di mana alamat suatu record yang akan diaksesnya ?. PENGALAMATAN RELATIF Pengalamatan relatif adalah penunjukan alamat memori sesuai dengan nilai yang ada di key fieldnya. Karena key field biasanya berisi kode, misalkan NPM, maka akan terjadi pemborosan penggunaan alamat. Misalkan, NPM = 30199899, maka record mahasiswa tersebut akan disimpan di alamat 30199899, padahal, mungkin jumlah keseluruhan mahasiswa hanya berkisar 30000 orang saja, tidak sampai 30 jutaan seperti yang ditunjukkan NPM. Karena NPM digunakan sebagai kunci atribut, maka hal itu tidak cocok bila digunakan teknik pengalamatan relatif seperti ini. Dengan jumlah nahasiswa yang 30000 tentunya harus digunakan key field yang hanya terdiri atas 5 digit saja. PEMETAAN TABEL

Untuk mengatasi pemborosan yang terjadi di pengalamatan relatif, maka cara pemetaan tabel (directory look up) ini bisa digunakan sebagai solusinya. Teknik ini memisahkan record data lainnya dengan key fieldnya. Semua key field disatukan dalam sebuah tabel yang di dalam tabel tersebut dipetakan alamat record datanya, semacam mencari katalog di perpustakaan yang jika katalog itu ditemukan maka buku yang akan dipinjam diketahui lokasi tempat penyimpanannya. Masalahnya, jika mencari katalognya secara berurut (sequential), maka akan memakan waktu yang relatif lama, karenanya ada yang mencarinya dengan cara binary search tree, misalkan ia mencari dari tengah tumpukan katalog, bila kurang, ia cari tengahnya lagi dengan kartu katalog yang paling belakang, tetapi bila lebih ia akan mencari tengahnya lagi dari kartu katalog terdepan, dan seterusnya. KALKULASI Jika pemetaan tabel diharuskan membuat tabel (file) baru yang berisi seluruh key field dan alamat recordnya, maka pada teknik kalkulasi ini dicoba untuk tidak perlu membuatnya. Akan dihitung sedemikian rupa dari key fieldnya untuk mendapatkan alamat yang akan ditempati record (data)nya. Teknik kalkulasi yang dibahas adalah teknik hashing yang umumnya terdiri atas (1) division remainder, (2) mid square, dan (3) folding. DIVISION REMAINDER (SISA PEMBAGIAN) Alamat diperoleh dengan menentukan sisa hasil pembagian atas key fieldnya. Faktor pembaginya bisa berbagai macam, ada yang membagi dengan bilangan prima, dan bisa juga sembarang bilangan. Contoh sisa pembagian : 100/3 sisa pembagiannya = 1. Cara seperti ini bisa mengakibatkan adanya hasil perhitungan yang sama, akibatnya, akan terjadi beturan (pemakaian alamat yang sama untuk lebih dari record yang berbeda). Benturan diistilahkan dengan collision. Tentunya, salah satunya harus ditempatkan di alamat yang berbeda.

MID SQUARE HASHING Penghitungan alamat dengan cara mid square hashing adalah dengan cara mengkuadratkan nilai key fieldnya (square), kemudian diambil sejumlah digit (sepanjang digit key fieldnya) di tengah-tengah dari nilai kuadrat itu.

HASHING BY FOLDING Penghitungan dengan cara ini adalah dengan mempartisi nilai key ke dalam beberapa partisi (sesuai dengan banyak digit alamat yang kita butuhkan) dari kanan. Bagian-bagian itu kita susun ke bawah dan dijumlahkan, hasilnya, kita ambil sebanyak digit yang kita inginkan untuk alamat di memori yang dimulai dari kanan. Folding = lipatan. Cara ini tetap memiliki risiko adanya collision. PENANGANAN COLLISION Satu lokasi memori hanya dapat digunakan untuk menyimpan satu satuan data saja. Bila hasil perhitungan atas key field untuk menentukan alamat memori antara satu key field dengan key field lainnya sama, maka hanya satu yang akan ditempatkan di alamat hasil perhitungan itu, yang lainnya harus dicarikan alamat lainnya. Empat pendekatan untuk mencarikan alamat lainnya itu, yaitu (1) open addressing, (2) addressing overflow/ separate overflow, (3) synonim chaining, dan (4) bucket addressing. Adapun teknik yang digunakan adalah (1) linear probing, dan (2) addressing overflow/ separate overflow. LINEAR PROBING Jika suatu record tidak bisa menempati lokasi di memori sesuai dengan hasil perhitungannya (home address) karena sudah ditempati oleh record lainnya, maka ia harus dicarikan lokasi lainnya. Pencarian dilakukan dengan menambahkan hasil perhitungan itu dengan 1 hingga ke alamat yang masih kosong, dan bila hingga ke batas akhir alamatnya tidak ditemukan, maka lakukan dari 1 lagi.

ADDRESSING OVERFLOW/ SEPARATE OVERFLOW Pada linier probing, dikhawatirkan tidak ada lagi tempat yang kosong, atau penempatan record yang terjadi coliision akan menempati alamat sebenarnya dari record lain, maka bila itu terjadi, pada teknik addressing overflow ini, selain disediakan di primary area, disediakan pula tempat lain di luar primary area (batasan alamat yang seharusnya), yaitu di overflow area.

Di overflow area pun perlu dicek, apakah sudah ada record lain yang telah menempatinya, hal ini menjadikan kita perlu melakukan hashing kembali (double hashing). SYNONIM CHAINING Synomim chaining memberi tahu rangkaian alamat berikutnya dari record yang terjadi collision. Jadi, ada next pointer untuk menunjuk ke alamat lainnya yang pada perhitungan sebelumnya terjadi nilai yang sama. Dalam materi struktur data, hal ini dikenal dengan istllah linked list. Jadi, komputer tidak perlu mencari alamat record yang terjadi collision karena sudah ada di penunjuknya (pointer).

BUCKET ADDRESSING Data yang terjadi collision diletakkan dalam satu blok (bucket), baik di primary area maupun di overflow areanya. Bila satu blok sudah penuh, maka akan ada penunjuk (pointer) untuk menunjuk blok berikutnya. Penempatan data di blok bisa diurut sesuai key fieldnya atau sesuai urutan datangnya data. MEDIA PENYIMPANAN DATA

Salah Satu Bentuk Format Media Penyimpanan DASD (Hard Disk)

Gambar 1. Moving head disk mechanism Sumber : Operating System Concept, James L. Peterson, and Abraham Silberschatz. Hal 244. Penyimpanan data dilakukan secara magnetis di permukaan disk (ada dua permukaan setiap disk) oleh read/ write head. Setiap permukaan disk secara logically dibagi atas ratusan track dalam silinder. Penyimpanan data di dalam media penyimpanan menggunakan teknik pengalamatan (addressing). Di hard disk ada 2 teknik pengalamatan, yaitu (1) Cylinder Method/ CM, dan (2) Sector Method/ SM. Pada teknik CM, pengalamatan dilakukan berdasarkan nomor silinder, nomor permukaan, dan nomor record. Untuk teknik SM, pengalamatan dilakukan berdasarkan nomor sektor, nomor track, dan nomor permukaan. Waktu akses pada hard disk dihitung berdasarkan : a. Seek time (waktu cari) : Waktu yang digunakan tangkai arm (yang menggerakkan read-write head) ke posisi silinder yang tepat. b. Head switching (penempatan posisi head) ke track dan permukaan disk yang tepat. c. Rotational delay (penangguhan pemutaran), berputarnya piringan disk agar data yang diperlukan berada di bawah (dibaca) headnya. d. Data transfer, waktu yang dibutuhkan untuk mentransfer data dari disk ke memori utama dan sebaliknya melalu read-write head.

Salah Satu Bentuk Format Media Penyimpanan SASD (Tape/ kaset) Dulu, orang menggunakan kaset biasanya digunakan untuk menyimpan data cadangan (back up), karena harganya relatif lebih murah dan memuat lebih banyak data yang dapat disimpan dari pada DASD, tapi kini sudah amat jarang orang yang menggunakan media ini. Ada kaset yang terdiri atas 7 track, dan ada pula yang 9 track, dsb., Dalam setiap block ada 2 buah celah pemisah (gap), yaitu : (1) inter record gap (IRG), dan (2) inter block gap (IBG). Sewaktu menlis data, di akhir block selalu diberi gap yang panjangnya sekitar 0,6 inch, dan sewaktu membaca selalu dimulai dari karakter petama setelah gap sampai ditemukan gap berikutnya. Lamanya waktu head melewati gap tersebut disebut dengan speed-up time. Jadi, antara 1 record dengan record lainnya ada batas, antara 1 block dengan block lain, ada batas, dan di akhir file ada batas lagi yang disebut dengan tape mark. Jika satu block terdiri dari 4 record, maka disebut blocking factor = 4. RECORD FORMAT Ada berbagai macam record format, yaitu : . Fixed unblocked . Fixed blocked . Variable unblocked . Variable blocked . Undefined . Spanned Syarat fixed unblocked 1. Semua record (logical-record) sama panjang, misal 160 karakter 2. Tiap data area (block-physical record) berisi satu logical record (setiap record adalah satu block yang masing-masing block dipisahkan oleh IRG)

RECORD

RECORD

RECORD

IRG

IRG

IRG

IRG

Syarat fixed block 1. Semua logical record sama panjang, misal 160 karakter

2. Tiap data area (block-physical record) berisi lebih dari satu logical record 3. Semua block (physical record) sama panjang, kecuali block terakhir 4. Blocking factor harus selalu sama

RECORD

RECORD

RECORD

RECORD

RECORD

RECORD

IBG

IRG

IBG

IRG

IBG

IRG

IBG

Syarat variable unblock 1. Panjang tiap logical record tidak sama . (variabel) 2. Panjang setiap physical record juga tidak selalu sama 3. Tiap block (data area) berisi satu logical record dan field khusus BL (block length) dan RL (record length)

BL

RL

RECORD

BL

RL

RECORD

BL

RL

RECORD

IRG

IRG

Syarat Variabel Block . Panjang tiap logical record tidak sama . (variabel) . Panjang tiap block juga tidak sama. Jumlah logical record dalam block juga bervariasi (tidak ada blocking factor)
BL RL RECORD RL RECORD RL RECORD

IRG

IRG

Syarat Undefined : . Tiap logical record tidak sama panjang . Tiap block satu logical record (tidak ada block) . BL dan RL tidak ada

RECORD

RECORD

RECORD

RECORD

RECORD

IRG

IRG

IRG

IRG

IRG

IRG

Syarat Spanned . Panjang tiap physical record (block) adalah sama . Panjang tiap global record tidak sama . Satu logical record mungkin berada di dalam lebih dari satu physical record
RECORD RECORD REC

RE

CORD

ORD

RECOR

IBG

IBG

IBG

IBG

IBG

Untuk melakukan cek kebenaran penulisan data, kaset menyediakan satu buah tracknya untuk diisi bit 1. Ada 2 jenis pengecekan, yakni (1) odd parity check atau koreksi paritas ganjil, dan (2) even parity check atau koreksi paritas genap. Misal, track : 1 berisi 2 berisi 3 berisi 4 berisi data data data data : : : : 111 001 101 110

maka dengan odd parity check, track ke 5 dan karakter ke 4 (untuk koreksinya) akan berisi: [bila dijumlahkan ke kanan maupun ke bawah harus menjadi ganjil] 1 berisi data : 1 1 1 0 2 berisi data : 0 0 1 0 3 berisi data : 1 0 1 1 4 berisi data : 1 1 0 1 5 berisi data : 0 1 0 1