Temporal Table তৈরি এবং কনফিগার করা

Temporal Tables এবং Data Versioning - এমএস এসকিউএল সার্ভার (MS SQl Server) - Microsoft Technologies

304

Temporal Tables SQL Server 2016 থেকে একটি গুরুত্বপূর্ণ ফিচার হিসেবে যুক্ত করা হয়েছে, যা System-Versioned টেবিলের একটি ধরনের। এটি ডেটাবেসের ডেটার ইতিহাস ট্র্যাক করতে এবং পূর্ববর্তী ডেটা পুনরুদ্ধার করতে সাহায্য করে। Temporal Table এর মাধ্যমে আপনি নির্দিষ্ট সময়ের মধ্যে ডেটার পরিবর্তন ইতিহাস সংরক্ষণ করতে পারবেন এবং সেগুলি সহজেই রিট্রিভ করতে পারবেন।

Temporal Table ডেটাবেসের একটি ধরনের টেবিল যা Historical Data সংরক্ষণ করে এবং আপনাকে সময়ের নির্দিষ্ট পয়েন্টে টেবিলের কনটেন্ট দেখতে বা পুনরুদ্ধার করতে সক্ষম করে।


1. Temporal Table কী? (What is a Temporal Table?)

Temporal Table এমন একটি টেবিল যা ডেটার পরিবর্তন ইতিহাস স্বয়ংক্রিয়ভাবে সংরক্ষণ করে। এটি আপনাকে Point-in-time এ ডেটার অবস্থা দেখতে দেয় এবং পূর্ববর্তী ডেটা পুনরুদ্ধার করতে সহায়তা করে। SQL Server একটি System-Versioned Temporal Table তৈরি করতে সক্ষম, যা দুইটি টেবিল ব্যবহার করে:

  • Current Table: যেখানে বর্তমান ডেটা সংরক্ষিত থাকে।
  • History Table: যেখানে ডেটার পূর্ববর্তী সংস্করণগুলি সংরক্ষিত থাকে।

Temporal Table এর সাথে একটি গুরুত্বপূর্ণ অংশ হলো Period Columns, যেগুলি ডেটার সৃষ্টির সময় এবং শেষ সময়ের মধ্যে একটি Time Interval প্রদর্শন করে।


2. Temporal Table এর উপাদানসমূহ (Components of Temporal Table)

Temporal Table এর তিনটি প্রধান উপাদান রয়েছে:

  • Valid From: ডেটা রেকর্ডের কার্যকরী শুরু সময়।
  • Valid To: ডেটা রেকর্ডের কার্যকরী শেষ সময়।
  • History Table: যেখানে সমস্ত সময়ভিত্তিক পরিবর্তন এবং ইতিহাস সংরক্ষিত হয়।

এই তিনটি উপাদান একসাথে কাজ করে ডেটার অতীত এবং বর্তমান সংস্করণকে পৃথক করতে এবং ট্র্যাক করতে।


3. Temporal Table তৈরি করা (Creating Temporal Table)

SQL Server-এ Temporal Table তৈরি করার জন্য, আপনাকে Period Columns এবং History Table কনফিগার করতে হবে। Temporal Table-এর জন্য PERIOD keyword ব্যবহার করতে হয়, যা Valid From এবং Valid To সময় সীমা সঠিকভাবে সংজ্ঞায়িত করে।

3.1. সাধারণ Temporal Table তৈরি করা (Creating a Basic Temporal Table)

ধরা যাক, আপনি একটি Employee টেবিল তৈরি করতে চান, যেখানে কর্মীদের বর্তমান এবং ইতিহাস সংরক্ষণ করা হবে।

CREATE TABLE Employee
(
    EmployeeID INT PRIMARY KEY,
    Name NVARCHAR(100),
    Position NVARCHAR(100),
    Salary DECIMAL(18, 2),
    ValidFrom DATETIME2 GENERATED ALWAYS AS ROW START HIDDEN,
    ValidTo DATETIME2 GENERATED ALWAYS AS ROW END HIDDEN,
    PERIOD FOR SYSTEM_TIME (ValidFrom, ValidTo)
)  
WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.EmployeeHistory));
  • Employee টেবিলের মধ্যে ValidFrom এবং ValidTo দুটি DATETIME2 কলাম তৈরি করা হয়েছে, যা সময় সীমা সংরক্ষণ করে।
  • PERIOD FOR SYSTEM_TIME নির্দেশ করে যে এই টেবিলটি একটি System-Versioned Temporal Table
  • SYSTEM_VERSIONING = ON নির্দেশ করে যে ডেটা পরিবর্তনের সাথে সাথে এটি একটি History Table এ সংরক্ষণ করবে।

এখানে EmployeeHistory টেবিলটি ঐতিহাসিক ডেটা সংরক্ষণ করবে, যা সিস্টেমের পরিবর্তন ইতিহাস দেখাবে।

3.2. History Table কনফিগার করা (Configuring History Table)

আপনার সিস্টেমটি যদি নিজস্ব History Table কনফিগার না করে, তাহলে SQL Server ডিফল্টভাবে একটি History Table তৈরি করবে। তবে আপনি চাইলে History Table কাস্টমাইজও করতে পারেন।

উপরের উদাহরণে, আমরা dbo.EmployeeHistory নামে একটি কাস্টম History Table তৈরি করেছি। এটি ঐতিহাসিক ডেটা সংরক্ষণ করবে।


4. Temporal Table ব্যবহার করা (Using Temporal Table)

4.1. ডেটা ইনসার্ট করা (Inserting Data)

এখন আপনি আপনার Employee টেবিলের মধ্যে ডেটা ইনসার্ট করতে পারেন:

INSERT INTO Employee (EmployeeID, Name, Position, Salary)
VALUES (1, 'John Doe', 'Manager', 60000);

এই ইনসার্ট করার পর, ValidFrom কলামে বর্তমান সময় এবং ValidTo কলামে একটি সন্নিহিত সর্বোচ্চ সময় (যেমন '9999-12-31') সংরক্ষিত হবে।

4.2. ডেটা আপডেট করা (Updating Data)

যখন আপনি Employee টেবিলের কোনো রেকর্ড আপডেট করবেন, তখন SQL Server ঐতিহাসিক ডেটা History Table এ সংরক্ষণ করবে এবং নতুন রেকর্ডটিকে বর্তমান টেবিলে আপডেট করবে:

UPDATE Employee
SET Salary = 65000
WHERE EmployeeID = 1;

এই আপডেটের পর:

  • পুরনো রেকর্ডটি EmployeeHistory টেবিলে চলে যাবে, যেখানে ValidTo কলামে আপডেটের সময় থাকবে।
  • নতুন আপডেট হওয়া রেকর্ডটির ValidFrom হবে বর্তমান সময় এবং ValidTo থাকবে সর্বোচ্চ সময়।

4.3. ডেটা দেখতে (Querying Data)

বর্তমান ডেটা এবং ইতিহাসের ডেটা দেখতে, আপনি FOR SYSTEM_TIME স্টেটমেন্ট ব্যবহার করতে পারেন। এটি আপনাকে নির্দিষ্ট সময় পয়েন্টে বা সময়ের মধ্যে ডেটা দেখতে সহায়তা করবে।

  • Current Data দেখতে:
SELECT * FROM Employee
FOR SYSTEM_TIME AS OF '2024-01-01 00:00:00';
  • History Data দেখতে:
SELECT * FROM EmployeeHistory;
  • Time Period Query: আপনি কোনো নির্দিষ্ট সময়ের মধ্যে ডেটা দেখতে পারেন:
SELECT * FROM Employee
FOR SYSTEM_TIME BETWEEN '2024-01-01' AND '2024-12-31';

5. Temporal Table কনফিগারেশন পরিবর্তন (Modifying Temporal Table Configuration)

SQL Server এ আপনি Temporal Table এর কনফিগারেশন পরিবর্তন করতে পারবেন যদি প্রয়োজন হয়। উদাহরণস্বরূপ, আপনি SYSTEM_VERSIONING বন্ধ করতে পারেন অথবা History Table এর নাম পরিবর্তন করতে পারেন।

  • SYSTEM_VERSIONING বন্ধ করা:
ALTER TABLE Employee
SET (SYSTEM_VERSIONING = OFF);
  • History Table পরিবর্তন করা:
ALTER TABLE Employee
SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.NewEmployeeHistory));

সারাংশ

Temporal Tables SQL Server-এ একটি শক্তিশালী ফিচার যা ডেটার ইতিহাস সংরক্ষণ এবং পূর্ববর্তী ডেটা পুনরুদ্ধারের সুবিধা দেয়। এটি বিশেষভাবে ব্যবহারী যখন ডেটার পরিবর্তন ট্র্যাক করা প্রয়োজন, যেমন লগ, অডিট বা ডেটাবেসের সময়ে পরিবর্তনশীল ডেটা সংরক্ষণ। SYSTEM_VERSIONING ব্যবহারের মাধ্যমে এটি সহজে কার্যকর করা যায় এবং SQL Server-এর মধ্যেই ডেটার অতীত সংস্করণগুলোর উপর কাজ করা সম্ভব হয়।

Content added By
Promotion

Are you sure to start over?

Loading...