ডেটাবেস ব্যবহার করে অ্যালগরিদম এবং অ্যালগরিদমের মধ্যে পার্থক্য কী?


10

সাধারণ প্রশ্ন

ডেটাবেস ব্যবহার করে অ্যালগরিদম এবং অ্যালগরিদমের মধ্যে পার্থক্য কী?

কিছু প্রসঙ্গ

এটি এমন একটি প্রশ্ন যা আমাকে কিছুদিন ধরে তুচ্ছ করে চলেছে এবং আমি এর পক্ষে দৃ a়প্রত্যয়ী উত্তর নিয়ে আসতে পারিনি।

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

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

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

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

সুতরাং এখানে প্রশ্নগুলি ...

প্রশ্নাবলি

  1. ডেটা স্ট্রাকচার এবং ডাটাবেসগুলির মধ্যে পার্থক্য কী?
  2. আমরা কখন অ্যালগরিদম ব্যবহার করি যা সম্পূর্ণ নিজস্ব যুক্তির মধ্যে ডেটা স্ট্রাকচার ব্যবহার করে এবং ডেটাবেসের নয়?
  3. @ হার্ভে পোস্ট: কখন আপনার নিজস্ব যুক্তিযুক্ত পদ্ধতির তুলনায় ডাটাবেসের পদ্ধতিগুলি ব্যবহার করতে কম দক্ষ হয়?
    • @ মির্কুলিক্সেক্স পোস্ট: কোন পদ্ধতিটি দক্ষ করে তোলে?
  4. @ হার্ভে পোস্ট: ডাটাবেসে ডেটা স্ট্রাকচারের চেয়ে ডেটা প্রক্রিয়াজাতকরণ কীভাবে দ্রুত হয়?

ব্যাখ্যা

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

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


Datomic.com ডাটাবেসের ঐতিহ্যগত রিলেশনাল বেশী ব্যবহারকারী কাছাকাছি। আপনি কি কেবল theতিহ্যবাহী ডাটাবেসের দিকে তাকিয়ে আছেন?
চাকরি

@ জোব নো, রিলেশনাল ডাটাবেসগুলি কেবল এখানেই আমি বিবেচনা করছি না। এটি যুক্তিযুক্ত ডেটা স্ট্রাকচারের মধ্যে ডেটাবেস বনাম ডাটাবেস / অধ্যবসায় ইউনিটের ডেটা স্ট্রাকচারের মধ্যে পার্থক্য বোঝার বিষয়ে আরও বেশি।
hulkmeister

একটি সাধারণ নিয়ম হিসাবে আমি বলব - আপনি যদি পারেন তবে একটি ডেটাবেস ব্যবহার করুন, তবে এটি খুব ধীর হয়ে যায়, তবে ডেটা স্ট্রাকচার ব্যবহার করে অবলম্বন করুন। ডেটা সদৃশ (উদাহরণস্বরূপ ক্যাচিং) খারাপ কারণ আপনাকে দুটিটি সমন্বয় করতে হবে, সুতরাং আপনি এটি না করতে পারলে এড়িয়ে চলুন।
চাকরি

একটি ডাটাবেসে ডাটা বাছাই কেবল এটি বাছাই করার জন্য? আপনার মতামত পরিবর্তন করার জন্য ব্লকের চারপাশে গাড়ি চালানো?

উত্তর:


18

ডেটা স্ট্রাকচারগুলি বেশিরভাগ অংশের জন্য:

  1. স্মৃতি বাসিন্দা,
  2. অস্থায়ী,
  3. আকারে সীমিত,
  4. তালা বা অপরিবর্তনীয়তার মতো সম্মতিমূলক ব্যবস্থা যুক্ত না করে পুনরায় প্রবেশ করা উচিত নয়,
  5. না ACID অনুবর্তী,
  6. দ্রুত, যদি সাবধানে চয়ন করা হয়।

ডাটাবেসগুলি বেশিরভাগ অংশের জন্য:

  1. ডিস্ক-বাউন্ড,
  2. জেদি,
  3. বড়,
  4. নিরাপদে সমকালীন,
  5. লেনদেনের ক্ষমতা সহ এসিআইডি অনুবর্তী ,
  6. ডেটা স্ট্রাকচারের চেয়ে ধীর

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

ডাটাবেস সিস্টেমগুলি তাদের অভ্যন্তরীণ প্রয়োগের অংশ হিসাবে ডেটা স্ট্রাকচার ব্যবহার করে। এটি আকার এবং সুযোগের প্রশ্ন; আপনি আপনার প্রোগ্রামের মধ্যে ডেটা স্ট্রাকচার ব্যবহার করেন তবে একটি ডাটাবেস সিস্টেম এটি নিজস্ব প্রোগ্রাম in


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

1
আচ্ছা, এটাই ডালের রুটি এবং মাখন, তাই না? বস্তু এবং ডাটাবেস রেকর্ডগুলির মধ্যে রূপান্তর সহজ করার জন্য ডালের উপস্থিতি রয়েছে। ডাল ডাটাবেসের সাহায্যে আপনি যা করতে চান তার প্রায় 80 থেকে 90 শতাংশের জন্য ভাল তবে বাকি 10 থেকে 20 শতাংশের জন্য আপনি কাঁচা এসকিউএল বা সঞ্চিত পদ্ধতিতে ফিরে যেতে চান, কারণ এটি আরও দক্ষ।
রবার্ট হার্ভে

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

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

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

6

ডেটা স্ট্রাকচার এবং ডাটাবেসগুলির মধ্যে পার্থক্য কী?

একটি বিমূর্ত পর্যায়ে, সেখানে কেউ নেই - একটি ডাটাবেস হয় একটি ডাটা গঠন।

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

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

আমরা কখন অ্যালগরিদম ব্যবহার করি যা সম্পূর্ণ নিজস্ব যুক্তির মধ্যে ডেটা স্ট্রাকচার ব্যবহার করে এবং ডেটাবেসের নয়?

প্রবণতায় আমি তর্ক করব

ক) নির্দিষ্ট অ্যালগরিদমের রান-টাইম বা উদ্দেশ্য ছাড়িয়ে অ্যাক্সেসযোগ্য এমন উপায়ে যদি অবিচ্ছিন্নভাবে ডেটা বজায় রাখতে হয় তবে একটি ডাটাবেস ব্যবহার করা।

খ) রান-টাইম গতির ক্ষেত্রে, বা অধ্যবসায় প্রয়োজন না হলে আপনার নিজের (মেমরির) ডেটা কাঠামোটি ব্যবহার করতে

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

নোট, তবে, মনে রাখবেন যে ইন-মেমরি ডাটাবেসের ধারণা রয়েছে যা কার্য সম্পাদনের কারণে অগত্যা ডেটা বজায় রাখে না। যেমন রেডিস বা হানা

কখন আপনার নিজস্ব যুক্তিযুক্ত পদ্ধতির তুলনায় ডাটাবেসের পদ্ধতিগুলি ব্যবহার করতে কম দক্ষ হয়?

উত্তরটি পরিস্থিতি এবং ব্যবহারের (ধরণের) ডাটাবেসের উপর নির্ভর করে। আমি "পুনরুদ্ধার করব প্রশ্নটি" কী একটি পদ্ধতিকে দক্ষ করে তোলে? " এরপরে এটি আপনার নিজের জন্য ডেটাবেস দ্বারা ব্যবহৃত পদ্ধতি বনাম পদ্ধতিগুলির (= অ্যালগোরিদম) মূল্যায়নের অনুশীলনে পরিণত হয়। পরবর্তী পয়েন্টটি দেখুন।

ডেটাবেসে কাজ করার চেয়ে ডেটা স্ট্রাকচারের সাহায্যে ডেটা প্রসেসিং কীভাবে দ্রুত হয়?

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


1

ডিস্ক অ্যাক্সেসটি প্রাথমিকভাবে এই ক্রিয়াকলাপে সবচেয়ে ব্যয়বহুল যা নেটওয়ার্ক অ্যাক্সেসের চেয়ে বেশি প্রায়ই হয় (http://serverfault.com/questions/238417/are-networks-now-faster-than-disks)। আপনার ডাটাবেসটি যদি কমপক্ষে 1 জিবিপিএস নেটওয়ার্ক এবং আপনার ওয়েব \ অ্যাপ্লিকেশন সার্ভারের মতো একই নেটওয়ার্কে না থাকে তবে নেটওয়ার্কের পারফরম্যান্স বড় ডেটাসেটের জন্য ডিস্কের পারফরম্যান্সের মতো ততটা বিবেচিত হবে না। বা যদি আপনার ডেটা খুব দ্রুত শক্ত রাষ্ট্র ডিস্কের উপর নির্ভর করে থাকে যা দ্রুততর হবে তবে সাধারণ নেটওয়ার্ক অ্যাক্সেস। এছাড়াও, ডাটাবেসগুলি সাধারণত অ্যাপ্লিকেশন সার্ভারের মতো একই সার্ভারে থাকা অবস্থায় টিসিপি / আইপি ব্যবহারের পরিবর্তে নামযুক্ত পাইপের মতো আইপিসি প্রক্রিয়া সরবরাহ করে।

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

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


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

@ হুল্কমিস্টার হ্যাঁ সাধারণত, যদি না ডেটাসেটটি খুব ছোট হয় বা ডাটাবেসটি ধীর নেটওয়ার্কে আপনার অবস্থানের নিকটবর্তী হয়।
পিটার স্মিথ

0

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

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

আমি রিলেশনাল ডাটাবেসটিকে একটি মেটা-ডেটা স্ট্রাকচার বলেছি কারণ এটি সাধারণত সফটওয়্যারটির বেশ বড় ওয়াড যা প্রচুর পরিমাণে স্ট্রাকস, সারি, গাছ এবং তালিকাগুলির সাথে সম্পর্কিত টেবিলের বিমূর্ত তথ্য কাঠামো তৈরি করতে তালিকার ব্যবহার করে।


দুঃখিত, শেষ অনুচ্ছেদের সাথে সম্পর্কিত "বেশ বিট ওয়াড" এর অর্থ কী?
hulkmeister

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