XML (eXtensible Markup Language) এবং JSON (JavaScript Object Notation) হলো দুটি জনপ্রিয় ডেটা ফরম্যাট, যা ডেটার স্টোরেজ, বিনিময় এবং প্রসেসিংয়ের জন্য ব্যবহৃত হয়। SQL Server 2016 এবং পরবর্তী সংস্করণগুলোতে XML এবং JSON ডেটা প্রক্রিয়াকরণ এবং ম্যানিপুলেশনের জন্য বিভিন্ন ফাংশন এবং অপশন রয়েছে।
XML ডেটা ম্যানিপুলেশন
SQL Server এ XML ডেটা টেবিলের একটি কলামে সংরক্ষিত থাকতে পারে এবং T-SQL এর মাধ্যমে XML ডেটার সাথে বিভিন্ন কার্যক্রম করা যেতে পারে। SQL Server XML ডেটা টাইপ সহ FOR XML, XML PATH, OPENXML, এবং XML Data Type Methods ব্যবহার করে XML ডেটা প্রসেসিং সমর্থন করে।
XML ডেটা টেবিলে স্টোর করা:
DECLARE @xmlData XML;
SET @xmlData = '
<Employees>
<Employee>
<EmployeeID>1</EmployeeID>
<EmployeeName>John Doe</EmployeeName>
<Position>Manager</Position>
</Employee>
<Employee>
<EmployeeID>2</EmployeeID>
<EmployeeName>Jane Smith</EmployeeName>
<Position>Developer</Position>
</Employee>
</Employees>';
-- XML ডেটা টেবিলে সংরক্ষণ
SELECT @xmlData AS EmployeesData;
এখানে, একটি XML ডেটা সেট তৈরি করা হয়েছে এবং সেটি টেবিলে স্টোর করা হয়েছে। Employee এলিমেন্টের মধ্যে EmployeeID, EmployeeName, এবং Position সম্পর্কিত ডেটা রয়েছে।
XML ডেটা থেকে ভ্যালু এক্সট্র্যাক্ট করা:
-- XML থেকে নির্দিষ্ট ভ্যালু বের করা
SELECT
EmployeeData.Employee.value('(EmployeeID/text())[1]', 'INT') AS EmployeeID,
EmployeeData.Employee.value('(EmployeeName/text())[1]', 'VARCHAR(100)') AS EmployeeName
FROM @xmlData.nodes('/Employees/Employee') AS EmployeeData(Employee);
এখানে:
- .value() মেথড ব্যবহার করে XML এর নির্দিষ্ট এলিমেন্ট থেকে ভ্যালু বের করা হচ্ছে।
(EmployeeID/text())[1]XML থেকে EmployeeID ট্যাগের মান বের করবে।
XML ডেটাতে নতুন এলিমেন্ট অ্যাড করা:
-- XML ডেটাতে নতুন এলিমেন্ট অ্যাড করা
SET @xmlData.modify('
insert <Employee>
<EmployeeID>3</EmployeeID>
<EmployeeName>Mark Johnson</EmployeeName>
<Position>Analyst</Position>
</Employee>
as last into (/Employees)[1]');
-- নতুন XML দেখতে
SELECT @xmlData AS UpdatedEmployeesData;
এখানে, .modify() মেথড ব্যবহার করে XML ডেটাতে নতুন Employee এলিমেন্ট যোগ করা হয়েছে।
JSON ডেটা ম্যানিপুলেশন
SQL Server 2016 এবং পরবর্তী সংস্করণে JSON ডেটা হ্যান্ডলিংয়ের জন্য ইন-বিল্ট ফাংশন রয়েছে, যেমন JSON_VALUE, JSON_QUERY, এবং OPENJSON। এই ফাংশনগুলি JSON ডেটা প্রসেস এবং এক্সট্র্যাক্ট করতে ব্যবহৃত হয়।
JSON ডেটা স্টোর করা:
DECLARE @jsonData NVARCHAR(MAX);
SET @jsonData = '[
{"EmployeeID": 1, "EmployeeName": "John Doe", "Position": "Manager"},
{"EmployeeID": 2, "EmployeeName": "Jane Smith", "Position": "Developer"}
]';
-- JSON ডেটা টেবিলে সংরক্ষণ
SELECT @jsonData AS EmployeesData;
এখানে, একটি JSON ডেটাসেট তৈরি করা হয়েছে যেখানে দুইটি Employee অবজেক্ট রয়েছে।
JSON ডেটা থেকে ভ্যালু এক্সট্র্যাক্ট করা:
-- JSON থেকে নির্দিষ্ট ভ্যালু বের করা
SELECT
JSON_VALUE(@jsonData, '$[0].EmployeeID') AS EmployeeID,
JSON_VALUE(@jsonData, '$[0].EmployeeName') AS EmployeeName
এখানে:
- JSON_VALUE() ফাংশন ব্যবহার করে JSON থেকে নির্দিষ্ট ফিল্ডের মান বের করা হচ্ছে।
$[0].EmployeeIDপ্রথম Employee অবজেক্টের EmployeeID রিটার্ন করবে।
JSON ডেটা থেকে সাবজসন এক্সট্র্যাক্ট করা:
-- JSON থেকে সাবজসন বের করা
SELECT JSON_QUERY(@jsonData, '$') AS AllEmployees;
এখানে:
- JSON_QUERY() ফাংশন ব্যবহার করে পুরো JSON অবজেক্টকে সাবজসন আকারে ফেরত পাওয়া যাচ্ছে।
JSON ডেটাতে নতুন ফিল্ড অ্যাড করা:
-- JSON ডেটাতে নতুন ফিল্ড অ্যাড করা
SET @jsonData = JSON_MODIFY(@jsonData, '$[0].Salary', 5000);
-- আপডেট করা JSON ডেটা দেখতে
SELECT @jsonData AS UpdatedJsonData;
এখানে:
- JSON_MODIFY() ফাংশন ব্যবহার করে প্রথম Employee অবজেক্টের Salary ফিল্ড অ্যাড করা হয়েছে।
OPENJSON এর মাধ্যমে JSON ডেটা এক্সট্র্যাক্ট করা:
-- JSON ডেটা টেবিলে রূপান্তর করা
SELECT *
FROM OPENJSON(@jsonData)
WITH (
EmployeeID INT '$.EmployeeID',
EmployeeName NVARCHAR(100) '$.EmployeeName',
Position NVARCHAR(100) '$.Position'
);
এখানে:
- OPENJSON() ফাংশন ব্যবহার করে JSON ডেটাকে রিলেশনাল টেবিল ফরম্যাটে রূপান্তরিত করা হয়েছে, যেখানে প্রতিটি JSON অবজেক্ট একটি রেকর্ড হিসেবে রিটার্ন হয়।
XML এবং JSON এর মধ্যে পার্থক্য
- স্ট্রাকচার:
- XML: স্ট্রাকচার্ড ডেটা ফরম্যাট যা একটি হায়ারার্কিক্যাল ট্রী স্ট্রাকচার অনুসরণ করে।
- JSON: হালকা ও দ্রুত ডেটা বিনিময়ের ফরম্যাট, যেটি Key-Value Pair তে ডেটা স্টোর করে।
- স্টোরেজ এবং এক্সট্র্যাকশন:
- XML ডেটা স্টোরেজে কিছুটা ভারী হতে পারে এবং XML ডেটার সাথে কাজ করার জন্য সুনির্দিষ্ট ফাংশন ব্যবহার করতে হয়।
- JSON তুলনামূলকভাবে সহজ এবং দ্রুত। JSON ডেটা এক্সট্র্যাক্ট করতে SQL Server এ বিভিন্ন বিল্ট-ইন ফাংশন রয়েছে যেমন
JSON_VALUE,JSON_QUERY, এবংOPENJSON।
- পারফরম্যান্স:
- XML: বড় XML ডেটাতে কাজ করার সময় কিছুটা পারফরম্যান্স কমে যেতে পারে।
- JSON: JSON ডেটা সাধারণত ছোট এবং কম্প্যাক্ট হয়, তাই এটি পারফরম্যান্সে কিছুটা দ্রুত হতে পারে।
সারাংশ
- XML এবং JSON উভয়ই ডেটা বিনিময়ের শক্তিশালী ফরম্যাট, তবে XML স্ট্রাকচার তুলনায় বেশি জটিল এবং ভারী হয়।
- SQL Server এ XML এবং JSON ডেটার জন্য আলাদা আলাদা ফাংশন যেমন
.value(),.modify(),OPENJSON(),JSON_VALUE()ইত্যাদি রয়েছে যা ডেটা এক্সট্র্যাক্ট, ম্যানিপুলেট এবং প্রসেস করতে সাহায্য করে। - JSON ডেটা সাধারণত lightweight এবং compact, এবং JSON_VALUE, JSON_QUERY ইত্যাদি ফাংশনের মাধ্যমে এটি কার্যকরীভাবে ম্যানিপুলেট করা যায়। XML ডেটা ব্যবহারের সময় আপনি .nodes(), .value() ইত্যাদি ফাংশন ব্যবহার করতে পারেন।
Read more