আমি এই প্রশ্নটি নিয়ে হোঁচট খেয়েছি এবং, যদিও এটি পুরানো, তবে আমি ভেবেছিলাম যে উত্তরগুলি দেওয়া হয়নি তার কয়েকটি উল্লেখ করা সম্ভব হবে। এছাড়াও, গত কয়েক বছরে জিনিসগুলি কিছুটা এগিয়ে গেছে, সুতরাং এসকিউএল এবং নোএসকিউএল একে অপরের কাছাকাছি চলেছে তা জোর দেওয়া উচিত।
একজন মন্তব্যকারী বুদ্ধিমান সাবধানতা অবলম্বন করেছিলেন যে "যদি ডেটা রিলেশনাল হয়, রিলেশনাল ব্যবহার করুন"। তবে, সেই মন্তব্যটি কেবলমাত্র সম্পর্কের বিশ্বেই অর্থবোধ করে, যেখানে স্কিমার সবসময় প্রয়োগের আগে আসে।
সম্পর্কিত ওয়ার্ল্ড: স্ট্রাকচার ডেটা> অ্যাপ্লিকেশন লিখুন এটি পেতে
নসকিউএল ওয়ার্ল্ড: ডিজাইন অ্যাপ্লিকেশন> সেই অনুযায়ী স্ট্রাকচার ডেটা
এমনকি যদি ডেটা আপেক্ষিক হয় তবে নোএসকিউএল এখনও একটি বিকল্প। উদাহরণস্বরূপ, একের সাথে একাধিক সম্পর্ক কোনও সমস্যা নয় এবং এটি মঙ্গোডিবি ডক্সে বিস্তৃত
২০১০ সালের সমস্যা সমাধানের জন্য ২০১৫ সালের সমাধান
যেহেতু এই প্রশ্নটি পোস্ট করা হয়েছিল, নো এসকিউএল এসকিউএল এর আরও কাছে আনার জন্য গুরুতর প্রচেষ্টা হয়েছে। ক্যালিফোর্নিয়া বিশ্ববিদ্যালয়ের (সান দিয়েগো) ইয়ান্নিস পাপাকনস্টান্টিনোর নেতৃত্বাধীন দলটি ফরওয়ার্ডে কাজ করছে , এসকিউএল ++ এর একটি বাস্তবায়ন যা শীঘ্রই এখানে পোস্ট করা দলের মতো অবিরাম সমস্যার সমাধান হতে পারে।
আরও ব্যবহারিক স্তরে, কাউচবেস ৪.০ প্রকাশের অর্থ হল প্রথমবারের মতো আপনি নোএসকিউএল-এ দেশীয় যোগদান করতে পারেন। তারা তাদের নিজস্ব এন 1কিউএল ব্যবহার করে। এটি JOIN
তাদের টিউটোরিয়ালের একটি উদাহরণ :
SELECT usr.personal_details, orders
FROM users_with_orders usr
USE KEYS "Elinor_33313792"
JOIN orders_with_users orders
ON KEYS ARRAY s.order_id FOR s IN usr.shipped_order_history END
এন 1কিউএল একত্রীকরণ, ফিল্টারিং ইত্যাদিসহ সমস্ত এসকিউএল অপারেশন না হলে বেশিরভাগের জন্য অনুমতি দেয়
না-নতুন-হাইব্রিড সলিউশন
যদি মঙ্গোডিবি এখনও একমাত্র বিকল্প হয় তবে আমি আমার বক্তব্যটিতে ফিরে যেতে চাই যে অ্যাপ্লিকেশনটি ডেটার কাঠামোর চেয়ে বেশি প্রাধান্য পাবে। উত্তরের কোনওটিতেই হাইব্রিড এম্বেডিংয়ের উল্লেখ নেই, যার মাধ্যমে সর্বাধিক জিজ্ঞাসিত ডেটা নথি / বস্তুটিতে এম্বেড করা হয় এবং সংখ্যালঘু ক্ষেত্রে রেফারেন্স রাখা হয়।
উদাহরণ: তথ্য (ভূমিকা নাম ব্যতীত) অপেক্ষা করতে পারেন? ব্যবহারকারীর এখনও প্রয়োজন নেই এমন কোনও কিছুর অনুরোধ না করে অ্যাপ্লিকেশনটি বুটস্ট্র্যাপিং দ্রুত হতে পারে?
এটি ক্ষেত্রে হতে পারে যদি ব্যবহারকারী লগ ইন করে এবং s / তার নিজের সমস্ত ভূমিকার জন্য সমস্ত বিকল্প দেখতে হয়। তবে, ব্যবহারকারী একজন "ইঞ্জিনিয়ার" এবং এই ভূমিকার জন্য বিকল্পগুলি খুব কমই ব্যবহৃত হয়। এর অর্থ হ'ল অ্যাপ্লিকেশনটিতে কেবল ইঞ্জিনিয়ারের জন্য অপশনগুলি দেখাতে হবে যদি সে সেগুলিতে ক্লিক করতে চায়।
এটি এমন একটি দস্তাবেজের মাধ্যমে অর্জন করা যায় যা শুরুতে অ্যাপ্লিকেশনটিকে বলে (1) যা ব্যবহারকারীর ভূমিকা পালন করে এবং (2) কোন নির্দিষ্ট ভূমিকার সাথে লিঙ্কিত কোনও ইভেন্ট সম্পর্কে তথ্য পেতে পারে।
{_id: ObjectID(),
roles: [[“Engineer”, “ObjectId()”],
[“Administrator”, “ObjectId()”]]
}
বা আরও ভাল, ভূমিকাগুলির ভূমিকা.Name ক্ষেত্রটি সূচী করুন এবং আপনারও অবজেক্টআইডি () এম্বেড করার প্রয়োজন হতে পারে না।
আরেকটি উদাহরণ: সমস্ত ভূমিকা সম্পর্কে সমস্ত সময় অনুরোধ করা তথ্যগুলি কি?
এটি এমন ক্ষেত্রেও হতে পারে যে ব্যবহারকারী ড্যাশবোর্ডে লগ ইন করে এবং 90% সময় "ইঞ্জিনিয়ার" ভূমিকার সাথে লিঙ্কিত কাজগুলি সম্পাদন করে। হাইব্রিড এম্বেডিং সম্পূর্ণভাবে সেই বিশেষ ভূমিকার জন্য এবং কেবল বাকীগুলির জন্য রেফারেন্স রাখতে পারে keep
{_id: ObjectID(),
roles: [{name: “Engineer”,
property1: value1,
property2: value2
},
[“Administrator”, “ObjectId()”]
]
}
স্কিমহীন হওয়া কেবল নোএসকিউএল এর একটি বৈশিষ্ট্য নয়, এই ক্ষেত্রে এটি একটি সুবিধা হতে পারে। এটি কোনও ব্যবহারকারীর অবজেক্টের "ভূমিকা" বৈশিষ্ট্যে বিভিন্ন ধরণের অবজেক্টগুলিকে বাসা বাঁধার জন্য পুরোপুরি বৈধ।