মাইক্রোসফ্ট এসকিউএল সার্ভারে আমার কখন এক্সএমএল ডেটা ব্যবহার করা উচিত?
মাইক্রোসফ্ট এসকিউএল সার্ভারে আমার কখন এক্সএমএল ডেটা ব্যবহার করা উচিত?
উত্তর:
আমি একই রকম কাজ করেছি যেখানে আমি স্টোরের জন্য এক্সএমএলে অবজেক্টের ডেটা সিরিয়াল করি। এটি জটিল বস্তুর জন্য ডেটা রাখার জন্য সারণী, কলাম এবং স্থানে থাকা সম্পর্কের বোঝা সরিয়ে দেয়। ফলাফলটি এক্সএমএল অনুসৃত একটি স্কিমা ব্যবহার করে প্রক্রিয়াটিকে সাহায্য করা যেতে পারে এবং ডাটাবেস টেবিলগুলি প্রশ্নযুক্ত বস্তুগুলির মেটা তথ্যের জন্য ব্যবহার করা যেতে পারে। আমার ক্ষেত্রে, অবজেক্ট লেআউটের জন্য ডেটাবেস স্কিমা প্রসারিত করা বড় কাজ হবে!
ব্যক্তিগতভাবে, আমি এসকিউএল সার্ভারে এক্সএমএল ক্ষেত্রের ধরণটি আগে কখনও ব্যবহার করি নি, এবং তারা এই বৈশিষ্ট্যটি যুক্ত করার পর থেকে আমি প্রচুর ডাটাবেস প্রোগ্রামিং করেছি। সর্বদা আমার কাছে মনে হয়েছিল যে কোনও ডাটাবেসে XML বিষয়বস্তু নেটিভভাবে ব্যবহার করার জন্য একটি প্রোগ্রাম্যাটিক এবং পারফরম্যান্সের ওভারহেড। আমি সত্যই ভেবেছিলাম এটি একটি চতুরতা, কারণ 2000 এর দশকের গোড়ার দিকে সবাই এক্সএমএল ট্রেনে উঠেছিল। "ওহ এক্সএমএল গরম, সুতরাং এসকিউএল সার্ভারে এটি যুক্ত করা যাক যাতে আমরা পাসে না দেখি।"
আমি দেখতে পাচ্ছি সেরা ব্যবসায়ের ক্ষেত্রে XML- ভিত্তিক ডেটা বার্তাগুলি রেকর্ডিংয়ের ক্ষেত্রে হতে পারে যেখানে আপনি তাদের কাঠামো এবং ডেটাতে উঁকি দিতে চাইতে পারেন, তবে ব্যবসায় বা আইনী কারণে মূল বার্তার অখণ্ডতা বজায় রাখতে চান। এক্সএমএলটিকে টেবিলের কাঠামোয় অনুবাদ করতে ওভারহেড খুব দুর্দান্ত হতে পারে তবে এসকিউএল সার্ভারে এক্সএমএল ক্ষমতা ব্যবহার করা কেবলমাত্র এটি ব্যবহারের জন্য ওয়ারেন্ট দেওয়ার জন্য পর্যাপ্ত তথ্য পরীক্ষার ব্যয় হ্রাস করতে পারে।
আপনি এটি ব্যবহার করতে চাইছেন এমন আরও কয়েকটি কারণ সম্ভবত রয়েছে তবে আমি স্পষ্ট করে মনে করি এসকিউএল সার্ভারে এক্সএমএল-এর সাথে হগ-ওয়াইল্ড যাওয়ার আগে আপনার সুখের অন্যান্য পথগুলি বিবেচনা করা উচিত যদি না আপনি যদি এটির জন্য নির্দিষ্ট ব্যবসায়িক কারণ না করেন। যদি আরও বোধ করা হয় তবে একটি ভারচার (সর্বোচ্চ) বা পাঠ্য ক্ষেত্রটি ব্যবহার করুন।
অবশ্যই আমার মতামত :)
আমি কেবলমাত্র কয়েকটি পরিস্থিতি পেয়েছি যেখানে আমি এসকিউএল সার্ভারে এক্সএমএল ডেটা টাইপ সক্রিয়ভাবে ব্যবহার করতে চাই। এটি আমার মাথার উপরের অংশটি থেকে কম থেকে শুরু করে আকর্ষণীয় পর্যন্ত:
যা যা বলেছিল, 99% সময়, স্কিমা ডিজাইনের সময় আমার এক্সএমএল ক্ষেত্রের একেবারেই দরকার নেই।
এসকিউএল সার্ভারে এক্সএমএল ডেটা টাইপটি আমি কয়েকবার দেখেছি এটি মূলত এমন ক্ষেত্র হিসাবে ব্যবহৃত হয়েছে যা ডাটাবেসের অন্য যেভাবে অনুসন্ধান করা হয়েছিল, আপনার কাছে যদি প্রচুর পরিমাণে ডেটা থাকে তবে কিছু খুব খারাপ পারফরম্যান্সের প্রভাব থাকতে পারে । এটির জন্য এসকিউএল সার্ভার নয় এক্সএমএল সার্ভার বলে একটি কারণ রয়েছে। :-) এক্সএমএলের বিপরীতে যে প্রশ্নগুলি করা হয় তা কেবল নিয়মিত নির্বাচন করা কোয়েরি হিসাবে তত দ্রুত হয় না।
আমি এটি দেখতে পেলাম যে এটি এক্সএমএল সংরক্ষণ করতে ব্যবহার করা হচ্ছে যা খুব বেশি অনুসন্ধান করা হয়নি, বলুন এক্সএমএল ডেটা টাইপে সম্পূর্ণ এক্সএমএল ডকুমেন্টটি সংরক্ষণ করে, তবে অনুসন্ধানযোগ্য ক্ষেত্রগুলি (কীগুলি) এক্সএমএল ডকুমেন্টের সাথে পৃথকভাবে সঞ্চিত রয়েছে। আপনি আপনার ডকুমেন্টটি যেখানে দেখতে চান সেই বিন্দুতে পৌঁছালে আপনি আপনার তথ্যটি দ্রুত জিজ্ঞাসা করতে এবং এক্সএমএল ডকুমেন্টটি টানতে পারেন। আমাকে আসলে ফিরে যেতে হয়েছিল এবং এমন অনেকগুলি অ্যাপ্লিকেশন দিয়ে করতে হয়েছিল যেখানে লোকেরা এক্সএমএল ডেটা টাইপটিকে একটি ভারী অনুসন্ধান ক্ষেত্র হিসাবে ব্যবহার করার চেষ্টা করেছিল এবং ডেটা এমন পর্যায়ে পৌঁছেছে যেখানে কোয়েরিটি খুব ধীর হয়ে গেছে।
আমি বেশিরভাগ এএসএমএক্স ওয়েব পরিষেবাদি বা ডাব্লুসিএফ পরিষেবাদি সম্পর্কিত লগিংয়ের উদ্দেশ্যে এক্সএমএল টাইপ ফিল্ড ব্যবহার করেছি। আপনি অনুরোধ বা প্রতিক্রিয়া বার্তা সংরক্ষণ করতে পারেন।
বেশিরভাগ সময়, আপনি রেফারেন্সের উদ্দেশ্যে ডিবিতে এক্সএমএল সংরক্ষণ করেন - আপনার নিয়মিত ব্যবসায়িক ক্রিয়াকলাপের জন্য নয় (কোড থেকে প্রতি 5 সেকেন্ডে এটি জিজ্ঞাসা করবেন না)। আপনি যদি নিজেকে এমনটি করতে দেখেন তবে আপনি সাধারণত যে ক্ষেত্রগুলি প্রায়শই জিজ্ঞাসা করেন বা বেশিরভাগ সময় ব্যবহার করেন তা নির্ধারণ করুন এবং তাদের জন্য পৃথক কলাম তৈরি করুন। এইভাবে, আপনি যখন ডিবিতে এক্সএমএল সংরক্ষণ করছেন, আপনি এই ক্ষেত্রগুলি নিষ্কাশন করতে এবং তাদের সংশ্লিষ্ট কলামগুলিতে সংরক্ষণ করতে পারেন। পরে এগুলি পুনরুদ্ধার করার সময় আপনার এক্সএমএল ডকুমেন্টের জন্য কোয়েরির দরকার নেই আপনি কেবল এই উদ্দেশ্যে তৈরি করা কলামগুলি ব্যবহার করতে পারেন।
এসকিএল সার্ভারে এক্সএমএল ক্ষেত্রগুলিকে অনুমতি দেওয়ার জন্য কী কী শর্ত থাকতে হবে তা বিবেচনা করার সময় এই পরিস্থিতিগুলি এক ঝাঁকুনিতে সুরক্ষিতভাবে মনে আসে:
আমি ডাটাবেসে একক কলে কাঠামোগত ডেটা সংরক্ষণের জন্য ক্লায়েন্ট-সার্ভার অ্যাপ্লিকেশনগুলিতে এক্সএমএলটি ব্যাপকভাবে ব্যবহার করি। উদাহরণ হিসাবে বিশদ লাইনগুলি সহ একটি চালান নিন। ক্লায়েন্টটি XML এ ব্যবসায়িক ক্রিয়াকলাপটি সিরিয়ালিয়াস করা এবং একক কলে একটি সঞ্চিত প্রোকে পাস করা সহজ। Procোকানো বা আপডেটের প্রয়োজন কিনা তা প্র্যাকটি সিদ্ধান্ত নেয়; এটি সার্ভার-সাইড লেনদেনের মধ্যে এবং ক্লায়েন্টকে একাধিক রাউন্ড ট্রিপ না করে বিশদ রেকর্ডে বরাদ্দ করতে প্যারেন্ট ইনভয়েস আইডি (একটি পরিচয় কলাম) পেতে পারে। শিরোনাম রেকর্ডটি নির্দিষ্ট করতে আমার 20 বা ততোধিক প্যারামিটারের প্রয়োজন নেই এবং প্রতি চালান লাইনের জন্য আমাকে কল করতে হবে না। এছাড়াও, ক্লায়েন্টকে স্পর্শ না করে স্কিমা পরিবর্তন করা, বা লগিং / অডিটিং প্রবর্তন করা প্রায়শই সম্ভব।