Sequential এবং Random Access Files এর ব্যবস্থাপনা

ফাইল হ্যান্ডলিং (File Handling in C) - সি দিয়ে ডেটা স্ট্রাকচার (DSA using C) - Computer Programming

413

Sequential এবং Random Access Files এর ব্যবস্থাপনা

Files ডেটা সংরক্ষণের জন্য ব্যবহৃত হয় এবং এগুলির মধ্যে দুটি প্রধান প্রকার রয়েছে: Sequential Access Files এবং Random Access Files। এই দুটি ফাইল টাইপের মধ্যে প্রধান পার্থক্য হলো ডেটা অ্যাক্সেস করার পদ্ধতি। এই ফাইল ব্যবস্থাপনা পদ্ধতিগুলি ডেটা প্রক্রিয়া, সংরক্ষণ এবং অ্যাক্সেসের ক্ষেত্রে ভিন্ন ভিন্ন কৌশল প্রয়োগ করে।


১. Sequential Access Files

Sequential Access Files এমন ফাইল যেখানে ডেটা ধাপে ধাপে (sequentially) অ্যাক্সেস করা হয়। অর্থাৎ, ডেটা একটি নির্দিষ্ট কেবলমাত্র নির্দিষ্ট অর্ডারে পড়া বা লেখা হয়, এবং একবারে শুধু পরবর্তী ডেটা অংশটি অ্যাক্সেস করা সম্ভব। এটি প্রথম থেকে শেষ পর্যন্ত ডেটা প্রক্রিয়া করার জন্য উপযুক্ত।

বৈশিষ্ট্য:

  1. ধাপে ধাপে অ্যাক্সেস: ডেটা শুধুমাত্র আগে থেকে পরে পর্যন্ত অ্যাক্সেস করা সম্ভব।
  2. মেমরি ব্যাবহার: মেমরি ব্যবহার তুলনামূলকভাবে কম।
  3. কমপ্লেক্সিটি: খুব সহজ এবং কমপ্লেক্সিটি কম, কারণ ডেটা পড়ে অথবা লেখা হয় নির্দিষ্ট অর্ডারে।
  4. অ্যাপ্লিকেশন: লোগ ফাইল, স্ট্রিমিং ডেটা ইত্যাদি।

উদাহরণ:

যেমন, যদি একটি বই পড়া হয়, তবে প্রথম পৃষ্ঠা থেকে শুরু করে শেষ পৃষ্ঠা পর্যন্ত পড়তে হয় এবং আপনি নির্দিষ্ট কোন পৃষ্ঠা বাদ দিয়ে পরবর্তী পৃষ্ঠা পড়তে পারবেন না।

Sequential Access File এর ব্যবহার (সি প্রোগ্রামে):

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "w"); // ফাইল খোলা লেখার জন্য

    if (file == NULL) {
        printf("Error opening file.\n");
        return 1;
    }

    // ফাইলের মধ্যে ডেটা লেখা
    fprintf(file, "Hello, this is a sequential access file.\n");

    fclose(file); // ফাইল বন্ধ করা

    // ফাইল থেকে ডেটা পড়া
    file = fopen("example.txt", "r"); // ফাইল খোলা পড়ার জন্য

    if (file == NULL) {
        printf("Error opening file.\n");
        return 1;
    }

    char ch;
    while ((ch = fgetc(file)) != EOF) {
        putchar(ch);  // ফাইলের প্রতিটি চরিত্র প্রিন্ট করা
    }

    fclose(file); // ফাইল বন্ধ করা
    return 0;
}

২. Random Access Files

Random Access Files হল এমন ফাইল যেখানে ডেটা যেকোনো জায়গা থেকে (randomly) অ্যাক্সেস করা যায়। এর মানে হলো, আপনি চাইলে ফাইলের প্রথম অংশে না গিয়ে সরাসরি ফাইলের কোনো নির্দিষ্ট অবস্থানে গিয়ে ডেটা পড়তে বা লিখতে পারেন। এটি ডিরেক্ট অ্যাক্সেস ফাইল হিসেবেও পরিচিত, যেখানে ডেটা কোনো নির্দিষ্ট অর্ডারে পড়া বা লেখা বাধ্যতামূলক নয়।

বৈশিষ্ট্য:

  1. অ্যাক্সেসের স্বাধীনতা: ডেটা যেকোনো জায়গা থেকে পড়া বা লেখা সম্ভব।
  2. কমপ্লেক্সিটি: প্রোগ্রামিং এর জন্য বেশ কিছু অতিরিক্ত কার্যকলাপ থাকতে পারে, তবে এটি বেশি ফ্লেক্সিবল।
  3. মেমরি ব্যাবহার: প্রক্রিয়াকরণের জন্য মেমরি ব্যাবহার বেশি হতে পারে কারণ ডেটার নির্দিষ্ট অবস্থান থেকে পড়া বা লেখা হয়।
  4. অ্যাপ্লিকেশন: ডেটাবেস, গেমস, ইন্ডাস্ট্রিয়াল অ্যাপ্লিকেশন, যা দ্রুত ডেটা অ্যাক্সেসের প্রয়োজন।

উদাহরণ:

যেমন, একটি বড় ডেটাবেসে আপনি সরাসরি যেকোনো রেকর্ডের মধ্যে প্রবেশ করতে পারেন, এবং পেছন-পিছনে না গিয়ে যে কোনো তথ্য দ্রুত অ্যাক্সেস করতে পারেন।

Random Access File এর ব্যবহার (সি প্রোগ্রামে):

#include <stdio.h>

int main() {
    FILE *file = fopen("example.dat", "wb+"); // বাইনারি ফাইল খোলা

    if (file == NULL) {
        printf("Error opening file.\n");
        return 1;
    }

    int num1 = 100, num2 = 200;
    
    // প্রথম অবস্থানে ডেটা লেখা
    fseek(file, 0 * sizeof(int), SEEK_SET); // প্রথম স্থানে যেতে
    fwrite(&num1, sizeof(int), 1, file);

    // দ্বিতীয় অবস্থানে ডেটা লেখা
    fseek(file, 1 * sizeof(int), SEEK_SET); // দ্বিতীয় স্থানে যেতে
    fwrite(&num2, sizeof(int), 1, file);

    // ডেটা পড়া
    int read_num;
    fseek(file, 0 * sizeof(int), SEEK_SET); // প্রথম স্থানে পড়তে
    fread(&read_num, sizeof(int), 1, file);
    printf("Read from first position: %d\n", read_num);

    fseek(file, 1 * sizeof(int), SEEK_SET); // দ্বিতীয় স্থানে পড়তে
    fread(&read_num, sizeof(int), 1, file);
    printf("Read from second position: %d\n", read_num);

    fclose(file); // ফাইল বন্ধ করা
    return 0;
}

Comparing Sequential vs Random Access Files

PropertySequential Access FilesRandom Access Files
Data AccessSequential (first-to-last)Random (any position in the file)
Speed of AccessSlower for large files with random readsFaster for large files with random reads
Memory UsageLower memory usageHigher memory usage due to direct access
ComplexitySimpler to implementMore complex due to position management
Typical Use CasesLogs, Text files, Streaming dataDatabases, Index files, Multimedia files
File NavigationOnly in sequential orderCan jump to any part of the file instantly

Conclusion

  • Sequential Access Files: এগুলি সাধারণত ছোট ফাইল এবং সোজা ডেটা প্রবাহের জন্য উপযুক্ত, যেমন লোগ ফাইল বা স্ট্রিমিং ডেটা, যেখানে আপনি শুধুমাত্র একদিক থেকে অন্যদিকে ডেটা প্রবাহিত করতে চান।
  • Random Access Files: এগুলি সেই ক্ষেত্রে ব্যবহার করা হয় যেখানে দ্রুত অ্যাক্সেস এবং পরিবর্তন সম্ভব হয়, যেমন ডেটাবেস, গেমস, এবং অন্যান্য উচ্চ কার্যকারিতা অ্যাপ্লিকেশন যেখানে যেকোনো জায়গা থেকে ডেটা অ্যাক্সেস করা প্রয়োজন।

উপরোক্ত দুইটি ফাইল টাইপের ব্যবস্থাপনা নির্ভর করে আপনার প্রয়োজনে, মেমরি ব্যবহারের কার্যকারিতা, এবং ডেটা অ্যাক্সেস প্যাটার্নের উপর।

Content added By
Promotion

Are you sure to start over?

Loading...