কেবলমাত্র আপনার ডেটা ডিস্কে সংরক্ষণের পরিবর্তে একটি ডাটাবেস ব্যবহার করবেন?


193

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

ডিস্কে কেবল ডেটা সংরক্ষণ করার পরিবর্তে কেন একজনকে ডাটাবেস ব্যবহার করা উচিত?


61
যদি আপনার অ্যাপ্লিকেশনটিতে আপনার ডেটার সম্পর্কগুলি পরিচালনা করা কোনও ডাটাবেজে না করা (যা আমি বিশ্বাস করতে চূড়ান্ত মনে করি) এর চেয়ে বেশি দ্রুত হয় তবে আপনাকে এসকিউএল এবং ডাটাবেস স্বাভাবিককরণের উপর পড়তে হবে। আপনি যা যা अनुभव করছেন তা সম্ভবত ভয়াবহভাবে ডিজাইন করা ডাটাবেসের পার্শ্ব-প্রতিক্রিয়া।
ইন্নিস

68
আপনি যে দৃশ্যের বর্ণনা দিচ্ছেন তাতে আপনার ডাটাবেসের দরকার নেই কারণ আপনার ডেটা সেটটি তুচ্ছ। ডেটাবেসগুলি আরও জটিল ডেটা সেটগুলির জন্য বোঝানো হয়, যদি আপনি সমস্ত কিছু পড়েন এবং একটি তালিকা দেখান, আপনার পদ্ধতির কাজ করে।
ইন্নিস

16
আপনি কোন রেসের অবস্থার মুখোমুখি হতে পারেন এবং আপনি কি এর জন্য প্রস্তুত? আপনি কি একটি একক ওয়েবসার্ভারকে গত করতে চান? আপনার সার্ভার ব্যর্থ হলে আপনার ব্যাকআপ পরিকল্পনা কী? এই সমস্ত প্রশ্নের উত্তর আপনার কাছে না থাকলে আপনার কাছে একটি ডাটাবেস থাকলে ভাল হতে পারে। এছাড়াও আপনি যদি ডেটাবেসগুলি কীভাবে ব্যবহার করবেন সে সম্পর্কে শিখার ঝাপটাকে ছাড়িয়ে যান, তবে আমার অনুমান যে আপনার "এসকিউএল কোয়েরি ব্যবহারের চেয়ে সহজ" খুঁজে পেতে "এসকিউএল কোয়েরি ব্যবহারের চেয়ে সহজ" হিসাবে সংশোধন করা উচিত যদি আপনি এসকিউএল না বুঝতে পারেন। "
btilly

37
ডেটাবেস যেভাবেই ডিস্কে ডেটা সঞ্চয় করে। কাঠামোগত ডেটা ফাইল করার জন্য সিস্টেমগুলির প্রাকৃতিক বিবর্তনের এটি কেবল শেষ পরিণতি। আপনার কাঠামোগত ডেটা সংরক্ষণ করার জন্য যদি আপনি ফাইলগুলি ব্যবহার করতে শুরু করেন তবে সম্ভাব্যতা রয়েছে আপনি ইতিমধ্যে ডেটাবেসগুলিতে বিকাশকৃত বৈশিষ্ট্যগুলি পুনর্নির্মাণের সন্ধান করতে। তবে কেন শুরু থেকে একটি ডাটাবেস ব্যবহার করবেন না?
বেনেডিক্ট

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

উত্তর:


280
  1. আপনি একটি ডাটাবেসে ডেটা জিজ্ঞাসা করতে পারেন (এটি প্রশ্ন জিজ্ঞাসা করুন)।
  2. আপনি তুলনামূলকভাবে দ্রুত ডাটাবেস থেকে ডেটা সন্ধান করতে পারেন।
  3. আপনি JOIN গুলি ব্যবহার করে দুটি আলাদা আলাদা টেবিল থেকে ডেটা সম্পর্কিত করতে পারেন।
  4. আপনি একটি ডাটাবেসে ডেটা থেকে অর্থপূর্ণ প্রতিবেদন তৈরি করতে পারেন।
  5. আপনার ডেটা এটিতে একটি অন্তর্নির্মিত কাঠামো রয়েছে।
  6. প্রদত্ত ধরণের তথ্য সর্বদা কেবল একবারই সংরক্ষণ করা হয়।
  7. ডাটাবেসগুলি এসিডি হয়
  8. ডাটাবেসগুলি দোষ-সহনশীল।
  9. ডাটাবেসগুলি খুব বড় ডেটা সেটগুলি পরিচালনা করতে পারে।
  10. ডাটাবেসগুলি একযোগে হয়; একাধিক ব্যবহারকারী ডেটা ক্ষতিগ্রস্ত না করে একই সময়ে তাদের ব্যবহার করতে পারেন।
  11. ডাটাবেসগুলি স্কেল ভাল।

সংক্ষেপে, আপনি বহু স্মার্ট ব্যক্তিদের দ্বারা বহু বছর ধরে বিকশিত সুপরিচিত, প্রমাণিত প্রযুক্তিগুলির বিস্তৃত থেকে উপকার পাবেন।

যদি আপনি উদ্বিগ্ন হন যে কোনও ডেটাবেস ওভারকিল হয় তবে এসকিউএলাইট পরীক্ষা করে দেখুন।


21
Nor. সাধারণকরণ, the লিঙ্কটি দেখুন, ৮. দোষ-সহনশীলতার বিষয়ে পড়ুন। ওহ, এবং আপনি নোএসকিউএল ক্রেজে জড়িয়ে পড়ার আগে এসকিউএল ডাটাবেসগুলি সম্পর্কে জানুন; তাদের নিজস্ব শর্তে তাদের জানুন। তুমি বুঝবে. আপনি যদি কেবল সাধারণ কনফিগারেশন ডেটার বিষয়ে কথা বলছেন তবে জেএসওএন আপনার প্রয়োজনীয় সমস্ত হতে পারে। তবে প্রোগ্রাম সেটিংস ছাড়াও আরও অনেক ধরণের ডেটা রয়েছে out
রবার্ট হার্ভে

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

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

28
এটিকে অন্য উপায়ে বলার জন্য, কখনও কখনও আপনার একটি তাঁবু প্রয়োজন হয় তবে কখনও কখনও আপনার জন্য একটি ঘর প্রয়োজন হয় এবং একটি ঘর তৈরি করা তাঁবু বাজানোর চেয়ে সম্পূর্ণ ভিন্ন বলের খেলা।
রবার্ট হার্ভে

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

200

রবার্ট যা বলেছিল তার সাথে আমি একমত হয়েছি, যখনই কেবল আপনাকে ডিস্কে ডেটা সংরক্ষণ করার বিপরীতে কোনও ডেটাবেস ব্যবহার করা উচিত তা তিনি আপনাকে বলেননি।

সুতরাং স্ক্র্যাবিলিটি, নির্ভরযোগ্যতা, ফল্ট সহনশীলতা ইত্যাদি সম্পর্কে রবার্ট যা বলেছিলেন তা ছাড়াও এটি নিন

আরডিবিএমএস কখন ব্যবহার করবেন তার জন্য এখানে কয়েকটি বিষয় বিবেচনা করার জন্য রয়েছে:

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

কখন কোন নুএসকিউএল ব্যবহার করবেন for

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

সবশেষে, ফাইলগুলি কখন ব্যবহার করবেন

  • আপনার কাছে সিস্টেম সিস্টেমটি পরিচালনা করতে পারে এমন যুক্তিসঙ্গত পরিমাণে অস্ট্রাকচারিত ডেটা রয়েছে
  • আপনি কাঠামো, সম্পর্ক সম্পর্কে চিন্তা করবেন না
  • আপনি স্কেলাবিলিটি বা নির্ভরযোগ্যতা সম্পর্কে চিন্তা করবেন না (যদিও এটি করা যেতে পারে, ফাইল সিস্টেমের উপর নির্ভর করে)
  • আপনি চান না বা ওভারহেডের সাথে ডিল করতে পারবেন না কোনও ডাটাবেস যুক্ত করবে
  • আপনি কাঠামোগত বাইনারি ডেটা নিয়ে কাজ করছেন যা ফাইল সিস্টেমের সাথে সম্পর্কিত, উদাহরণস্বরূপ: চিত্র, পিডিএফ, নথি ইত্যাদি etc.

14
+1, আমি এটি গুরুত্বপূর্ণ মনে করি যে আপনি ফাইলগুলি সংরক্ষণের জন্য উপযুক্ত সময়ে এমন সময়গুলি আপনি উল্লেখ করেছিলেন।
গ্র্যান্ডমাস্টারবি

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

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

8
@ গুরানজভিচ এটি কখনও কখনও অর্থবোধ করে। একটি ডিরেক্টরিতে 10,000+ চিত্র সংরক্ষণ করুন এবং কিছু ফাইল সিস্টেম একটি থামাতে গ্রাইন্ড করবে - একটি ডিবি ম্যানুয়াল সাব-ডিরেক্টরি পার্টিশন স্কিমের চেয়ে সহজ হতে পারে।
মার্টিন বেকেট

2
@ মার্টিনবেকেট: গত দশকের কোন ফাইল সিস্টেম এটি করে?
ইমন নারবনে

55

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

আপনি আরও জটিল হয়ে উঠলে আপনি আসলে একটি ডাটাবেস তৈরি করছেন। আপনি যেটাকে কল করতে চান, একটি ডাটাবেস কেবলমাত্র ডিস্কে সঞ্চিত রেকর্ডের একটি সেট। আপনি ফাইল তৈরি করছেন বা মাইএসকিউএল , এসকিউএলাইট বা যা কিছু ফাইল (গুলি) তৈরি করছে তা সেগুলি উভয়ই ডাটাবেস।

আপনি যা অনুপস্থিত তা হ'ল জটিল কার্যকারিতা যা ডেটাবেস সিস্টেমগুলিতে তাদের ব্যবহার সহজ করার জন্য তৈরি করা হয়েছিল।

মূল বিষয় যা মনে মনে জাগে তা হল সূচক। ঠিক আছে, যাতে আপনি 10 বা 20 বা এমনকি 100 বা 1000 রেকর্ডগুলি সিরিয়ালযুক্ত অ্যারে, বা একটি জেএসওন স্ট্রিংগুলিতে সঞ্চয় করতে পারেন এবং এটি আপনার ফাইলের বাইরে টেনে আনতে পারেন এবং তুলনামূলকভাবে দ্রুত পুনরাবৃত্তি করতে পারেন ।

এখন, কল্পনা করুন আপনার 10,000, 100,000, এমনকি 1000,000 রেকর্ড রয়েছে। যখন কেউ লগ ইন করার চেষ্টা করে আপনি এখন একটি ফাইল খুলতে যাচ্ছেন যা এখন কয়েকশ মেগাবাইট বড়, আপনার প্রোগ্রামে এটি মেমরির মধ্যে লোড করুন, একই আকারের তথ্যের অ্যারেটি বের করুন এবং তারপরে কেবলমাত্র কয়েক হাজার রেকর্ডের পুনরুক্তি করুন আপনি যে রেকর্ডটি অ্যাক্সেস করতে চান তা সন্ধান করুন।

একটি সঠিক ডাটাবেস আপনাকে রেকর্ডে নির্দিষ্ট ক্ষেত্রগুলিতে সূচিপত্র সেট আপ করতে দেয় যা আপনাকে ডাটাবেসটি জিজ্ঞাসা করতে এবং খুব দ্রুত বিশাল ডেটা সেট সহ, খুব দ্রুত একটি প্রতিক্রিয়া পেতে দেয়। মেমক্যাচড , বা এমনকি হোম-ব্রিউ ক্যাচিং সিস্টেমের মতো কিছু দিয়ে এটি একত্র করুন (উদাহরণস্বরূপ, কোনও অনুসন্ধানের ফলাফলগুলি 10 মিনিটের জন্য একটি পৃথক টেবিলের মধ্যে সংরক্ষণ করুন এবং এর পরে অন্য কেউ একই জিনিস অনুসন্ধান করলে সেই ফলাফলগুলি লোড করুন) এবং আপনার কাছে জ্বলজ্বল তাত্ক্ষণিক প্রশ্ন রয়েছে, আপনি যখন ফাইলগুলিতে ম্যানুয়ালি পড়ছেন / লিখছেন তখন এমন কোনও বড় ডেটাसेटের সাথে আপনি কিছু পাবেন না।

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

একটি ডাটাবেস সিস্টেমের সাহায্যে এটি নিজস্ব থ্রেড (গুলি), এমনকি নিজস্ব সার্ভারে চলবে। আপনার প্রোগ্রাম এবং ডাটাবেস সার্ভারের মধ্যে যা সঞ্চারিত হয় তা হ'ল একটি এসকিউএল কোয়েরি এবং যেটি আবার সঞ্চারিত হয় তা হ'ল আপনি যে ডেটা অ্যাক্সেস করতে চান তা। আপনি পুরো ডেটাसेट মেমোরিতে লোড করছেন না - আপনি যা পাঠাচ্ছেন এবং গ্রহণ করছেন তা আপনার মোট ডেটা সেটের একটি ক্ষুদ্র ভগ্নাংশ।


1
1. দয়া করে আপনার সমস্ত ব্যবহারকারীর তথ্য ক্লায়েন্ট সাইড কোডে লোড করবেন না! (আমি নিশ্চিত যে এটি কেবল একটি উদাহরণ ছিল) ২. 100 এমবি বড় ফাইল থেকে প্রথম স্থানে এটি লোড করতে কিছুটা সময় লাগবে। ৩. আপনার উদাহরণটি সঠিক, তবে এটি ধরে নেওয়া হয় যে আপনি কেবল কখনও ব্যবহারকারীর নাম দিয়ে অনুসন্ধান করতে যাচ্ছেন। আপনি যদি কোনও ব্যবহারকারী সম্পর্কে আরও ডেটা সঞ্চয় করতে চান তবে কি হবে? যেমন বয়স। এখন আপনি 20-30 বছর বয়সের মধ্যে থাকা সমস্ত ব্যবহারকারীদের অনুসন্ধান করতে চান। বা এমনকি সহজ, যখন আপনার জাসনটি দেখতে দেখতে এমন কোনও ব্যবহারকারীকে সন্ধান করুন: {লগইন: {পাস: পাস, অ্যাড 1: "123 স্যাসড", শহর: "যেখানেই"}}}
টমাস ক্লেসন

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

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

4
সূচকগুলি সম্পর্কে, না, ডাটাবেস সবকিছু স্বয়ংক্রিয়ভাবে সূচী করে না। কেবলমাত্র কয়েকটি জিনিস স্বয়ংক্রিয়ভাবে ইনডেক্স করা হয় যখন বাকীগুলিকে সুস্পষ্ট প্রয়োজন হয় "দয়া করে এটি সূচকযুক্ত করুন"। এবং সূচকগুলি অনুসন্ধানকে লগারিদমিক সময়কে হ্রাস করে, হে (লগ (এন)) যা ধ্রুবকের চেয়ে সামান্য ধীর।
সম্রাট ওরিওনি

1
হ্যাশ-ভিত্তিক এবং বি-ট্রি ভিত্তিক বাস্তবায়নের মধ্যে পার্থক্য সম্পর্কে উদ্বেগ প্রকাশ করা অকাল অপটিমাইজেশন। ডাটা যদি সূচকে থাকে তবে এটি ডিস্কের বাইরে পড়ার চেয়ে কয়েকগুণ বেশি দ্রুত হবে।
সিলভারব্যাক

14

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

এমনকি এমন একটি সাধারণ তালিকা সহ যা আপনি লোড করেন, মেমরি ধরে রাখেন, তারপরে প্রয়োজনে লিখুন, বেশ কয়েকটি সমস্যায় ভুগতে পারেন:

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

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

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

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


12

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

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

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

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


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

12

TLDR

দেখে মনে হচ্ছে আপনি আপনার আবেদনের জন্য একটি মূলত বৈধ, স্বল্পমেয়াদী ডেটা-স্টোর প্রযুক্তিগত সিদ্ধান্ত নিয়েছেন - আপনি একটি কাস্টম ডেটা ম্যানেজমেন্ট সরঞ্জাম লিখতে পছন্দ করেছেন।

আপনি একটি ধারাবাহিক উপর বসে আছেন, উভয় দিকের দিকে এগিয়ে যাওয়ার বিকল্পগুলি সহ।

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


দেখে মনে হচ্ছে আপনি একটি (ছোট) কাস্টম-উদ্দেশ্য ডাটাবেস লিখেছেন, যা আপনার অ্যাপ্লিকেশনটিতে অন্তর্নির্মিত এবং সরাসরি ব্যবহৃত হয়েছে। আমি ধরে নিয়েছি আপনি আসল ডিস্ক রাইটিং এবং রিডিং পরিচালনা করার জন্য এবং একটি সমন্বয়টিকে ডেটা স্টোর হিসাবে চিকিত্সা করার জন্য কোনও ওএস এবং ফাইল সিস্টেমের উপর নির্ভর করছেন।

আপনি কি করেছেন কখন করবেন

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

এটির জন্য কোড লিখতেও একটি সহজ সংমিশ্রণ - এপিআই মোটামুটি সোজা-সামনের এবং মৌলিক, এবং এটি কাজ করতে কোডের তুলনামূলকভাবে কয়েকটি লাইন লাগে।

সাধারণত, আপনি যা করেছেন তা করা আদর্শ:

  • নতুন ধারণার প্রোটোটাইপিং
  • বিল্ডিং অ্যাপ্লিকেশনগুলি যা স্কেল করার পক্ষে অত্যন্ত সম্ভাবনা নেই, পারফরম্যান্সের ভিত্তিতে
  • অস্বাভাবিক পরিস্থিতি দ্বারা সীমাবদ্ধ যেমন ডেটাবেস ইনস্টল করার জন্য সংস্থার অভাব

বিকল্প

আপনি বিকল্পগুলির ধারাবাহিকতায় রয়েছেন এবং এখানে দুটি 'দিকনির্দেশ' রয়েছে যা আপনি এখান থেকে যেতে পারেন, যা আমি 'ডাউন' এবং 'আপ' হিসাবে মনে করি:

নিচে

এটি প্রয়োগের জন্য সর্বনিম্ন সম্ভাব্য বিকল্প, তবে সম্পূর্ণতার জন্য এটি এখানে:

আপনি চাইলে নীচে যেতে পারেন অর্থাৎ ওএস এবং ফাইল সিস্টেমকে পুরোপুরি বাইপাস করতে পারবেন এবং সরাসরি ডিস্ক থেকে সরাসরি লিখতে এবং পড়তে পারবেন। এই পছন্দটি কেবলমাত্র সেই ক্ষেত্রে প্রাসঙ্গিক যেখানে চূড়ান্ত দক্ষতার প্রয়োজন হয় - উদাহরণস্বরূপ, সম্পূর্ণরূপে কার্যক্ষম ওএসের জন্য পর্যাপ্ত র‌্যাম ছাড়াই, একটি ন্যূনতম / ক্ষুদ্র এমপি 3 প্লেয়ার ডিভাইসের কথা ভাবেন , বা ওয়েব্যাক মেশিনের মতো এমন কিছু , যার জন্য অবিশ্বাস্যভাবে দক্ষ ভর প্রয়োজন ডেটা রাইটিং ক্রিয়াকলাপ (বেশিরভাগ ডেটা স্টোরগুলি ধীরে ধীরে পড়ার জন্য ধীর রচনায় বাণিজ্য করে, কারণ এটি প্রায় সমস্ত অ্যাপ্লিকেশনের ক্ষেত্রে অপ্রতিরোধ্যভাবে বেশি সাধারণ ব্যবহারের ক্ষেত্রে) case

আপ

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

আরও শক্তিশালী ডেটা স্টোর

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

নিম্নলিখিতগুলি যখন আপনার অ্যাপ্লিকেশনটি বর্ণনা করে তখন এটি পরিমাপের সুস্পষ্ট পথ:

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

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

সুপরিচিত উদাহরণ: কাউচডিবি , মঙ্গোডিবি , রেডিস , মাইক্রোসফ্টের অ্যাজুরি , গুগল অ্যাপ ডেটা স্টোর এবং অ্যামাজনের ইসিইর মতো ক্লাউড স্টোরেজ সমাধান ।

আরও জটিল ডেটা ম্যানিপুলেশন ইঞ্জিন

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

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

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

সুপরিচিত উদাহরণগুলি হ'ল মাইএসকিউএল , এসকিউএল সার্ভার , ওরাকেলের ডেটাবেস এবং ডিবি 2

কাজ আউটসোর্স

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

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

সুপরিচিত উদাহরণ MVC সরঞ্জাম ( জ্যাঙ্গো , Yii ), পাগল নেভিগেশন রুবি , এবং Datomic । আক্ষরিক অর্থে কয়েক ডজন সরঞ্জাম এবং লাইব্রেরি রয়েছে যা বিভিন্ন ডেটা স্টোরের এপিআইয়ের চারপাশে মোড়কের কাজ করে বলে এখানে ন্যায়বিচার করা কঠিন।


PS: আপনি যদি ভিডিওগুলিকে পাঠ্যের চেয়ে বেশি পছন্দ করেন তবে আপনি রিচ হিকির ডেটাবেস সম্পর্কিত কিছু ভিডিও দেখতে চাইতে পারেন; তিনি একটি ডেটা স্টোর বাছাই, ডিজাইন এবং ব্যবহারের ক্ষেত্রে যে বেশিরভাগ চিন্তাভাবনাটি বর্ণনা করেছেন তার বেশিরভাগ ক্ষেত্রেই তিনি ভাল কাজ করেন।


11

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

ফাইল সিস্টেমগুলির একটি সমস্যা (এবং সাধারণভাবে NoSQL) ডেটার মধ্যে সম্পর্ক পরিচালনা করে। যদি এটি এখানে প্রধান ব্লকার না হয়, তবে আমি বলতে চাই যে আপাতত আরডিবিএমএস এড়িয়ে চলুন। স্টোরেজ হিসাবে একটি ফাইল সিস্টেম ব্যবহার করার ইতিবাচক দিকগুলি মনে রাখবেন:

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

( উত্স )


10

ফাইল সিস্টেমগুলি এক প্রকারের ডাটাবেস। অন্য সবার মতো কোনও আরডিবিএমএস হয়তো কথা বলছে না তবে কঠোর অর্থে অবশ্যই একটি ডিবি। আপনি অনুসন্ধানের ডেটা (ফাইলের বিষয়বস্তু) এর কী (ফাইলের নাম) সরবরাহ করেছেন, যা স্ট্রাস্ট্রেস্টের বিমূর্তকরণ করেছে এবং এমন একটি API যা আপনার প্রোগ্রামের সাথে যোগাযোগ করে।

সুতরাং, আপনি একটি ডাটাবেস ব্যবহার করছেন। অন্যান্য পোস্টগুলি বিভিন্ন ধরণের ডাটাবেসের গুণাবলী সম্পর্কে তর্ক করতে পারে ...


1
ডাটাবেস এবং স্টোরেজটি সত্যই আন্তঃআরিক্ষেয় ব্যবহার করা যায় না। একটি ডাটাবেস হ'ল এক ধরণের স্টোরেজ, তবে একটি ফাইল সিস্টেম অবশ্যই এক প্রকারের ডেটাবেস নয়
Gaz_Edge

3
"সঞ্চয়স্থান" যেখানে বিট এবং বাইট রাখা হয়। একটি ডাটাবেস অগত্যা কোনও ফাইল সিস্টেমে ফাইল ব্যবহার করে না। একটি ফাইল সিস্টেম হ'ল শব্দটির সবচেয়ে কঠোর অর্থে একটি ডেটাবেস definitely
ক্রিস এস

6
যে কেউ বিতর্ক করছেন যে যখন বিকল্পের সময় ডাটাবেসগুলিতে কোনও ব্যবহার হয় না তা হ'ল ডেটাবেস ব্যবহার করা ; হ্যাঁ. এটি তাদের বোঝাতে সহায়ক মনে হয় যে তাদের যুক্তি ভুল ধারণাটি ভিত্তিক that একবার তাদের প্রাথমিক পরিস্থিতি সম্পর্কে আরও ভালভাবে বুঝতে পারলে আমরা উপলব্ধ প্রযুক্তিগুলির আরও সম্পূর্ণ বোঝার সাথে তাদের এগিয়ে যেতে সহায়তা করতে পারি। ফাইল সিস্টেমগুলি হায়ারারিকাল ডেটাবেস, এর উপযুক্ত কারণগুলির সম্পর্ক এবং অবজেক্ট ডাটাবেস সিস্টেমগুলি এগুলিকে দ্রুত, আরও ভাল সংগঠিত এবং আরও দক্ষ ডেটা স্টোরেজ / পুনরুদ্ধার হিসাবে সরবরাহ করেছে।
ক্রিস এস

2
@ গাজ_এডজ ডেটা ইতিমধ্যে একটি অকার্যকর "ডাটাবেস" আকারে এমন একটি ফাইলের মধ্যে সংরক্ষণ করা হয় যার কাঠামো এবং বিষয়বস্তু উভয়ই ওপির অ্যাপ্লিকেশন দ্বারা পরিচালিত হয়। বুঝতে এবং গ্রহণ করতে ওপি পেতে চেষ্টা করছে যে একটি "বাস্তব" ডাটাবেসের সিস্টেমের জন্য ব্যবহারের ক্ষেত্রে বুঝতে তাদের পেয়ে করার জন্য একটি দরকারী প্রথম পদক্ষেপ; একবার তারা বুঝতে পারে যে কোনও উপায়ে একটি "ডাটাবেস" যেভাবেই ঘটছে, অ্যাপ্লিকেশনটিকে তার নিজস্ব কাজটি করার সুযোগ দেওয়ার চেয়ে কোনও সঠিকভাবে কাঠামোগত এবং পরিচালিত পরিষেবাটি আরও দক্ষ যেখানে সে সম্পর্কে কথা বলা শুরু করা সহজ। আমি এই উত্তরটি সাহায্য করার পরামর্শ দিচ্ছি, খুব বেশি।
রব মায়ার

8

যদি আপনার একাধিক প্রক্রিয়া (ব্যবহারকারী / সার্ভার) ডেটা সংশোধন করে থাকে তবে একটি ডাটাবেস প্রয়োজন। তারপরে ডাটাবেস একে অপরের পরিবর্তনকে ওভাররাইট করা থেকে বিরত রাখে।

যখন আপনার ডেটা মেমরির চেয়ে বড় হয় তখন আপনার একটি ডেটাবেসও প্রয়োজন। আজকাল আমাদের যে স্মৃতি উপলব্ধ রয়েছে তার সাথে এটি সত্যিকার অর্থে অনেক অ্যাপ্লিকেশনগুলিতে ডাটাবেসগুলি অচল করে দেয়।

আপনার দৃষ্টিভঙ্গি অবশ্যই "ইন-মেমরি ডেটাবেসগুলি" এর বোকামির চেয়ে ভাল। এগুলি মূলত আপনার পদ্ধতির, তবে প্রচুর ওভারহেড যুক্ত।


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

যা আমি অনুমান করি আমি। উদাহরণস্বরূপ, যখন আমি "প্লেয়ার তালিকা" থেকে ডেটা "র্যাঙ্কিং" এ রূপান্তর করি, এটি কোনও মানচিত্র অপারেশন হ্রাস ছাড়া কিছুই নয়। একটি গেম বা একটি ইন্টারেক্টিভ সাইট তৈরি করার সময়, আপনি উপস্থাপন করেন এমন সমস্ত কিছুই আপনার মূল ডেটা থেকে একটি মানচিত্রের অপারেশন! সুতরাং এই ধরণের অপ্টিমাইজেশন থাকা সত্যই কাম্য হতে পারে। ভাল, আমি যা বলছি তার কোনওটি যদি এগিয়ে যায় তবে আমার কোনও ধারণা নেই, তবে এটি অর্থবোধ করে। আজ অনেক কিছু শিখছি, এবং আমি সত্যিই নোএসকিউএল ধারণাটি পছন্দ করছি। উত্তরের জন্য ধন্যবাদ (:
মাইয়াভিক্টর

7

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

আপনি একটি ছাড়াই আপনার প্রকল্প শুরু করেছিলেন এবং এটি কার্যকর হয়। এটি এসকিউএল না হওয়া পর্যন্ত অপেক্ষা করা এবং চালানো আপনার পক্ষে সহজ ছিল। এটাতে কোন সমস্যা নেই.

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

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

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


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

মাইএসকিএল প্রতিটি 2 মিনিট বা তারপরে পুরোপুরি সংরক্ষণের অবস্থা পরিচালনা করতে পারে না। যখন সঞ্চয়টি ঘটেছিল তখন এটি বেশ পরিষ্কার ছিল - পুরো সার্ভারটি একটি সেকেন্ডের জন্য "পিছিয়ে"। এখন আমি সত্যিই প্রশংসা করব যদি এখানে পোস্ট করা লোকজনের একটির উত্তর থাকে!
মাইয়াভিক্টর

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

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

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

6

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

উদাহরণস্বরূপ কী = ভূত লেখক g / ho / stwriter.json বা g / h / o / stwriter.json বা g / ho / ghostwriter.json বা g / h / o / ghostwriter.json এ যাবেন। আপনার কী বিতরণের উপর ভিত্তি করে আপনার নামকরণ প্রকল্পটি চয়ন করুন। যদি তারা ক্রম সংখ্যা হয় তবে 5/4/3 / 12345.json চারপাশের অন্যান্য উপায়ের চেয়ে ভাল।

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

মনে রাখবেন যে পোস্টগ্রিএসকিউএল এবং অ্যাপাচি ডার্বি ডিবি এর মতো কিছু এসকিউএল ডাটাবেসগুলি আপনাকে নিজের হোমগ্রাউন ডেটাবেস সহ অনেক নোএসকিউএল ফর্ম্যাটের শীর্ষে এসকিউএল অনুসন্ধান করতে দেয়। মাইবাটিস সম্পর্কে নিশ্চিত না তবে এটি একই রকম হতে পারে।

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

http://www.hdfgroup.org/HDF5/ এটি আবার একটি আকর্ষণীয় এবং বহুল ব্যবহৃত ডেটাস্টোর ফর্ম্যাট যা লোকেরা প্রায়শই বিবেচনা করে না।


4

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


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

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

-5

আমরা এখানে যে পোস্ট করছি তার মতো কিউএ সংরক্ষণ করতে / পুনরুদ্ধার করতে আপনার একটি ডেটাবেস দরকার! একটি সাধারণ ফাইল বিভিন্ন বিষয়ের সাথে সম্পর্কিত ডেটা সংগঠিত করতে অক্ষম।


3
না, "বিষয়গুলি" ফোল্ডার হতে পারে এবং সাইটের "পোস্টগুলি" ফাইল হতে পারে। ফাইল সিস্টেম থেকে এই জাতীয় কোনও সাইট চালানো অবশ্যই সম্ভব। এটি দক্ষ নয়: ধীরে ধীরে জটিল, বিকাশ চালানো, নতুন ডেটা etc.
ক্রিস এস

ধীর + জটিল = অক্ষম?
জো

ধীর এবং নির্মাণে জটিল! = ধীর এবং
কার্যকরভাবে

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

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