আমার নিজস্ব ডাটাবেস সিস্টেম তৈরি করুন [বন্ধ]


65

ডেটাবেসগুলি আরও দক্ষতার সাথে ব্যবহার করার জন্য কীভাবে কাজ করে তা শিখতে হবে এবং আমার শেখার পদ্ধতিটি করার মাধ্যমে।

আমি আমার নিজস্ব ডাটাবেস সিস্টেম তৈরি করতে চাই। আমি সিউডো-ডাটাবেস তৈরির কথা উল্লেখ করছি না যা ফাইলগুলি পার্স করতে কোয়েরি ব্যবহার করবে; এটি কেবল একটি ক্যোরির ভাষা সহ একটি ফাইল সিস্টেম ইন্টারফেস হবে। আমি একটি ডাটাবেস ইঞ্জিনের প্রকৃত কাঠামোর কথা বলছি। এবং যেহেতু আমার মনে যা আছে তা না হয় সম্পর্কযুক্ত বা নথিভিত্তিক (এটি "নোড-ওরিয়েন্টেড", যদি তা বিদ্যমান থাকে) তাই আমার যতটা সম্ভব বিমূর্ত এবং উচ্চ-স্তরের হওয়ার জন্য কোনও সংস্থান প্রয়োজন।

তাহলে আমি কীভাবে এটি তৈরি করতে যাব? আমি কি সংস্থান / টিউটোরিয়াল / বই বুঝতে পারি?

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

যদি এই জাতীয় সংস্থানগুলি উপলভ্য না হয় তবে আমি কীভাবে ক্লায়েন্ট তৈরি করবেন সে সম্পর্কে কিছুটা অন্তত সঠিক দিকের পদক্ষেপ হতে পারে ess


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

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

9
I studied open-source DBs, but their codebase is too huge: যদি রেডিস বা ফ্লকডিবি-এর মতো কিছু পড়তে আপনার পক্ষে খুব বিশাল হয় তবে আপনি কীভাবে লেখালেখি করবেন বা নিজের ডাটাবেসকে কীভাবে মোকাবিলা করবেন তা আমি দেখতে পাচ্ছি না।
ইয়ানিস

10
@ ইয়ানিসরিজোজ ন্যায্যতার সাথে, কোড (ইমো) পড়ার বিষয়টি নিজে লেখার চেয়ে অনেক বেশি কঠিন।
অ্যালেক্সওয়েবার

12
@Xananax: ব্যাঙ (শুনবেন না crystal-reflections.com/stories/story_73.htm )। আপনি যা উপভোগ করেন তা করুন এবং প্রক্রিয়াটি উপভোগ করার জন্য কোনও উদ্দেশ্য থাকা প্রয়োজন নেই।

উত্তর:


61

(এটি "নোড-ওরিয়েন্টেড", যদি তা বিদ্যমান থাকে)

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

এবং যেহেতু আমার মনে যা আছে তা না হয় সম্পর্কযুক্ত বা নথিভিত্তিক

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

সামান্যতম ভাষায় কিছু যায় আসে না।

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

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

মাপসই কয়েকটি উদাহরণ:

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

আর একটি দুর্দান্ত বিকল্প হ'ল মাইএসকিউএল এর জন্য ইঞ্জিন তৈরিতে মনোনিবেশ করা, যেমনটি এনএনবি পূর্ববর্তী উত্তরে পরামর্শ দেয় ।

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

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

আমি কি সংস্থান / টিউটোরিয়াল / বই বুঝতে পারি?

বেশ কয়েকটি বই আছে:

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

শুভকামনা! আপনার কাজ শেষ হয়ে গেলে আমি আপনার ভাণ্ডারের লিঙ্ক সহ একটি মন্তব্য আশা করি। এবং যদি আপনি কখনই সম্পন্ন না হন তবে নিশ্চিত হয়ে নিন যে আপনি ২০০১ সালে আমি যে লেখাটি লিখতে শুরু করেছিলাম তা এখনও শেষ করেনি তা আমাকে মনে করিয়ে দিয়ে একটি মন্তব্য রেখে গেছেন।


5
এটি দুর্দান্ত পোস্ট
চানি

2
এটি সুপার! আরও আপনার কাছ থেকে আসছে :) আমি প্রায় একে অপরের উত্তর গ্রহণ করতে চাই তবে যেহেতু আমার একটি বেছে নিতে হবে এটি হওয়া উচিত। I'm expecting a comment with a link to your repository when you're done: সবচেয়ে স্পষ্টভাবে! আপনাকে আবারও সবাইকে ধন্যবাদ, এটি সত্যই উত্থাপিত হয়েছিল।
Xananax

3
এবং যে কেউ এখানে একই উত্তরগুলির সন্ধানের জন্য আসছেন: আমি শিখার জন্য সেরা প্রার্থী হিসাবে ফ্লকডিবি দেখতে পাই, কোডবেসটি খুব ছোট, কোডটি খুব পঠনযোগ্য (যদিও আমি স্ক্যালা বলতে পারি না) এবং বুঝতে সহজ।
Xananax

@ ইয়ানিস, বিটিডব্লিউ আপনি প্রস্তাবিত বইগুলির মধ্যে কোনটি পড়েছেন?
পেসারিয়ার 14

@ এক্সানানাক্স সুও কেমন চলছে? কোন ভান্ডার আমরা দেখতে পারি? :)
রাদু মুর্জিয়া

27

আপনার কেবল এটি করা উচিত এবং খুব বেশি চিন্তাভাবনা করা উচিত। শেখার প্রক্রিয়াটি উপভোগ করা এবং মন্ত্রমুগ্ধ উপহার are

এটি যদি একটি ভাল ধারণা হয় তবে অন্যকে জিজ্ঞাসা করা অবশ্যই কোনও ভাল কৌশল নয় । আমি যদি সব ব্যাঙের কথা শুনে থাকি তবে আমি আজও Ikea এ কাজ করতাম পার্কিং থেকে ডিপোতে শপিং কার্টটি পুশ করে।

আপনাকে আকর্ষণীয় পোস্টে আইয়েন্দির মতো নিজেকে ন্যায়সঙ্গত করতে হবে না । প্রশ্নটি ছিল:

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

আপনি যদি এই প্রক্রিয়াটিতে সন্তুষ্টি নিয়ে থাকেন তবে উদ্দেশ্য সম্পর্কে উদ্বিগ্ন হবেন না, আপনি ইতিমধ্যে জিতে গেছেন।


4
+1, খুব চিন্তাশীল এবং শিক্ষণীয় জবাব :-) ... যে কোনওরকম কিছু করতে চায় তার সত্যিই চমৎকার উত্তর
পঙ্কজ উপাধ্যায়

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

ইয়ান্নিস উত্তর আমার চেয়ে ভাল এবং আপনার পছন্দের প্রাপ্য

6

"(এটি" নোড-ওরিয়েন্টেড ", যদি তা বিদ্যমান থাকে)"। - এই কারণেই আপনি খুব বেশি সন্ধান করছেন না!

0.1 সংস্করণে ডুব দিন এবং দেখুন আপনি কোথায় পাবেন। আপনি যা করতে চান তা জিজ্ঞাসা করে আপনি যা চান তা উত্পাদন করার চেষ্টা থেকে আপনি আরও শিখতে পারেন। এটি কয়েক দিন দিন এবং তারপরে আপনি কোথায় পেয়েছেন তা পর্যালোচনা করুন।

প্রায় 18 বছর আগে আমি বিটি ইনডেক্সের সাথে একটি মজাদার ডেটাবেস সিস্টেম লিখেছি (মজা করার জন্য, ফি ফিগার) এবং একটি ভয়ঙ্কর অনেক কিছু শিখেছি।


4

মাইএসকিউএলের প্লাগেবল স্টোরেজ ইঞ্জিন স্ট্রাকচার রয়েছে, মাইএসকিউএল-এর জন্য কাজ করার জন্য ইঞ্জিনগুলি কীভাবে তৈরি করা হয় তা পরীক্ষা করে নেওয়া কোনও ধারণা হতে পারে ।


4

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

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

আমি এখানে কীভাবে শুরু করব তা এখানে:

  1. আপনার পছন্দের ভাষা বা এমন একটি ভাষা চয়ন করুন যা আপনি উন্নত করতে চান।
  2. নোড অবজেক্ট তৈরি করুন (বা আপনার ভাষায় যা নিকটবর্তী)) কীভাবে তাদের লিঙ্ক করবেন তা চিত্রিত করুন।
  3. আপনি প্রথমে প্রয়োগ করবেন এমন এসকিউএল বিবৃতিগুলির একটি সংক্ষিপ্ত তালিকা তৈরি করুন।
  4. কীভাবে ডেটা সংরক্ষণ করবেন সিদ্ধান্ত নিন। একটি সুস্পষ্ট সমাধান হ'ল সমস্ত নোডকে সিরিয়ালাইজ করা, প্রোগ্রাম শুরু হওয়ার পরে এগুলি লোড করা এবং প্রোগ্রাম শেষ হয়ে গেলে সেভ করা।

আপনি বেসিকগুলি কাজ করার পরে, কোনটি কঠিন বা সমস্যাযুক্ত তা আপনার কাছে আরও অনেক অন্তর্দৃষ্টি হবে। তারপরে আপনি এ সম্পর্কে কিছু গবেষণা করতে পারেন, কিছু উন্নতি পেতে এবং সেগুলিকে সংহত করতে পারেন।


1
আপনার প্রস্তাবিত পদক্ষেপগুলি আমি অনুসরণ করছি। 1,2,3 কোনও সমস্যা নয়। তবে আমি # 4 দ্বারা স্টাম্পড হয়েছি। বিপুল পরিমাণে ডেটার ক্ষেত্রে, আমি কীভাবে কেবল প্রাসঙ্গিক অংশগুলিতে মেমরি লোড করব? আমি সবকিছু বাইনারি ডেটা হিসাবে সংরক্ষণ করার এবং অন্য একটি সূচি ফাইল রাখার কথা ভেবেছিলাম, তবে যদি ব্যবহারকারী সূচক অনুসারে জিজ্ঞাসাবাদ না করে? আমাকে এখনও পুরো ফাইলটি লুপ করতে হবে ... আমি অনুমান করি এটি অন্য প্রশ্নের জন্য সময়
এসেছে

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

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

3

আপনার নিজের ডাটাবেসটি "এটি কীভাবে সমস্ত কাজ করে তা বোঝার জন্য" রচনা করাই একমাত্র ভাল কারণ (যেহেতু ডাটাবেসগুলি সঠিকভাবে পাওয়ার পক্ষে পাগল এবং সঠিক প্রমাণ করা শক্ত)। তুমি পাগল, তবে ভাল উপায়ে!

এটি কীভাবে হয়েছে তা দেখার জন্য, আমি এসকিউএলাইটের দিকে তাকানোর পরামর্শ দিই। SQLite উৎস মাত্র 1.3MB সংকুচিত, এবং এটা একটি সম্পূর্ণরূপে এসিড-অনুবর্তী লেনদেনের ডাটাবেসের আছে। এটি জনসাধারণের ডোমেনও এবং প্রধান লেখক একজন দুর্দান্ত লোক যিনি আমাকে নিশ্চিত যে আপনার প্রশ্নের উত্তর দিতে পেরে খুশি হবেন। (আমি মনে করি যে কৌশলযুক্ত বিটগুলি কীভাবে সত্যভাবে ডিস্কের কাছে তথ্য প্রতিপন্ন করতে পারে; ওএস এবং হার্ডওয়্যারকে মিথ্যা বলা বন্ধ করতে এবং এখনই লেনদেন সত্যিই লিখতে রাজি করা আশ্চর্যজনকভাবে কঠিন এবং কেন আমি কখনই ডিবি লিখতে পারি না বলে আমি আনন্দিত।)


1
এসকিউএলাইট কোডবেস 0,2 * 10 ^ 6 লোকের (5 মিমি সংক্ষেপিত) কাছে পৌঁছেছে, এটি এত ছোট নয়।
ইয়ানিস

1
@ ইন্নিস: মাইএসকিউএল বা পোস্টগ্রেএসকিউএল বা অন্য যে কোনও সার্ভার ডিবি সিস্টেমের সাথে তুলনা করুন…
ডোনাল ফেলো

3

একটি বই কিনুন:

http://www.springer.com/computer/database+management+%26+information+retrieval/book/978-1-84628-394-9

সূচকগুলি আজ ডাটাবেসের সবচেয়ে গুরুত্বপূর্ণ দিক ho বাইনারি গাছের মতো বিদ্যমান বিকল্পগুলি অধ্যয়ন করুন।

কারটিশিয়ান পণ্য সম্পর্কেও পড়ুন যা জটিল যোগদানের পরিমাণ কী হবে তা গণনা করার এক উপায়।


3

ডাটাবেসগুলি কীভাবে কাজ করে তা শিখতে হবে

সম্পর্কিত বীজগণিত শিখুন।

একটি ছোট ডিবি ইঞ্জিন সন্ধান করুন, উত্সটি শিখুন।

যাতে আরও দক্ষতার সাথে তাদের ব্যবহার করতে পারেন

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

Theতিহ্যগত রুটগুলি নিন: একটি কোর্স নিন, একটি বই পড়ুন, পিয়ার পর্যালোচনা করুন, প্রশ্ন জিজ্ঞাসা করুন, সূচী লুকটি ব্যবহার করুন


5
Learn relational algebra.ধরে
নিচ্ছি অপেক্ষাকৃত
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.