আমি একটি অ্যাপ্লিকেশন বিকাশ করছি যা ইনলাইন , ইন্টেক্সট মেটাডেটা সঞ্চয় করতে হবে । এর দ্বারা আমি যা বোঝাতে চাইছি তা হ'ল: আমাদের একটি দীর্ঘ পাঠ্য রয়েছে এবং আমরা একটি নির্দিষ্ট শব্দ বা পাঠ্যের বাক্যটির সাথে সংযুক্ত কিছু মেটাডেটা সঞ্চয় করতে চাই।
এই তথ্যটি সংরক্ষণ করার সর্বোত্তম উপায় কী হবে?
আমার প্রথম চিন্তাটি ছিল পাঠ্যে এমন এক ধরণের Markdown
সিনট্যাক্স অন্তর্ভুক্ত করা হবে যা পুনরুদ্ধার করার সময় পার্স করা হবে। এরকম কিছু দেখাচ্ছে:
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam __nonummy nibh__[@note this sounds really funny latin]
euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
এটি ভাবতে পারি এমন দুটি সমস্যার পরিচয় দেবে:
- অপেক্ষাকৃত ছোট্ট একটি, এটি যদি বলা হয় যে বাক্যটি উল্লিখিত পাঠ্যের উপর ভাগ্যক্রমে ঘটে তবে এটি বিশ্লেষণের সাথে বিশৃঙ্খলা সৃষ্টি করতে পারে।
- সর্বাধিক গুরুত্বপূর্ণ এটি হ'ল এটি মেটাডেটা টেক্সট থেকে পৃথক করে রাখে না ।
আমি এই ডেটা ধরে রাখতে একটি পৃথক ডেটা কাঠামো রাখতে চাই, যেমন একটি পৃথক ডিবি টেবিল যাতে এই মেটাডাটাগুলি সঞ্চিত থাকে, যাতে আমি এগুলি পৃথক উপায়ে ব্যবহার করতে পারি: অনুসন্ধান, পরিসংখ্যান, বাছাইকরণ ইত্যাদি and
সম্পাদনা: যেহেতু উত্তরদাতা তার উত্তর মুছে ফেলেছে তাই আমি মনে করি যে এখানে তার পরামর্শ যুক্ত করা ভাল কারণ এটি একটি কার্যকর পরামর্শ যা এই প্রথম ধারণার প্রসারিত হয়েছিল। পোস্টার একটি অনুরূপ বাক্য গঠন ব্যবহার করতে, কিন্তু মেটাডেটা লিঙ্ক করতে প্রস্তাব PRIMARY KEY
এর metadata
ডাটাবেসের টেবিল।
এরকম দেখতে এমন কিছু:
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam __nonummy nibh__[15432]
euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
নীচের উদাহরণ অনুসারে প্রয়োজনীয়, নিরীক্ষণযোগ্য তথ্য সহ একটি সারণী সারিটি কোথায় 15432
থাকবে ID
।
আমার দ্বিতীয় চিন্তাটি এই ধরণের তথ্য একটি ডিবি টেবিলের মধ্যে দেখতে এইভাবে সংরক্ষণ করা ছিল:
TABLE: metadata
ID TEXT_ID TYPE OFFSET_START OFFSET_END CONTENT
1 lipsum note 68 79 this sounds really funny latin
এইভাবে মেটাডাটার একটি অনন্য আইডি থাকবে, text_id
এটি একটি বিদেশী কী হিসাবে পাঠ্যগুলি সংরক্ষণের টেবিলের সাথে সংযুক্ত ছিল এবং এটি কোনও সরল অক্ষরের অফসেট ব্যাপ্তি ব্যবহার করে তথ্যটিকে পাঠ্যের সাথেই সংযুক্ত করবে ।
এটি মেটাডেটা থেকে ডেটা আলাদা রাখার কৌশলটি করবে তবে আমি এই পদ্ধতির সাহায্যে তাত্ক্ষণিকভাবে দেখতে পাচ্ছি যে সমস্যাটি মূলত সম্পাদনযোগ্য নয় । অথবা, যদি আমি মেটাডেটার স্থিরীকরণ পর টেক্সট সম্পাদনার বাস্তবায়ন করতে চেয়েছিলেন, আমি মূলত অক্ষর সংযোজন, অথবা অপসারণ নিরূপণ পূর্ববর্তী সংস্করণে তুলনায় এবং চেক কিনা করতে হবে প্রতিটি এই পরিবর্তন আগে বা পরে অপসারণ অক্ষর যোগ করা বা প্রতিটি সম্পর্কিত মেটাডেটা
যা আমার কাছে সত্যই অস্বস্তিকর পদ্ধতির মতো মনে হচ্ছে।
আমি কীভাবে সমস্যার সাথে যোগাযোগ করতে পারি তার জন্য আপনার কোনও পয়েন্টার বা পরামর্শ রয়েছে?
সম্পাদনা 2: কিছু এক্সএমএল সমস্যা
অন্য কেস যুক্ত করা যা ডেটা এবং মেটাডেটা এই পৃথকীকরণের জন্য যথেষ্ট প্রয়োজনীয় হবে।
- ধরা যাক যে আমি পৃথক ব্যবহারকারীর জন্য একই লেখার বিভিন্ন মেটাডেটা সেটগুলি করা সম্ভব করে তুলতে চাই , প্রতিটি ব্যবহারকারীর প্রকৃতপক্ষে অন্য ব্যবহারকারীর মেটাডেটা প্রদর্শনের সম্ভাবনা ছাড়াই।
মার্কডাউন ধরণের কোনও সমাধান (বা এইচটিএমএল, বা এক্সএমএল) এই মুহূর্তে কার্যকর করা কঠিন। এই ক্ষেত্রে কেবলমাত্র সমাধানটিই আমি ভাবতে পারি যে এটির আর একটি ডিবি টেবিল রয়েছে যা মূল পাঠ্যের একক ব্যবহারকারীর সংস্করণ ধারণ করবে, এটি ব্যবহার করে মূল পাঠ্য সারণীর সাথে সংযুক্ত হবে FOREIGN KEY
।
এটি খুব মার্জিত কিনা তা নিশ্চিত নয়।
- এক্সএমএলের একটি শ্রেণিবিন্যাস সম্পর্কিত ডেটা মডেল রয়েছে: যে কোনও উপাদান অন্য উপাদানগুলির সীমানার মধ্যে দেখা দেয় তাকে তার শিশু হিসাবে বিবেচনা করা হয় , যা প্রায়শই আমি খোঁজ করি না এমন ডেটা মডেলের ক্ষেত্রে হয় না; এক্সএমএলে কোনও अभिभाव ক ট্যাগ বন্ধ হওয়ার আগে কোনও বাচ্চাদের উপাদান অবশ্যই বন্ধ করতে হবে, যাতে কোনও উপাদানকে ওভারল্যাপিংয়ের সুযোগ না দেওয়া হয়।
উদাহরণ:
<note content="the beginning of the famous placeholder">
অ্যাডমিন<comment content="I like the sound of amet/elit">
সরবরাহকারী</note>
, হকি পর্যবেক্ষণ সরবরাহকারী</comment>
,<note content="adversative?">
কিন্তু Diam nonummy অ্যাডাপ্টারের পারফরমেন্স কাটন হিসাবে পাম্প dolore ম্যাগনা সর্বশেষ ইহাই উপপাদ্য বিষয় উত্তর বাতিল করুন।<note content="funny latin">
</note>
</note>
এখানে আমাদের দুটি ভিন্ন সমস্যা রয়েছে:
ওভারল্যাপিংয়ের বিভিন্ন উপাদান: প্রথম মন্তব্যটি প্রথম নোটের মধ্যেই শুরু হয় তবে প্রথম নোটটি শেষ হওয়ার পরে শেষ হয়, অর্থাত্ এটি শিশু নয়।
ওভারল্যাপিং একই উপাদান: শেষ নোট এবং গা the়ফেসড নোট ওভারল্যাপ; যাইহোক, যেহেতু তারা একই ধরণের উপাদান, পার্সার প্রথম বন্ধ হওয়ার পরে সর্বশেষ খোলা উপাদানটি বন্ধ করবে এবং সর্বশেষ প্রান্তে প্রথম খোলা উপাদানটি, যা এই পরিস্থিতিতে উদ্দেশ্যপ্রণোদিত নয়।