আমার একটি প্রশ্ন রয়েছে যা আমি কিছু সময়ের জন্য উত্তর দেওয়ার চেষ্টা করছি তবে বুঝতে পারি না:
আপনি কাউচডিবি নথিগুলি কীভাবে ডিজাইন করবেন বা ভাগ করবেন?
উদাহরণস্বরূপ একটি ব্লগ পোস্ট নিন।
এটি করার আধা "সম্পর্কযুক্ত" উপায়টি হ'ল কয়েকটি বস্তু তৈরি করা:
- পোস্ট
- ব্যবহারকারী
- মন্তব্য
- ট্যাগ
- টুকিটাকি
এটি বোধগম্যতা তৈরি করে। তবে আমি একই জিনিসটি মডেল করার জন্য কাউচডিবি (সমস্ত কারণেই এটি দুর্দান্ত) ব্যবহার করার চেষ্টা করছি এবং এটি অত্যন্ত কঠিন।
সেখানে থাকা বেশিরভাগ ব্লগ পোস্ট আপনাকে কীভাবে এটি করতে হয় তার একটি সহজ উদাহরণ দেয়। তারা মূলত এটিকে একইভাবে ভাগ করে দেয় তবে বলে যে আপনি প্রতিটি নথিতে 'নির্বিচারে' বৈশিষ্ট্য যুক্ত করতে পারেন, এটি অবশ্যই দুর্দান্ত nice সুতরাং কাউচডিবিতে আপনার এমন কিছু থাকতে হবে:
- পোস্ট (দস্তাবেজের ট্যাগ এবং স্নিপেটস "সিউডো" মডেল সহ)
- মন্তব্য
- ব্যবহারকারী
কিছু লোক এমনকি এমনও বলতে পারে যে আপনি মন্তব্য এবং ব্যবহারকারীকে সেখানে ফেলে দিতে পারেন, তাই আপনার এটি থাকতে হবে:
post {
id: 123412804910820
title: "My Post"
body: "Lots of Content"
html: "<p>Lots of Content</p>"
author: {
name: "Lance"
age: "23"
}
tags: ["sample", "post"]
comments {
comment {
id: 93930414809
body: "Interesting Post"
}
comment {
id: 19018301989
body: "I agree"
}
}
}
এটি দেখতে খুব সুন্দর এবং সহজেই বোঝা যায়। আমি এটিও বুঝতে পারি যে আপনি কীভাবে এমন সমস্ত ভিউ লিখতে পারেন যা ব্যবহারকারীদের এবং ট্যাগগুলির সাথে একই মতামত মডেলগুলিতে মন্তব্য করার জন্য আপনার সমস্ত পোস্ট নথি থেকে কেবল মন্তব্যগুলি বের করেছিল।
তবে আমি মনে করি, "কেন কেবল আমার পুরো সাইটটিকে একটি ডকুমেন্টে রাখি না?":
site {
domain: "www.blog.com"
owner: "me"
pages {
page {
title: "Blog"
posts {
post {
id: 123412804910820
title: "My Post"
body: "Lots of Content"
html: "<p>Lots of Content</p>"
author: {
name: "Lance"
age: "23"
}
tags: ["sample", "post"]
comments {
comment {
id: 93930414809
body: "Interesting Post"
}
comment {
id: 19018301989
body: "I agree"
}
}
}
post {
id: 18091890192984
title: "Second Post"
...
}
}
}
}
}
আপনি এটি দিয়ে যা চেয়েছিলেন তা সন্ধান করতে আপনি সহজেই মতামত তৈরি করতে পারেন।
তারপরে আমার কাছে প্রশ্নটি হ'ল আপনি কীভাবে নির্ধারণ করবেন যে দস্তাবেজটি কখন ছোট দস্তাবেজগুলিতে ভাগ করবেন, বা কখন নথিগুলির মধ্যে "সম্পর্ক" তৈরি করবেন?
আমি মনে করি এটি অনেক বেশি "অবজেক্ট ওরিয়েন্টেড", এবং মান অবজেক্টগুলিতে মানচিত্র করা আরও সহজ হবে, যদি এটি ভাগ করে দেওয়া হয়:
posts {
post {
id: 123412804910820
title: "My Post"
body: "Lots of Content"
html: "<p>Lots of Content</p>"
author_id: "Lance1231"
tags: ["sample", "post"]
}
}
authors {
author {
id: "Lance1231"
name: "Lance"
age: "23"
}
}
comments {
comment {
id: "comment1"
body: "Interesting Post"
post_id: 123412804910820
}
comment {
id: "comment2"
body: "I agree"
post_id: 123412804910820
}
}
... তবে তারপরে এটি আরও সম্পর্কিত সম্পর্কিত ডাটাবেসের মতো দেখতে শুরু হয়। এবং প্রায়শই আমি এমন কিছু উত্তরাধিকার করি যা "সম্পূর্ণ-সাইট-ইন-এ-ডকুমেন্ট" এর মতো লাগে, তাই সম্পর্কের সাথে এটির মডেল করা আরও কঠিন।
রিলেশনাল ডেটাবেস বনাম ডকুমেন্ট ডাটাবেসগুলি কীভাবে / কখন ব্যবহার করতে হয় সে সম্পর্কে আমি প্রচুর জিনিস পড়েছি, সুতরাং এটি এখানে মূল সমস্যা নয়। আমি আরও ভাবছি, কাউচডিবিতে ডেটা মডেলিংয়ের সময় প্রয়োগ করার জন্য একটি ভাল নিয়ম / নীতি কী।
আর একটি উদাহরণ এক্সএমএল ফাইল / ডেটা সহ। কিছু এক্সএমএল ডেটাতে 10+ স্তর গভীর নীচে বাসা বেঁধেছে এবং আমি একই চিত্রটি ব্যবহার করতে চাই (উদাহরণস্বরূপ রেলগুলিতে অ্যাজাক্স, বা ফ্লেক্স) যা আমি অ্যাক্টিভেকর্ড, কাউচরেস্ট বা অন্য কোনও অবজেক্ট রিলেশনাল ম্যাপার থেকে জেএসএন রেন্ডার করব। কখনও কখনও আমি বিশাল সাইটের এক্সএমএল ফাইলগুলি পাই যেগুলি পুরো সাইটের কাঠামো যেমন নীচের মত, এবং আমাকে এটি আমার মানচিত্রের অ্যাপ্লিকেশনটিতে মান অবজেক্টে ম্যাপ করা দরকার যাতে ডেটা সিরিয়ালাইজিং / ডিসস্রায়ালাইজিংয়ের অন্য কোনও পদ্ধতিতে আমাকে লিখতে না হয় :
<pages>
<page>
<subPages>
<subPage>
<images>
<image>
<url/>
</image>
</images>
</subPage>
</subPages>
</page>
</pages>
সুতরাং সাধারণ কাউচডিবি প্রশ্নগুলি হ'ল:
- আপনার নথিগুলি (সম্পর্কগুলি ইত্যাদি) ভাগ করার জন্য আপনি কোন বিধি / নীতিগুলি ব্যবহার করেন?
- পুরো সাইটটিকে একটি ডকুমেন্টে রেখে দেওয়া কি ঠিক আছে?
- যদি তা হয়, তবে আপনি কীভাবে সুনির্দিষ্ট গভীরতার স্তরের (উপরের বৃহত জসন উদাহরণ, বা এক্সএমএল উদাহরণ) এর সাথে ডকুমেন্টগুলি সিরিয়ালাইজিং / ডিসরিয়ালাইজিং পরিচালনা করবেন?
- বা আপনি এগুলিকে ভিওতে পরিণত করেন না, আপনি কি কেবল "" এগুলি অবজেক্ট-রিলেশনাল ম্যাপের জন্য খুব ঘৃণিত, তাই আমি কী কাঁচা এক্সএমএল / জেএসএন পদ্ধতি ব্যবহার করে এগুলি অ্যাক্সেস করব "ঠিক করেন?
আপনার সহায়তার জন্য অনেক ধন্যবাদ, কাউচডিবি দিয়ে আপনার ডেটা কীভাবে ভাগ করবেন সেই বিষয়টি আমার পক্ষে "এখন থেকে এটি করা উচিত" এইভাবে বলা আমার পক্ষে মুশকিল। আমি শীঘ্রই সেখানে পৌঁছানোর আশা করি।
আমি নিম্নলিখিত সাইটগুলি / প্রকল্পগুলি অধ্যয়ন করেছি।
- কাউচডিবিতে হায়ারার্কিকাল ডেটা
- কাউচডিবি উইকি
- সোফা - কাউচডিবি অ্যাপ
- কাউচডিবি সংজ্ঞা নির্দেশিকা
- পিপকোড কাউচডিবি স্ক্রিনকাস্ট
- CouchRest
- কাউচডিবি পুনরায় পড়ুন
... তবে তারা এখনও এই প্রশ্নের উত্তর দেয়নি।