Application Support: কনফিগ স্টোরেজ এবং Core Data

লেখক: IT Sectr প্রকাশিত: 2026-07-10 পড়ার সময়: 10 মিনিট

Application Support হলো iOS অ্যাপ স্যান্ডবক্সের একটি ডিরেক্টরি যা অ্যাপের কাজ করার জন্য প্রয়োজনীয় সহায়ক ডেটা সংরক্ষণের জন্য ডিজাইন করা হয়েছে, কিন্তু ব্যবহারকারী দ্বারা সরাসরি তৈরি করা হয় না। Apple File System Basics (2024) অনুসারে, এই ডিরেক্টরিটি কনফিগারেশন ফাইল, Core Data SQLite ডেটাবেস, ক্যাশে করা ডকুমেন্ট এবং অন্যান্য ডেটার জন্য সর্বোত্তম যা অ্যাপ নিজেই জেনারেট করে। Documents Directory-এর বিপরীতে, Application Support iTunes File Sharing-এ প্রদর্শিত হয় না এবং ব্যবহারকারীর এটিতে সরাসরি অ্যাক্সেস নেই, যা সার্ভিস ডেটাকে আকস্মিক মুছে ফেলা থেকে রক্ষা করে।

মূল বিষয়

  • Application Support — এমন ডেটার জন্য একটি ডিরেক্টরি যা অ্যাপ তার নিজস্ব কাজের জন্য তৈরি করে, ব্যবহারকারীর জন্য উদ্দেশ্যে নয়।
  • Application Support-এর ফাইলগুলি স্বয়ংক্রিয়ভাবে iCloud এবং iTunes-এ ব্যাকআপ হয় যদি না বর্জন ফ্ল্যাগ সেট করা হয়।
  • ডিরেক্টরির পাথ হল NSApplicationSupportDirectory বা FileManager.urls(for: .applicationSupportDirectory)।
  • Core Data ডিফল্টরূপে SQLite ডেটাবেসগুলি Application Support-এ রাখে।
  • ব্যবহারকারীর Files বা iTunes-এর মাধ্যমে Application Support-এ সরাসরি অ্যাক্সেস নেই

iOS-এ Application Support কী?

Application Support হলো iOS অ্যাপ স্যান্ডবক্সের একটি ডিরেক্টরি যা অ্যাপ তার কাজের জন্য তৈরি এবং ব্যবহার করে এমন ডেটা সংরক্ষণের জন্য ডিজাইন করা হয়েছে, কিন্তু যা ব্যবহারকারীর ডকুমেন্ট নয়। এটি কনফিগারেশন, ডেটাবেস, ক্যাশে করা মেটাডেটা এবং অন্যান্য সহায়ক ফাইলের জন্য প্রাথমিক অবস্থান।

iOS, Application Support-কে Documents (ব্যবহারকারী ডেটা) এবং Caches (অস্থায়ী ডেটা)-এর মধ্যে একটি মধ্যবর্তী স্তর হিসেবে নির্ধারণ করে। Application Support-এর ফাইলগুলি তুলনামূলকভাবে স্থায়ী হতে পারে, কিন্তু ব্যবহারকারীর সেগুলিতে সরাসরি অ্যাক্সেস থাকা উচিত নয় — এটিই একে Documents Directory থেকে আলাদা করে।

Apple Developer Documentation (2024) অনুসারে, Application Support হল Core Data SQLite ডেটাবেস, Realm ফাইল, JSON/plist ফরম্যাটে কনফিগারেশন, ডাউনলোড করা রেফারেন্স উপকরণ এবং অন্যান্য ডেটা সংরক্ষণের জন্য প্রস্তাবিত স্থান যা অ্যাপ ব্যবহার করে কিন্তু ব্যবহারকারী স্পষ্টভাবে তৈরি করেনি।

গুরুত্বপূর্ণ: ডিফল্টরূপে, Application Support iCloud এবং iTunes ব্যাকআপে অন্তর্ভুক্ত। যদি অ্যাপ এই ডিরেক্টরিতে大量 ডেটা সংরক্ষণ করে যা পুনরায় তৈরি করা যেতে পারে (যেমন ডাউনলোড করা গাইড), তাহলে প্রাসঙ্গিক ফাইলগুলির জন্য isExcludedFromBackup ফ্ল্যাগ সেট করা প্রয়োজন।

Application Support-এর পাথ কীভাবে পাবেন

Swift-এ, Application Support Directory-এর পাথ FileManager.urls(for: .applicationSupportDirectory)-এর মাধ্যমে পাওয়া যায়। Apple ডেটা বিচ্ছিন্নতার জন্য Application Support-এর ভিতরে অ্যাপ নাম সহ একটি সাবডিরেক্টরি তৈরি করার পরামর্শ দেয়।

swift
import Foundation

let fileManager = FileManager.default
guard let appSupportURL = fileManager.urls(
    for: .applicationSupportDirectory,
    in: .userDomainMask
).first else { return }

// Create app subdirectory
let bundleID = Bundle.main.bundleIdentifier ?? "com.example.app"
let appDir = appSupportURL.appendingPathComponent(bundleID)
try fileManager.createDirectory(
    at: appDir,
    withIntermediateDirectories: true
)

Objective-C, NSApplicationSupportDirectory-এর সাথে NSSearchPathForDirectoriesInDomains ব্যবহার করে। Swift-এর মতোই, অ্যাপ নাম সহ একটি চাইল্ড ডিরেক্টরি তৈরি করার পরামর্শ দেওয়া হয়।

objective-c
@import Foundation;

NSArray *paths = NSSearchPathForDirectoriesInDomains(
    NSApplicationSupportDirectory,
    NSUserDomainMask,
    YES
);
NSString *appSupportPath = paths.firstObject;
NSString *appDir = [appSupportPath stringByAppendingPathComponent:@"com.example.app"];

প্রথম লঞ্চে, Application Support ডিরেক্টরি বিদ্যমান নাও থাকতে পারে — এটি createDirectory(at:withIntermediateDirectories:) ব্যবহার করে তৈরি করতে হবে। এটি একে Documents Directory থেকে আলাদা করে, যা সিস্টেম স্বয়ংক্রিয়ভাবে তৈরি করে।

Application Support-এ কী ডেটা সংরক্ষণ করবেন

Application Support বিস্তৃত পরিসরের ডেটার জন্য উপযুক্ত যা অ্যাপ তার কাজের জন্য ব্যবহার করে। এই ডিরেক্টরির জন্য সঠিক ডেটা নির্বাচন ফাইল সিস্টেম সংগঠন উন্নত করে এবং ব্যাকআপ সহজ করে।

Core Data এবং Realm ডেটাবেস

Core Data-র SQLite ফাইলগুলি ডিফল্টরূপে Application Support-এ তৈরি হয়। Realm-ও এই ডিরেক্টরিতে ডেটাবেস রাখার পরামর্শ দেয়। এটি ব্যবহারকারীর ডকুমেন্টগুলিকে অ্যাপের অভ্যন্তরীণ ডেটাবেস থেকে আলাদা করে।

কনফিগারেশন ফাইল

অ্যাপ সেটিংস, Feature Flags, ক্যাশে করা ব্যবহারকারী মেটাডেটা (কিন্তু প্রমাণীকরণ টোকেন নয় — সেগুলির জন্য Keychain ব্যবহার করুন) সহ JSON, plist, XML ফাইল।

ডেটার ধরনApplication Supportবিকল্প
SQLite Core Dataহ্যাঁ (ডিফল্ট)
কনফিগারেশন .plist / .jsonহ্যাঁUserDefaults (সাধারণের জন্য)
ডাউনলোড করা রেফারেন্স উপকরণহ্যাঁDocuments (যদি ব্যবহারকারীর জন্য)
অ্যাপ লগশর্তসাপেক্ষেCaches (লগের জন্য)
প্রমাণীকরণ টোকেননাKeychain

নির্বাচনের মানদণ্ড: যদি ডেটা অ্যাপ দ্বারা তৈরি এবং ব্যবহৃত হয়, ব্যবহারকারী দ্বারা নয়, এবং লঞ্চের মধ্যে স্থায়ী হওয়া উচিত — তার স্থান Application Support-এ।

Core Data এবং Application Support

Core Data Application Support-এর প্রধান ব্যবহারকারীদের মধ্যে একটি। NSPersistentContainer তৈরি করার সময়, Core Data স্বয়ংক্রিয়ভাবে SQLite ফাইলগুলি Library/Application Support-এ মডেল নামের উপর ভিত্তি করে একটি অনন্য নাম সহ রাখে।

Core Data কোথায় ফাইল সংরক্ষণ করে তা বোঝা মাইগ্রেশন, ব্যাকআপ এবং ডিবাগিংয়ের জন্য অত্যন্ত গুরুত্বপূর্ণ। প্রধান ফাইলগুলি: .sqlite (ডেটা), .sqlite-wal (Write-Ahead Log), .sqlite-shm (Shared Memory)।

swift
import CoreData

// Create Core Data container
let container = NSPersistentContainer(name: "MyAppModel")

// Custom store URL directory
guard let appSupportURL = FileManager.default
    .urls(for: .applicationSupportDirectory,
        in: .userDomainMask).first else { return }

let storeURL = appSupportURL
    .appendingPathComponent("MyAppModel.sqlite")
let description = NSPersistentStoreDescription(url: storeURL)
container.persistentStoreDescriptions = [description]

CloudKit Core Data সিঙ্ক ব্যবহার করার সময়, SQLite ফাইল Application Support-এ থাকে এবং CloudKit একটি পরিবহন স্তর হিসেবে কাজ করে। এই ক্ষেত্রে, ব্যাকআপ থেকে ফাইলগুলি বাদ না দেওয়া গুরুত্বপূর্ণ — অন্যথায় ডিভাইসগুলির মধ্যে সিঙ্ক্রোনাইজেশন ভেঙে যেতে পারে।

Application Support বনাম Documents Directory

Application Support এবং Documents-এর মধ্যে পার্থক্য iOS অ্যাপ ফাইল কাঠামো সঠিকভাবে সংগঠিত করার জন্য সবচেয়ে গুরুত্বপূর্ণ। ভুল নির্বাচনের ফলে ব্যবহারকারী গুরুত্বপূর্ণ অ্যাপ ডেটা আকস্মিকভাবে মুছে ফেলতে পারে বা, বিপরীতভাবে, তার ফাইলগুলি খুঁজে পেতে অক্ষম হতে পারে।

প্যারামিটারApplication SupportDocuments Directory
ব্যবহারকারীর অ্যাক্সেসনা (লুকানো)iTunes File Sharing-এর মাধ্যমে
ডেটার ধরনঅ্যাপ সার্ভিস ডেটাব্যবহারকারীর ডকুমেন্ট
iCloud ব্যাকআপহ্যাঁ (ডিফল্ট)হ্যাঁ (ডিফল্ট)
মুছে ফেলার ঝুঁকিকম (কোনো অ্যাক্সেস নেই)মধ্যম (ব্যবহারকারীর জন্য অ্যাক্সেসযোগ্য)
উদাহরণSQLite Core Dataএক্সপোর্ট করা PDF

সহজ নিয়ম: যদি ব্যবহারকারীর ফাইলটি দেখা এবং মুছে ফেলতে সক্ষম হওয়া উচিত — Documents ব্যবহার করুন। যদি ফাইলটি অ্যাপের কাজ করার জন্য প্রয়োজনীয় কিন্তু ব্যবহারকারীর এটি সম্পর্কে জানার প্রয়োজন নেই — Application Support ব্যবহার করুন। যদি ডেটা পুনরায় তৈরি করা যেতে পারে — Caches ব্যবহার করুন।

Application Support-এর সাথে কাজ করার সেরা অনুশীলন

Application Support-এর সাথে কাজ করার জন্য বেশ কয়েকটি বৈশিষ্ট্য বিবেচনা করা প্রয়োজন যা এটিকে অন্যান্য স্যান্ডবক্স ডিরেক্টরি থেকে আলাদা করে। এই অনুশীলনগুলি অনুসরণ করলে ডেটা ক্ষতি, মাইগ্রেশন সমস্যা এবং অপ্রত্যাশিত অ্যাপ আচরণ এড়াতে সাহায্য করে।

প্রথম লঞ্চে সর্বদা ডিরেক্টরি তৈরি করুন

Documents-এর বিপরীতে, Application Support প্রথম লঞ্চে বিদ্যমান নাও থাকতে পারে। withIntermediateDirectories: true প্যারামিটার সহ createDirectory(at:withIntermediateDirectories:) ব্যবহার করুন যাতে সাবডিরেক্টরির সম্পূর্ণ চেইন তৈরি নিশ্চিত হয়।

Bundle Identifier সহ সাবডিরেক্টরি ব্যবহার করুন

Application Support-এর ভিতরে Bundle Identifier সহ একটি সাবডিরেক্টরি তৈরি করুন। এটি আপনার অ্যাপের ডেটাকে অন্যান্য অ্যাপের ডেটা থেকে আলাদা করে (যদিও স্যান্ডবক্স ইতিমধ্যে বিচ্ছিন্নতা প্রদান করে) এবং প্রদানকারী পরিবর্তন করার সময় মাইগ্রেশন সহজ করে।

swift
import Foundation

enum AppSupport {
    static func ensureDirectory() throws -> URL {
        let fm = FileManager.default
        let baseURL = try fm.url(
            for: .applicationSupportDirectory,
            in: .userDomainMask,
            appropriateFor: nil,
            create: true
        )
        let appDir = baseURL
            .appendingPathComponent(Bundle.main.bundleIdentifier ?? "default")
        try fm.createDirectory(at: appDir, withIntermediateDirectories: true)
        return appDir
    }
}

এই অনুশীলনগুলি অনুসরণ করলে নিশ্চিত হয় যে অ্যাপের সার্ভিস ডেটা সঠিকভাবে সংগঠিত, ব্যবহারকারীর আকস্মিক মুছে ফেলা থেকে সুরক্ষিত এবং ব্যাকআপ থেকে সঠিকভাবে পুনরুদ্ধার করা হয়।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

আমাকে কি ম্যানুয়ালি Application Support Directory তৈরি করতে হবে?

হ্যাঁ, Application Support অ্যাপ ইনস্টল করার সময় স্বয়ংক্রিয়ভাবে তৈরি হয় না। Documents এবং Caches-এর বিপরীতে, যা সিস্টেম প্রথম লঞ্চে তৈরি করে, Application Support ডেভেলপার দ্বারা FileManager.createDirectory(at:withIntermediateDirectories:) ব্যবহার করে তৈরি করতে হবে। এটি সাধারণত application(_:didFinishLaunchingWithOptions:) মেথডে করা হয়।

ব্যবহারকারী কি আকস্মিকভাবে Application Support থেকে ডেটা মুছে ফেলতে পারে?

না, স্ট্যান্ডার্ড iOS ইন্টারফেস (Files, iTunes)-এর মাধ্যমে ব্যবহারকারীর Application Support-এ অ্যাক্সেস নেই। তবে, যখন অ্যাপ নিজেই মুছে ফেলা হয়, তখন সম্পূর্ণ স্যান্ডবক্স, Application Support সহ, সম্পূর্ণরূপে মুছে যায়। iCloud ব্যাকআপ পুনরুদ্ধার বা ম্যানুয়াল মুছে ফেলা পর্যন্ত থাকে।

Application Support কি ডাউনলোড করা ভিডিও সংরক্ষণের জন্য উপযুক্ত?

ব্যবহারকারীর জন্য ডাউনলোড করা ভিডিওর জন্য, Documents Directory ব্যবহার করা ভাল যাতে ব্যবহারকারী Files-এর মাধ্যমে এই ফাইলগুলি পরিচালনা করতে পারে। যদি ভিডিও অ্যাপের অভ্যন্তরীণ ক্যাশের অংশ হয় (যেমন অফলাইন প্রশিক্ষণ সামগ্রী), তাহলে বড় ফাইলগুলির জন্য isExcludedFromBackup ফ্ল্যাগ সহ Application Support ব্যবহার করা যেতে পারে।

অ্যাপ আপডেট করার সময় Application Support থেকে ডেটা কীভাবে মাইগ্রেট করবেন?

Application Support-এর ভিতরে সাবডিরেক্টরিগুলির ভার্সনিং যোগ করুন। আপডেট করার সময়, বর্তমান ডেটা সংস্করণ পরীক্ষা করুন এবং প্রয়োজনে একটি নতুন সাবডিরেক্টরি তৈরি করুন, পুরানোটিকে রোলব্যাকের জন্য রাখুন। পুরানো ডিরেক্টরিটি শুধুমাত্র তখনই মুছুন যখন নিশ্চিত হন যে সমস্ত ব্যবহারকারী সফলভাবে ডেটার নতুন সংস্করণে মাইগ্রেট হয়েছে।

Application Support-এর আকার কি অ্যাপ লঞ্চের গতি প্রভাবিত করে?

পরোক্ষভাবে — হ্যাঁ। যদি Application Support-এ হাজার হাজার ছোট ফাইল থাকে, তাহলে FileManager.enumerator ইনিশিয়ালাইজেশন ধীর করতে পারে। Application Support-এ ফাইলের সংখ্যা সীমিত (1000-এর বেশি না) রাখা এবং কাঠামোবদ্ধ ডেটার জন্য অনেকগুলি পৃথক ফাইলের পরিবর্তে ডেটাবেস (Core Data, Realm) ব্যবহার করার পরামর্শ দেওয়া হয়।

সারাংশ

  • Application Support — অ্যাপ সার্ভিস ডেটার জন্য একটি ডিরেক্টরি যা সরাসরি ব্যবহারকারীর অ্যাক্সেসের জন্য নয়।
  • ডিরেক্টরির পাথ হল FileManager.urls(for: .applicationSupportDirectory) বা NSApplicationSupportDirectory সহ NSSearchPathForDirectoriesInDomains।
  • প্রথম অ্যাপ লঞ্চে ডিরেক্টরিটি ম্যানুয়ালি তৈরি করতে হবে
  • Core Data ডিফল্টরূপে SQLite ডেটাবেসগুলি Application Support-এ রাখে।
  • ব্যবহারকারীর Files বা iTunes-এর মাধ্যমে Application Support-এ অ্যাক্সেস নেই
  • Application Support-এর ফাইলগুলি iCloud-এ ব্যাকআপ হয় যদি না isExcludedFromBackup সেট করা হয়।
  • ডেটা বিচ্ছিন্নতা এবং সহজ মাইগ্রেশনের জন্য Bundle Identifier সহ একটি সাবডিরেক্টরি তৈরি করুন

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন