রিলেশনাল ডাটাবেসে এক্সএমএল সংরক্ষণ করার সুবিধা কী কী?


23

আমি আজ অ্যাডভেঞ্চার ওয়ার্কস ডাটাবেস ঘুরে দেখছিলাম এবং আমি লক্ষ্য করেছি যে বেশ কয়েকটি টেবিলের ( HumanResources.JobCandidateএবং Sales.Individualউদাহরণস্বরূপ) একটি কলাম রয়েছে যা এক্সএমএল ডেটা সংরক্ষণ করছে।

আমি যা জানতে চাই তা হল, অন্য কোনও সারণীর কলামে মূলত একটি ডাটাবেস টেবিল সারিটির মূল্য সংরক্ষণের সুবিধা কী? এটি কি এই তথ্যটি জিজ্ঞাসা করা কঠিন করে না? বা এই ধারণাটি কি ডেটা অনুসন্ধান করা দরকার হবে না এবং কেবল সংরক্ষণ করা দরকার?

উত্তর:


30

কারণ সম্পর্কিত তথ্য সংরক্ষণের জন্য আপনাকে এক্সএমএল হিসাবে পাস করা ডেটা প্রক্রিয়াকরণের জন্য সমস্ত ডেটা আপেক্ষিকভাবে সংরক্ষণ করা এবং কোড লিখনের কোড প্রয়োজন হয় না (এবং খুব ক্লান্তিকর)। এটি বিশেষত সত্য যখন প্রচুর এক্সএমএল ডেটা সিস্টেম থেকে আসে যা বড় জেনেরিক প্রতিক্রিয়াগুলি ছড়িয়ে দেয়।

আমি প্রায়শই এমন পরিস্থিতি দেখেছি যেখানে অন্য সিস্টেম থেকে বার্তা পাওয়া যায় এবং আমরা এতে যে 98% রয়েছে তার যত্ন নিয়ে না। সুতরাং আমরা আমাদের যে 2% বিষয় যত্ন নিয়েছি তা বিভক্ত করার জন্য এটি পার্স করছি, সেটিকে আপেক্ষিকভাবে সংরক্ষণ করি এবং তারপরে পরে যদি আমাদের অবশিষ্ট 98% এর কোনও প্রয়োজন হয় তবে পুরো বার্তাটি সংরক্ষণ করি।

এবং এসকিউএল সার্ভার আপনাকে টি-এসকিউএল-এ এক্সএমএল এর সাথে কাজ করার জন্য কিছু ওকে-ইশ সরঞ্জাম এবং বাক্য গঠন দেয় যাতে এটি অ্যাড-হক অনুসন্ধানগুলির জন্য ব্যবহারিক নাগালের বাইরে যেমন মনে হয় না যে আপনি স্টোর করে যাচ্ছেন, বলুন, একটি সিএসভি এর।

এবং এটি সম্ভাবনা বাদ দেয় যে আপনি আসলে যা সংরক্ষণ করতে চান তা হ'ল এক্সএমএল (উদাহরণস্বরূপ সমর্থন এবং ডিবাগ উদ্দেশ্যে) ...


10
+1, "এখনই কিছু খাবেন, কিছু পরে সংরক্ষণ করুন।" যা ক্যান্ডির জন্য দু: খজনক বিপণন প্রচার ছিল, তবে এটি এক্সএমএল স্টোরেজের ক্ষেত্রে এই ক্ষেত্রে কাজ করে।
ড্যান রোজনস্টার্ক

11

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

একই ট্যানজেন্টে, যদি ডেটাটি কোনও বাহ্যিক ব্যবস্থা সরবরাহ করে এবং এটির দ্বারা আবার গ্রাস করা হয় এবং তারা আপনাকে একটি স্থায়ী ফর্ম্যাট সরবরাহ করতে অক্ষম হয়, তবে আপনি যা করবেন তা তাই।

এটি কি এই তথ্যটি জিজ্ঞাসা করা কঠিন করে না?

এসকিউএল সার্ভার এক্সএমএল ক্ষেত্র এবং ভেরিয়েবলগুলি জিজ্ঞাসা করতে পারে। অগত্যা কঠিন নয়, তবে আরও কাজ, হ্যাঁ। কিন্তু করণীয়।


ডাটাবেস স্কিমা থেকে ডেটা ডিউলিংয়ের জন্য +1। এছাড়াও আপনি এক্সপথ অনুসন্ধানের বিষয়টি স্পষ্টভাবে উল্লেখ করতে চাইতে পারেন।
গ্যারি রোয়ে

আমার মনে হয় আপনি ঠিক করেছেন। :)

5

আমার অভিজ্ঞতায়, এক্সএমএল ডেটা সাধারণত সংরক্ষণ করা হয় এবং খুব কমই অনুসন্ধান করা হয়, তবে প্রয়োজনের সময় প্রায়শই সরানো হয় সাধারণত যখন অন্য কোনও সিস্টেমে এমন কিছু ডেটাগুলির একটি এক্সএমএল উপস্থাপনা প্রয়োজন যা আপেক্ষিক ডেটা থেকে ফ্লাই তৈরি করা কঠিন বা অসম্ভব হতে পারে। এক্সএমএল ডেটা অন্য কোনও প্রক্রিয়া দ্বারা প্রাক-জনবহুল হতে পারে।


3

আপনি যদি কোনও ব্লবটিতে বাইনারি স্ট্রিমে আপনার ডেটা সংরক্ষণের কল্পনা করতে পারেন তবে আমি কল্পনা করতে পারি যে আপনি কোনও ডেটা একটি এক্সএমএল ফর্ম্যাটে আপনার ডেটা সংরক্ষণ করতে পারেন imagine

অবশ্যই অনেক কিছুই কল্পনাশক্তির কল্পনাতে সবচেয়ে ভাল থাকে।

বলুন, উদাহরণস্বরূপ বৈদ্যুতিন মেডিকেল রেকর্ডগুলি:

যেহেতু আপনি সম্ভবত ASCII HL7 V2.x একটি ডাটাবেসে কোনও ক্ষেত্রে সঞ্চয় করতে চান। আপনি সম্ভবত একটি ডেটাবেজে কোনও ক্ষেত্রে HL7 V3.0 সঞ্চয় করতে প্রস্তুত হতে চাই।

সুতরাং সুবিধাটি হ'ল সুবিধা।


2

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


2

এক্সএমএল সংরক্ষণের একটি উত্তম উদাহরণ হ'ল আপনি যখন ডাটাবেসে ইউআই রাজ্যগুলি বজায় রাখতে চান। সমস্ত অ্যাপ্লিকেশন দর্শনগুলির স্থিতি সিরিয়ালযুক্ত এবং ডাটাবেসে সংরক্ষণ করা হয় এবং এক্সএমএলকে জিজ্ঞাসা করার দরকার নেই। ইউআই রাষ্ট্রের দ্বারা আমি বোঝাতে চাইছি, সাজানোর ক্রম, উইন্ডোজের আকার ইত্যাদি


1

প্রায়শই আপনি মিশ্র ডেটা পান যা এক্সএমএল এবং সম্পর্কিত উভয়ই। (এর একটি দুর্দান্ত উদাহরণ একটি দস্তাবেজ স্টোর যেখানে প্রতিটি নথিতে শিরোনাম, তৈরির তারিখ, মালিক এবং এর মতো মেটাডেটা ক্ষেত্র থাকতে পারে))

এই মুহুর্তে আপনাকে তিনটি বিকল্প থেকে পছন্দ করতে হবে:

  1. রিলেশনাল ডিবিতে সমস্ত কিছু সঞ্চয় করুন।
  2. একটি স্থানীয় এক্সএমএল ডিবিতে সমস্ত কিছু সঞ্চয় করুন।
  3. দুটি পৃথক ডিবিতে ডেটা সঞ্চয় করুন, নেটিভ এক্সএমএলে এক্সএমএল এবং আপেক্ষিকভাবে মেটাডেটা।

অপশন 3 সম্ভবত সবচেয়ে পরিষ্কার তবে সবচেয়ে ব্যয়বহুল এবং কার্যকর করা সবচেয়ে কঠিন, এছাড়াও আপনি অগত্যা একটি খুব বড় সিস্টেমে বিতরণ লেনদেনও চান না। বিকল্প 2 খুব ভাল না কারণ নেটিভ এক্সএমএল ডেটাবেসগুলি সাধারণত সম্পর্কিত ডেটা (যা আপনি অনুসন্ধানে ব্যবহার করার সম্ভাবনা বেশি) হ্যান্ডল করার ক্ষেত্রে অত্যন্ত দুর্বল এবং প্রযুক্তিটি আপেক্ষিক ডিবি থেকে কম পরিপক্ক is

সুতরাং এটি আপনাকে সেরা বিকল্প হিসাবে প্রথম বিকল্প হিসাবে ছেড়ে দেয় তবে সম্ভবত সবচেয়ে কম খারাপ।


1

আমার অভিজ্ঞতার সাথে, ডাটাবেসে এক্সএমএল ব্যবহার করা শেষ হয়ে যায় কারণ তথ্যের উত্সটি কীভাবে এটি সঞ্চয় করে, বা আপনি কোনও কার্যকরীতা বাড়ানোর জন্য এটি একটি বিদ্যমান ডাটাবেসে যুক্ত করছেন যাতে প্রচুর ডাটাবেস প্রোগ্রামিংয়ের প্রয়োজন হয় না ।

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

আশা করি এটি সাহায্য করবে, জেফ


1

দস্তাবেজ-ভিত্তিক ডেটাস্টোর (ওরফে নো এসকিএল) আজকাল খুব জনপ্রিয়:

http://en.wikipedia.org/wiki/Document-oriented_database

কোনও সম্পর্কিত ডেটাবেসে আপনি কোনও দস্তাবেজ-ভিত্তিক স্কিম নিয়োগ করতে পারবেন না এমন কোনও কারণ নেই। মঙ্গোর মতো কিছু তুলনায় আপনি একই রকম সুবিধাগুলি নাও পেতে পারেন, তবে আপনার কোনও অসুবিধা হবে না।

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

মঙ্গোর সাথে এর বিপরীতে থাকুন, যেখানে তারা কেবল ডাটাবেসে জিনিস নথি is তবে এটি অন্য বিষয়।

সম্পাদনা: ডকুমেন্ট-ভিত্তিকের মূল ধারণাটি হ'ল: আপনি ডেটা টানছেন, এটিকে পরিচালনা এবং পুরোপুরি এটি আবার সরিয়ে দিন। কখনও কখনও, আপনি যখন ক্লায়েন্টের কাছে নথিটি হস্তান্তর করছেন তখন আপনি কেবল পুরো জিনিসটি একটি ব্লব হিসাবে প্রেরণ করতে চান এবং তাদের এটির মোকাবেলা করতে দিন। সুবিধা (এবং অপূর্ণতা) নমনীয়তা। ডকুমেন্টের বৈধতা এবং সঠিকতা ডাটাবেসের বাইরে করা হয়।

সম্পাদনা সম্পাদনা: অন্য একটি বিপরীতে। কোনও ডেটাবেস কলামে জেপিজি চিত্র বা ওয়ার্ড ডক্স সংরক্ষণ করার কল্পনা করুন।


0

টিপলস (একটি ডাটাবেস টেবিল) এর তালিকায় একটি গাছ (এক্সএমএল) সংরক্ষণ করার সুবিধা কী কী?

এক্সপিএল বা স্পারকিউএল ব্যবহার করে আপনার ডিবিএমএস থেকে এক্সএমএলকে জিজ্ঞাসাযোগ্য না করার কোনও কারণ নেই।

আমি এটি দেখতে হিসাবে, তারা কেবল দুটি ভিন্ন তথ্য কাঠামো। এবং তাদের একে অপরকে এম্বেড করা উচিত নয় এমন কোনও কারণ নেই।

জেএসএন ডেটাটাইপ পোস্টগ্র্রেএসকিউএল কেন যুক্ত হয়েছিল তার কারণগুলি আপনি সন্ধান করতে পারেন। আমি মনে করি একই যুক্তিগুলির অনেকগুলি প্রয়োগ হয়। এক্সএমএল / এক্সএসডি বাদে আরও বৈধতা পাওয়া সম্ভব।


-1

ঠিক আছে, এক্সএমএল (বা জেএসএন) হায়ারার্কির সাথে মেটাডেটাগুলি সঞ্চয় করতে বেশ ভাল। বিকল্পগুলি কি? রিফিড / কী / মান / গভীরতা সহ একটি মেটাডেটা টেবিল হতে পারে? এটি কিছুটা জটিল (তবে আপনার যদি এটির প্রয়োজন হয় তবে অনুসন্ধান করার জন্য সম্ভবত এটি আরও ভাল)। আপনি যখন কোনও বাহ্যিক টেবিলের উপর নির্ভর না করে বা ইনফোসের প্রতি "টাইপ" 1 টি কলাম যুক্ত না করে কিছু শ্রেণিবিন্যাসের ইনফোগুলি সংরক্ষণ করতে চান তখন কোনও দস্তাবেজ সম্পর্কে কিছু এক্সএমএল তথ্য সংরক্ষণ করা (ডকুমেন্টস টেবিলের একটি সারি) বেশ সুবিধাজনক।


1
এর আগে 11 টি উত্তরগুলিতে যা পোস্ট করা হয়েছিল তার চেয়ে বেশি কিছু যোগ করার কথা মনে হচ্ছে না
gnat

-2

আমি বলব এটি খারাপ অভ্যাস ছিল কারণ আপনি অকার্যকর ট্যাগ সহ দক্ষ স্টোরেজ আটকে রেখেছেন যা যদি আপনি তথ্যটি বিশ্লেষণের চেষ্টা করেন তবে সেখানে থাকার দরকার নেই। এক্সএমএলটিতে বর্ণিত ডেটার তুলনায় একটি বিরাট স্টোরেজ ওভারহেড রয়েছে, কারণ প্রতিটি সারির জন্য প্রতিটি কলামের জন্য আপনার একটি ট্যাগ প্রয়োজন। তুলনা করে, ডেটা পার্স আউট এবং রিলেশনাল ফর্ম্যাটে সঞ্চিত এটির কলামের নাম ওএনএসসি রয়েছে। একটি দেবের উপর এক ডজন সারি জন্য। বাক্স, বড় কথা, কিন্তু আমি দেখেছি বিকাশকারীরা এই ধারণাটি তৈরি করেন যে এটি কয়েক মিলিয়ন সারিতে পরিমাপযোগ্য। এটি কয়েক ডজন জিবি ডেটার জন্য 100 গিগাবাইট ওভারহেড উপস্থাপন করতে পারে, যা অপারেশনাল চ্যালেঞ্জ তৈরি করে। আপনি মূলত নিজের থেকে দায়বদ্ধতা অবলম্বন করছেন এবং আপনার লেখা ছাঁটাইকে সমর্থন করার মতো লোকদের দিকে ঠেলাচ্ছেন।

সুতরাং, কেন এটি নিজের ডাটাবেসে অপারেশনাল ডেটা থেকে এখনই সঞ্চয় করবেন না? বা এটি যেমন ইচ্ছা - ফ্ল্যাট ফাইলগুলিতে? এটি সম্ভবত আর কখনও তাকাতে হবে না, তাহলে কেন এটি অপারেশনাল সিস্টেমের পারফরম্যান্সকে আঘাত করা থেকে সরাবেন না? মনে রাখবেন যে এক্সএমএল কেবলমাত্র ডেটার স্কিমা সম্পর্কিত একটি বিবরণ সরবরাহ করতে পারে যা অন্যথায় সিস্টেমের মধ্যে স্টোরেজ প্রোটোকলের পার্থক্যের কারণে স্পষ্ট হবে না। এটি তার সম্পূর্ণ বিষয়, এটি সম্পর্কে চালাক কিছুই নেই। প্রদত্ত পরিমাণের পরিমাণের জন্য 10x ওভারহেডের পরিমাণ সঞ্চয় করে কেবল আপনি বলছেন যে আপনি এমন এক ঝাঁক বিকাশকারী যিনি জিনিসগুলি ভাবেন নি এবং আপনি যে ডেটাটি বুদ্ধিমান, দক্ষ, দ্রুততর ক্যোয়ারী ফর্ম্যাটে গ্রহণ করছেন সেই ডেটা প্রক্রিয়া করার জন্য আর্স করা যাবে না। অপারেশনাল সহায়তায় আপনার প্রচেষ্টা ঠেকানো বন্ধ করুন এবং কীভাবে আপনার পরে ডেটা হ্যান্ডেল করতে পারবেন সে সম্পর্কে ভাবুন ' এটি আমার কল হবে। এক্সএমএল পাওয়ার পরে ডেটা সংরক্ষণের কোনও প্রতিরক্ষা নেই, কারণ এটি এর উদ্দেশ্য হিসাবে কাজ করে।


1
তবে আপনি এখানে ধরে নিলেন যে এক্সএমএল খণ্ডের ডেটা হ'ল রিলেশনাল ডেটা। এটি সাধারণত ক্ষেত্রে হয় না - এক্সএমএল হায়ারারিকাল ডেটাগুলির জন্য খুব দরকারী, যা সম্পর্কিত ডিবিতে প্রতিনিধিত্ব করতে খুব বিশ্রী। একটি ইডিওম্যাটিক এক্সএমএল ডকুমেন্ট (উদাহরণস্বরূপ গুণাবলীর ভাল ব্যবহার করা) এর ওভারহেড মোটামুটি পরিমাণে কম থাকবে, মূল সমস্যাটি প্রতিটি অ্যাক্সেসে টুকরোটির পার্সিংয়ের ব্যয় হবে।
amon

ডেটাটি দ্রুত জিজ্ঞাসা বিন্যাসে প্রক্রিয়াকরণযোগ্য নাও হতে পারে (আপনার এটির অনুসন্ধানের প্রয়োজনও হতে পারে)। একটি এক্সএমএল স্কিমাটি কল্পনা করুন যেখানে শত শত optionচ্ছিক ক্ষেত্র রয়েছে যার মধ্যে সম্ভবত কয়েক মুহুর্ত একবারে জনবহুল হয়ে উঠেছে। আপনি যদি এটি সম্পর্কিতভাবে মডেলিংয়ের জন্য জোর দিয়ে থাকেন তবে আপনি নয়তো এনইউএলএল পূর্ণ ইবি বা ভরা মনস্তুষ্টিতে ভরপুর বিশাল টেবিলগুলি শেষ করবেন।
জুলিয়া হ্যাওয়ার্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.