Organisasi berkas sekuensial merupakan salah satu metode penyimpanan data yang umum
digunakan dalam sistem komputer. Dalam organisasi berkas sekuensial, data disimpan secara
berurutan dalam suatu berkas, dan akses dilakukan secara sekuensial dari awal hingga akhir. Metode
ini memiliki karakteristik tertentu yang mempengaruhi efisiensi akses dan manipulasi data. Makalah
ini akan membahas konsep, kelebihan, kelemahan, dan penerapan organisasi berkas sekuensial.
Organisasi berkas sekuensial mengacu pada penyimpanan data secara berurutan. Data disusun
dalam urutan logis atau fisik tertentu, dan operasi membaca atau menulis dilakukan dari awal hingga
akhir. Setiap catatan atau rekaman diakses sesuai dengan urutan posisinya dalam berkas. Posisi data
sebelumnya harus dilewati untuk mencapai data yang diinginkan.
Organisasi berkas sekuensial sering digunakan dalam aplikasi di mana data diakses atau dimanipulasi
secara berurutan. Contohnya termasuk pemrosesan file teks, pengolahan file log, atau pengolahan
data yang dihasilkan secara sekuensial oleh suatu proses. Namun, dalam kasus di mana akses acak
atau manipulasi data kompleks diperlukan, metode penyimpanan data lain seperti organisasi berkas
indeks mungkin lebih sesuai.
I. Prime dan Overflow Data Area (Statik)
Pendekatan lain untuk mengimplementasikan berkas indeks sequential adalah berdasarkan struktur
indeks dimana struktur indeks ini lebih ditekankan pada karakteristik hardware (fisik) dari
penyimpanan, dibandingkan dengan distribusi secara logik dari nilai key.
Jadi, yang bertingkat-tingkat adalah cylender-nya dan blok datanya ditulis secara consecutive di
setiap track (misalkan 1 cylinder berisi 4 track, nomor 0 sampai 3). Index (pencarian data) tertinggi
disebut dengan master index, dari master index berturut-turut menuju ke blok-blok index tingkat
berikutnya hingga meraih record data yang berada di track-nya.
Bila dilakukan penyisipan data dan track tertentu (tempat data baru itu) sudah penuh (tidak ada
tempat kosong/ padding lagi), maka akan dilakukan reorganisasi track dengan membentuk track
baru.Tentu, track baru itu di luar prime data file-nya, yaitu di overflow data area-nya.
Data yang dimasukkan ke dalam file yang diorganisasi secara sequential akan dimasukkan secara
serial (urut dari record pertama, kedua, dan seterusnya), baik data tersebut dimasukkan secara urut
abjad dari salah satu fieldnya, maupun tidak.
"The records in a Sequential file are organized serially, one after another, but the records in the file
may be ordered or unordered. The serial organization of the file and whether the file is ordered or
unordered has a significant baring on how we process the records in the file and what kind of
processing we can do.
"
Misalkan, data pertama yang dimasukkan adalah "Budi," kedua "Ani," dan ketiga "Aan," maka urutan
berdasarkan nomor recordnya adalah :
1. Budi
2. Ani
3. Aan
tingkat track index. Berkas datanya secara umum diimplementasikan sebagai 2 berkas, yaitu prime
area dan overflow area.
Contohnya:
Setiap cylinder dari alat penyimpanan mempunyai 4 track. Pada berkas binatang ada 6 cylinder yang
dialokasikan pada prime data area. Track pertama (nomor 0) dari setiap cylinder berisi sebuah indeks
pada record key dalam cylinder tersebut.
Dalam sebuah track data, tracknya disimpan secara urut berdasarkan nilai key. Tingkat pertama dari
indeks dalam berkas indeks dinamakan master indeks. Tingkat kedua dari indeks dinamakan cylinder
indeks.
Entry pada master indeks: nilai key tertinggi, pointer. Entry pada cylinder
Contoh Pengaksesan:
· Ketiga: Karena BAT ada di depan ELEPHANT, maka pointer dari ELEPHANT akan menunjuk ke track 0
dari cylinder 1,
Hal ini bisa disimpulkan: Permintaan untuk mengakses data secara sequential akan dilakukan dengan
mengakses cylinder dan track dari berkas data prime secara urut.
Permintaan untuk mengakses data secara sequential akan dilayani dengan mengakses cylinder dan
track dari berkas data prime secara urut.
Misal setiap track dari berkas prime data mempunyai ruang yang cukup untuk menampung 5 record
(jika penyisipan dan penghapusan terhadap berkas dilakukan, maka akan dibentuk padding).
Permintaan :
INSERT APE
INSERT AIREDALE
Akan mudah dilayani. Hanya track data 1 dari cylinder 1 yang akan digunakan
Agak sulit ditangani. Pencarian struktur indeks menyatakan bahwa ARMADILLO seharusnya
menempati track 1 dari cylinder 1, tetapi track tersebut sudah penuh.
Untuk mengatasi keadaan tersebut diperlukan overflow data area. Overflow data area ini merupakan
berkas yang terpisah dari prime data area, tetapi
1 dari cylinder 1, tetapi karena track ini sudah penuh, maka ARMADILLO dipindahkan ke overflow
data area. Indeks track dari cylinder 1 harus dimodifikasi untuk memperlihatkan bahwa ada sebuah
record pada overflow area yang secara logik seharusnya menempati pada akhir dari track 1, sehingga
penambahan dari entry itu adalah :
<ARMADILLO,ovfl-ptr>
Permintaan:
INSERT CAT
INSERT BEAR
INSERT BOBCAT
Akan mengisi track 2 dari cylinder 1 pada prime data area, tetapi pengisian tersebut mengakibatkan
penggunaan overflow area. Perhatikan CAT dipindahkan ke overflow area, karena entry pada prime
track tidak hanya harus dalam urutan, tetapi juga entry tersebut harus mendahului suatu entry
overflow dari track tersebut.
Penerapan Prime dan Overflow Data Area pada organisasi berkas sekuensial dalam bahasa C++ dapat
dilakukan dengan memanfaatkan struktur data dan kontrol alur program. Dalam contoh ini, saya
akan memberikan implementasi sederhana menggunakan struktur data untuk merepresentasikan
catatan atau rekaman dalam berkas sekuensial.
Contoh Penerapan Prime dan Overflow Data Area dalam Organisasi Berkas Sekuensial (C++)
#include <iostream>
#include <fstream>
struct Record {
int id;
string name;
// Tambahkan data lain yang dibutuhkan sesuai kebutuhan
};
if (num < 2) {
return false;
if (num % i == 0) {
return false;
return true;
file << record.id << " " << record.name << endl;
int main() {
ofstream outFile("sequential_file.txt");
if (!outFile) {
cerr << "Gagal membuka berkas untuk penulisan." << endl;
return 1;
writeRecord(outFile, record1);
writeRecord(outFile, record2);
// Menutup berkas
outFile.close();
ifstream inFile("sequential_file.txt");
if (!inFile) {
return 1;
readRecord(inFile, readRecord1);
readRecord(inFile, readRecord2);
cout << "Record 1: " << readRecord1.id << " " << readRecord1.name << endl;
cout << "Record 2: " << readRecord2.id << " " << readRecord2.name << endl;
// Menutup berkas
inFile.close();
return 0;
Dalam contoh di atas, Record adalah struktur data yang merepresentasikan catatan atau rekaman
dalam berkas. Fungsi writeRecord digunakan untuk menulis catatan ke dalam berkas, sementara
readRecord digunakan untuk membaca catatan dari berkas.
Implementasi ini sederhana dan bisa diperluas sesuai kebutuhan dan kompleksitas aplikasi yang kita
buat.