Microsoft Technologies Temporal Table এর মৌলিক ধারণা গাইড ও নোট

284

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

Temporal Tables কে কখনো কখনো System-Versioned Temporal Tables বলা হয়। এটি দুটি মূল অংশে বিভক্ত:

  1. Current Data: বর্তমানে সক্রিয় ডেটা, যা সাধারণত অ্যাপ্লিকেশনের জন্য দৃশ্যমান।
  2. Historical Data: পূর্ববর্তী সময়ে পরিবর্তিত ডেটার ইতিহাস।

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

Temporal Table SQL Server তে এমন একটি টেবিল, যা স্বয়ংক্রিয়ভাবে ডেটার ইতিহাস বজায় রাখে। এতে দুটি অংশ থাকে:

  • Main Table (Current Table): যেখানে বর্তমান সক্রিয় ডেটা রাখা হয়।
  • History Table: যেখানে পুরোনো ডেটা (যেমন, আপডেট বা ডিলিট হওয়া রেকর্ড) সিস্টেম দ্বারা সংরক্ষণ করা হয়।

প্রতি সময় যখন ডেটা আপডেট বা ডিলিট হয়, তখন SQL Server ঐ রেকর্ডটি স্বয়ংক্রিয়ভাবে History Table এ সেভ করে দেয়। এর ফলে, আপনি পূর্বের রেকর্ডগুলি দেখতে এবং পুনরুদ্ধার করতে পারেন, যার মাধ্যমে ডেটার পূর্ববর্তী অবস্থা পুনরুদ্ধার করা সহজ হয়।


2. Temporal Table এর মূল বৈশিষ্ট্যসমূহ (Key Features of Temporal Tables)

2.1. স্বয়ংক্রিয় ইতিহাস সংরক্ষণ (Automatic History Tracking)

Temporal Tables স্বয়ংক্রিয়ভাবে আপনার ডেটাবেসে পরিবর্তিত ডেটার ইতিহাস সংরক্ষণ করে। যখন ডেটা আপডেট বা ডিলিট হয়, তখন পুরোনো রেকর্ডটি History Table এ সেভ হয়ে যায়, এবং বর্তমান রেকর্ডটি valid time period সহ Main Table এ থাকে।

2.2. Time-Period Based Queries

এটি ব্যবহারকারীদের time-based queries চালানোর সুযোগ দেয়। আপনি নির্দিষ্ট সময়ের মধ্যে ডেটার অবস্থা জানতে পারেন, যেমনঃ

  • কোন একটি রেকর্ডটি কবে আপডেট বা ডিলিট হয়েছিল?
  • কোন নির্দিষ্ট সময়ের মধ্যে কী কী পরিবর্তন হয়েছে?

2.3. Simplified Data Auditing and Compliance

ডেটার ইতিহাস ট্র্যাক করা এবং পরিবর্তনগুলো অডিট করা সহজ হয়। এটি compliance এবং audit প্রয়োজনীয়তার জন্য খুবই কার্যকরী, যেমন ফাইনান্সিয়াল বা আইনি ডেটার ক্ষেত্রে।

2.4. System-Versioned

Temporal Tables system-versioned হয়, যার মানে হল যে SQL Server স্বয়ংক্রিয়ভাবে টেবিলের রেকর্ডের পরিবর্তনের সময়কালের (validity period) লগ রাখে, এবং এটি সময়ের সাথে পরিবর্তিত ডেটা সংরক্ষণ করে।


3. Temporal Table কিভাবে কাজ করে? (How Do Temporal Tables Work?)

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

  1. Main Table: এটি বর্তমান সক্রিয় ডেটা ধারণ করে। প্রতিটি রেকর্ডে দুটি অতিরিক্ত কলাম থাকে:
    • SysStartTime: রেকর্ডটির বৈধতার শুরু সময়।
    • SysEndTime: রেকর্ডটির বৈধতার শেষ সময়।
  2. History Table: এটি History Data ধারণ করে, অর্থাৎ সমস্ত পরিবর্তিত বা মুছে ফেলা রেকর্ড সংরক্ষণ করে। এখানে SysStartTime এবং SysEndTime কলামগুলো থাকে যা Time Period এর মধ্যে ডেটার অবস্থান নির্দেশ করে।
  3. System-Versioning: SQL Server System-Versioning এর মাধ্যমে ডেটার valid period (শুরুর এবং শেষ সময়) ট্র্যাক করে। এটি স্বয়ংক্রিয়ভাবে প্রতিটি রেকর্ডের জন্য start এবং end টাইমের মান সেট করে।

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

Temporal Table তৈরি করতে, আপনাকে দুটি জিনিস নিশ্চিত করতে হবে:

  1. Main Table তৈরি করুন।
  2. History Table তৈরি করুন (SQL Server নিজেই তৈরি করবে যদি আপনি সঠিক কনফিগারেশন দেন)।

4.1. Main Table তৈরি করা (Creating the Main Table)

CREATE TABLE Employee (
    EmployeeID INT PRIMARY KEY,
    Name NVARCHAR(100),
    Position NVARCHAR(100),
    Salary DECIMAL(10, 2),
    SysStartTime DATETIME2 GENERATED ALWAYS AS ROW START HIDDEN,
    SysEndTime DATETIME2 GENERATED ALWAYS AS ROW END HIDDEN,
    PERIOD FOR SYSTEM_TIME (SysStartTime, SysEndTime)
);

এখানে, SysStartTime এবং SysEndTime হল দুটি নতুন কলাম যা SQL Server স্বয়ংক্রিয়ভাবে তৈরি করবে এবং সময়কালের মধ্যে রেকর্ডের স্থিতি নির্ধারণ করবে।

4.2. History Table তৈরি করা (Creating the History Table)

SQL Server এ History Table তৈরি করার জন্য আপনাকে WITH (SYSTEM_VERSIONING = ON) ফিচারটি সক্রিয় করতে হবে:

CREATE TABLE EmployeeHistory (
    EmployeeID INT,
    Name NVARCHAR(100),
    Position NVARCHAR(100),
    Salary DECIMAL(10, 2),
    SysStartTime DATETIME2,
    SysEndTime DATETIME2
);

ALTER TABLE Employee
ADD CONSTRAINT DF_Employee_SysStartTime DEFAULT SYSUTCDATETIME() FOR SysStartTime,
    CONSTRAINT DF_Employee_SysEndTime DEFAULT '9999-12-31 23:59:59.9999999' FOR SysEndTime;

ALTER TABLE Employee
SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.EmployeeHistory));

এটি Employee টেবিলের ইতিহাস সংরক্ষণের জন্য EmployeeHistory টেবিল তৈরি করবে এবং SYSTEM_VERSIONING ফিচারটি চালু করবে।


5. Temporal Table ব্যবহার করে Queries (Queries using Temporal Tables)

5.1. বর্তমান ডেটা দেখানো (Querying Current Data)

SELECT EmployeeID, Name, Position, Salary
FROM Employee;

5.2. একটি নির্দিষ্ট সময়ের মধ্যে ডেটা দেখা (Querying Historical Data for a Specific Time)

SELECT EmployeeID, Name, Position, Salary, SysStartTime, SysEndTime
FROM Employee
FOR SYSTEM_TIME AS OF '2023-01-01 12:00:00';

এটি আপনাকে ২০২৩ সালের ১ জানুয়ারি ১২:০০:০০ সময়ে Employee টেবিলের অবস্থা দেখাবে।

5.3. ডেটার পরিবর্তন ইতিহাস দেখা (Querying the Changes in Data)

SELECT EmployeeID, Name, Position, Salary, SysStartTime, SysEndTime
FROM Employee
FOR SYSTEM_TIME BETWEEN '2023-01-01' AND '2023-12-31';

এটি ২০২৩ সালের মধ্যে Employee টেবিলের সমস্ত পরিবর্তনগুলো দেখাবে।


6. Temporal Table এর সুবিধা এবং ব্যবহার

6.1. ডেটার ইতিহাস ট্র্যাকিং

এটি ডেটার পরিবর্তনের ইতিহাস রেকর্ড করতে এবং পুনরুদ্ধার করতে সাহায্য করে।

6.2. ডেটাবেস অডিটিং

অডিটিংয়ের জন্য খুবই কার্যকরী, কারণ এটি সমস্ত পরিবর্তন এবং তার সময়ের স্ট্যাম্প সংরক্ষণ করে।

6.3. রিপোর্টিং এবং কমপ্লায়েন্স

আইনি বা ফাইনান্সিয়াল রিপোর্ট তৈরির সময় আগের ডেটা দেখা সহজ হয়, যা কমপ্লায়েন্স ফিচারের জন্য গুরুত্বপূর্ণ।


সারাংশ

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

Content added By
Promotion

Are you sure to start over?

Loading...