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


29

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

এই সমস্ত ডাম্পগুলিতে পূর্ণসংখ্যার পরিবর্তে স্ট্রিং ফ্ল্যাগ সহ ডেটা ছিল। উদাহরণস্বরূপ, একটি পোস্টের মর্যাদা প্রতিনিধিত্ব ছিল published, closedঅথবা inheritবরং 1, 2অথবা 3

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

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


7
আপনি কি নিশ্চিত যে তারা আসলে dev.mysql.com/doc/refman/5.0/en/enum.html ব্যবহার করে না যা ডাম্পের মতো দেখায় look যে কোনও উপায়ে আমি মনে করি আজকাল এটি প্রায় একটি মাইক্রো অপ্টিমাইজেশন হিসাবে গণনা করা হয়।
এসবেন স্কোভ পেডারসেন

2
কিছুটা সম্পর্কিত: ডাটাবেসে
এনাম

2
এই প্রশ্নটি মূলত কর্তৃপক্ষের কাছে একটি আবেদন।
ডেডএমজি

3
পুরো, উত্তর নয়, তবে ... আপনি স্ক্রিপ্টিং লুয়া জানেন? সরাসরি এবং উচ্চ-পারফরম্যান্সের জন্য খ্যাতিযুক্ত, পুরো গেম ইঞ্জিন ইত্যাদি লিখতে ব্যবহৃত হয়? আশ্চর্যজনকভাবে যথেষ্ট ... তারা কখনও কোনও সংখ্যার প্রকারের মোটেই বিরক্ত করেনি। তাদের স্ট্রিং হ্যান্ডলিং কোডটি এত কার্যকর, সময় সংবেদনশীল গেম ইঞ্জিন কোডে তারা একসাথে সংখ্যা যুক্ত করতে পারে যা প্রকৃত স্ট্রিং are জাভাস্ক্রিপ্টের মতো, তাদের কাছে বস্তুও নেই - কেবল খুব অভিনব হ্যাশ টেবিল। সি প্রোগ্রামার এর দৃষ্টিভঙ্গি "" একটি বিশাল অ্যারে char? কতটা অক্ষম! " 2015 এর সাথে তুলনায় পুরানো
কটানা 314

2
"কর্তৃপক্ষের কাছে আবেদন" অংশটি অপসারণ এবং পুনরায় ভোট দেওয়ার জন্য সম্পাদনা করা হয়েছে, যেহেতু ইনটগুলির চেয়ে স্ট্রিং ব্যবহারের প্রশ্ন যতক্ষণ ততক্ষণ এই "কর্তৃপক্ষের" সম্পর্কে নির্দিষ্ট নয় ততক্ষণ বিষয়টি পুরোপুরি বিষয়বস্তু।
Ixrec

উত্তর:


45

হ্যাঁ, সংখ্যার পরিবর্তে স্ট্রিংগুলি সঞ্চয় করে বেশি স্থান ব্যবহার করতে পারে। হাই-প্রোফাইল প্ল্যাটফর্মগুলি যেভাবেই এটি করছে তা হ'ল তারা মনে করেন যে সমাধানটির সুবিধাগুলি ব্যয়ের চেয়ে বেশি।

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

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


7

হ্যাঁ, যেমন কিছু সংরক্ষণ yesবা trueএকটি tinyint চেয়ে আরও জায়গা নিতে হবে। এই বিস্ময়কর হওয়া উচিত নয়। এটি সূচীও তৈরি করে এবং এইভাবে ডাটাবেসের জন্য কম দক্ষতার সাথে যোগ দেয়। এটিতে সঠিক মান ( yesবনাম y) কীসের জন্য সম্ভাব্য বিভ্রান্তির দণ্ড রয়েছে ।

তবে, অনেকগুলি পন্থা রয়েছে যা ডাটাবেসে স্ট্রিং স্ট্রিংয়ের অনুরূপ (বিশেষত মাইএসকিউএল) দক্ষ।

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

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

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

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