কখন ডাটাবেস ব্যবহার করা উপযুক্ত তা নির্ধারণের সেরা উপায় কী?


13

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

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


2
"তবে যতদূর আমি বলতে পারি আমি খুব সহজেই ডিবি ব্যবহার করে না এমন অ্যাপ্লিকেশনগুলি (যা আমি ব্যবহার করি) দেখছি না"? কিসের ভিত্তিতে? যদি তারা এসকিউএলাইট ব্যবহার করে তবে আপনি কীভাবে বলতে পারবেন যে তারা ডেটাবেস ব্যবহার করছে বা না করছে?
এসলট

সে কারণেই আমি যতদূর আমি বলতে পারি যতটা আমি জানতাম আমার ভুল ছিল বলে একটি সম্ভাবনা ছিল। আমি ভেবেছিলাম এমন কিছু অ্যাপ থাকতে পারে যা এমবেডড ডিবি ব্যবহার করে ... অ্যাপসের পক্ষে ডিবিএস ব্যবহার করা কি খুব সাধারণ?
কেনেথ

@ কেনেথ: এসবিএলাইটের মতো এমবিডেড ডিবির জন্য গুগল দয়া করে। এখানে অনেক. এগুলি বহুল ব্যবহৃত। আফাইক, অ্যাপলের আইওএস এটি সমস্ত অধ্যবসায়ের জন্য ব্যবহার করে । গুগল দয়া করে।
এসলট

2
আমি গুগল অনেক। কখনও কখনও কিছুই অভিজ্ঞ মতামতের প্রতিস্থাপন করে না যা আপনি সবসময় গুগলিং খুঁজে পাবেন না।
কেনেথ

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

উত্তর:


4

যদি আপনার অ্যাপ্লিকেশনটি নথিভিত্তিক হয় তবে একটি ডকুমেন্ট ফাইলে জিনিস সংরক্ষণ করুন

যদি আপনি অ্যাপ্লিকেশনটি আরও কাঠামোগত ডেটার সাথে ডিল করে, একটি একক দস্তাবেজের জন্য খুব বেশি (এক্সএমএল ডকুমেন্টের মতো), একটি ডাটাবেস ব্যবহার করুন


7

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

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

ওয়েব বিকাশের সাথে সাথে সার্ভারটি স্বাভাবিকভাবেই একটি ব্যাক এন্ড থাকে যেখানে ডাটাবেস থাকা কোর্সের সমান হয়। যেমন। ব্যবহারকারীদের শেষের দিকে একটি ডাটাবেস ইনস্টল করার বিষয়ে চিন্তা করতে হবে না।


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

লাইটওয়েট ডিবি ব্যবহার করার বিষয়ে আপনার কী ধারণা ... সম্পূর্ণ স্কেল ডিবি'র মতো?
কেনেথ

1
@ কেনেথ: আমি বলব "এটি নির্ভর করে"। যদি অ্যাপ্লিকেশনটি বড় পরিমাণে টবুলার ডেটা কল করে যা সত্যই একটি সঠিক ডিবিতে থাকার জন্য ডাকে, তবে তর্কটি হালকা ডিবি সহ অ্যাপ্লিকেশনটি প্রেরণের পক্ষে যথেষ্ট দৃ strong় হতে পারে। তবে যদি এটি কেবল কনফিগারেশন / সেটিংসের ধরণের ডেটা হয় তবে এটি সম্ভবত ওভারকিল।
ববি টেবিল 3

5

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

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


+1 আপনার যদি একাধিক ব্যবহারকারীর, বহু-অবস্থানের মতো জটিল অধ্যবসায় সমস্যা না থাকে তবে একসাথে ব্লকিং আপডেটগুলি একটি traditionalতিহ্যবাহী ডাটাবেস ওভারকিল হতে পারে। যদি প্রশ্নে থাকা ডেটাগুলি মোটামুটি স্থিতিশীল হয় (এটি বাড়তে পারে বা এতে সংযোজন হতে পারে তবে বিকশিত হয় না বা আপডেট হয় না), এবং কনটেনশন / প্রতিযোগিতা ঘন ঘন বা বিকৃত নয় (পার্শ্ব প্রতিক্রিয়া / ব্যবহারকারী-অভিজ্ঞতাকে বিনামূল্যে কোনও লকের জন্য অপেক্ষা করার জন্য) পারফরম্যান্স এবং জটিলতা ট্রেডঅফস বিবেচনা করে গ্রহণযোগ্য নয়), আপনার কোনও ডাটাবেসের প্রয়োজন হতে পারে না।
জাস্টিনসি

4

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

আমি ইতিবাচক আমি অন্যান্য প্ল্যাটফর্মে একই বিকল্প আছে।


1
জাভা দিকের খুব অনুরূপ উদাহরণ ডার্বি। আমার মনে হয় অন্যরাও আছে।
jprete

1
এটি মনে হচ্ছে এটি একটি আদর্শ সমাধান হতে পারে ... আমি সত্যিই ডিবি ব্যবহার করে উপভোগ করি! lol
কেনেথ

লাইটওয়েট ডিবি ব্যবহারের কি ডাউনসাইড রয়েছে?
কেনেথ

@ কেনেথ: তারা আপনার ইনস্টলেশন আরও বড় করে এবং কোডবেস বাড়িয়ে তুলতে পারে। তবে এটি কোনও ক্লায়েন্টে পুরো ডাটাবেস সার্ভারটি ইনস্টল করার চেয়ে অনেক কম, সাধারণত যখন অ্যাপ্লিকেশন বিতরণ করা হয় এবং আরও বেশি ডাটাবেস প্রয়োজন হয় তখনই তা করা হয়। বার্কলে ডিবি সবচেয়ে বেশি ব্যবহৃত হয়।
অর্বলিং

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

2

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

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

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

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

একই শিরাতে, এম্বেডযোগ্য ডেটাবেস লাইব্রেরি (বিডিবি, টোকিও ক্যাবিনেট, এসকিউএলাইট, এমএস-এসকিউএল * সার্ভার কমপ্যাক্ট, ইত্যাদি) ব্যবহার করা অন্য দুর্দান্ত পদ্ধতি approach


1

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

উদাহরণস্বরূপ বিবেচনা করুন:

#include "superheader.h"

int main()
{
    int row=2, column=2;
    DatabaseType db;
    db.ConnectTo("programDB", "user", "pass");
    db.setTable("messages");
    string hello_world=db.fetch(row, column);
    cout<<hello_world;
    return 0;
}

ওয়েল এটি অতিরিক্ত সরল, তবে স্পষ্টতই এটি খুব বেশি too "হ্যালো ওয়ার্ল্ড" এর জন্য সেই স্তরের ডেটা ম্যানেজমেন্টের আসল বিন্দু নেই

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

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


1

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

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