পাঠ্য ফাইল থেকে ডেটা পার্সিংয়ের চেয়ে কখন ডাটাবেসের ব্যবহার পছন্দ করা উচিত?


13

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

22-08-2013

questions 9073
answers 15326
answered 88
users 26102
visitors/day 7407

22-08-2013

questions 9073
answers 15326
answered 88
users 26102
visitors/day 7407

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

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

PS: আরও ভাল ট্যাগ যুক্ত করা যেতে পারে দয়া করে। ট্যাগগুলি যুক্ত করা যেতে পারে সম্পর্কে আমার কিছু সন্দেহ ছিল।


"যতক্ষণ না আপনি এটি ব্যবহার করতে শেখেন ততক্ষণ প্রতিটি সরঞ্জামই দায়বদ্ধ।"
জেফও

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

উত্তর:


14

কোনও পাঠ্য ফাইলে ডেটা সংরক্ষণের জন্য ডেটাবেসকে কখন স্টোর করার জন্য পছন্দ করা উচিত?

উইকিপিডিয়া আমাদের জানায় যে একটি ডাটাবেস হ'ল ডেটা সংঘবদ্ধ সংগ্রহ । যে পরিমাপ দ্বারা, আপনার টেক্সট ফাইল হয় একটি ডাটাবেস। এটা বলতে যায়:

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

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

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

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

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

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

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


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

1
উচ্চ আন্ডাররেটেড উত্তর, এটি দ্বিতীয়বার আমি এটিতে ফিরে এসেছি।
হাশিম

6

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

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


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

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

3

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


"এটি কতটা পড়তে / লিখতে হবে" - এটি সাহায্য করেছে।
অসীম বানসাল

2

ডাটাবেসগুলি কেবল স্টোর করার জন্য নয় বরং ডেটা ব্যবহারের জন্য এবং জিজ্ঞাসাবাদ করার জন্য ব্যবহৃত হয়, সুতরাং আপনাকে একটি শিক্ষিত সিদ্ধান্ত নিতে হবে:

একটি বড় কারণ হ'ল মেশিনে এটির কার্যকারিতা বনাম কোনও ডেটাবেস ইনস্টল করে আপনি যে সুবিধা পান

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

আপনি যদি এসকিউএল এর সাথে একটি নাটক পেতে চান এবং এটি কী করতে পারে তবে এসকিউএলফিডাল ডট কমের কাছে কয়েকটি আলাদা আরডিবিএমএস মডেল রয়েছে যা আপনি প্রায় খেলনা করতে পারেন (ক্যোয়ারী চালান, স্কিমা তৈরি করুন ইত্যাদি)


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

2

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

আপনার ক্ষেত্রে পারফরম্যান্স গ্রহণযোগ্য না হওয়া পর্যন্ত আমি স্টোরেজটিকে একটি পরীক্ষার ফাইলে রেখে দেব। সাধারণত একটি পাঠ্য ফাইল পড়া (এমনকি বড়) এটি বেশি সময় নেয় না। আপনার যদি আরও বেশি প্রয়োজন হয় তবে আপনি সর্বদা ডেটাবেস পরে যুক্ত করতে পারেন।

আমার অভিজ্ঞতার জন্য, আপনি যদি ডাটাবেসে সম্পূর্ণ নতুন হন তবে আপনি কাউচডিবি: http://couchdb.apache.org/ এর মতো কোনও কিছু ব্যবহার করে আরও সহজ পেতে পারেন এবং প্রশ্নের জন্য আপনি সরাসরি জাভাস্ক্রিপ্ট বা পাইথন ইত্যাদি ব্যবহার করতে পারেন।

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