মুটি ভাষা ভাষার ওয়েবসাইটের জন্য আমার কোন কোলেশন চয়ন করা উচিত?


25

কোয়েরেশনের কোনও প্রশ্নের গতিতে কোনও প্রভাব আছে কি? জোটের উপর নির্ভর করে কোনও টেবিলের আকার পরিবর্তন হয়?

যদি আমি এমন কোনও ওয়েবসাইট তৈরি করতে চাই যা অবশ্যই সমস্ত সম্ভাব্য ভাষা (যেমন গুগলের জন্য নেওয়া যাক) সমর্থন করবে যা প্রস্তাবিত কোলেশন হবে?

আমি যেমন অক্ষর সংরক্ষণ করতে হবে 日本語, ওয়েবসাইট উপর আমার অনুসন্ধানের আসতে হবে somethingজন্য sóméthíng, ইনপুট এটা ভাল ক্ষেত্রমত অবশ হতে হবে।

আমি কীভাবে জানব যে কোনটি বেছে নেওয়া সবচেয়ে ভাল পছন্দ? এই মামলায় কোলেশন আরও ভাল মামলা করে?


4
আপনি প্রশ্নটির পুনঃব্যবস্থা করতে চান যাতে এটি এতটা সাবজেক্টিভ না বলে মনে হয় - "সেরা" কোলেশন কোন পরিমাপে? :)
টিএমএল

নতুন শিরোনামটি আরও ভালভাবে পড়তে পারে
টিএমএল

উত্তর:


16

সাধারণভাবে বলতে গেলে, ইউনিকোড ভেরিয়েন্টগুলির মধ্যে একটি সম্ভবত বিস্তৃত ভাষা সহায়তার জন্য সেরা - ইউটিএফ -8 কোডডপয়েন্ট প্রতি কম মেমরি ব্যবহার করতে চলেছে, এবং এইভাবে যেকোন সময় / স্পেস ট্রেডঅফগুলিতে নিজেকে তৈরি করার প্রয়োজন মনে করলে সামান্য সুবিধা হবে; তবে আমি মনে করি ইউটিএফ -8 প্রতিনিধিত্ব করতে পারে না এমন আরও কিছু গুরূত্বপূর্ণ ভাষা / স্ক্রিপ্ট রয়েছে (তবে আমি এটির 100% নিশ্চিত নই, বিষয়টি নিয়ে আমি একটি বিস্তৃত স্টাডি করিনি)।

এই উইকিপিডিয়া নিবন্ধটি প্রতিটিের ডিস / সুবিধার উপর আলোকিত হতে পারে।


হ্যাঁ, ইউটিএফ -8 1.1 মিলিয়ন ইউনিকোড কোড পয়েন্টগুলি পরিচালনা করতে পারে।
vz0

ধন্যবাদ - আমি ভেবেছিলাম এমন কিছু হ্যান চরিত্র আছে বা এর মতো ইউটিএফ -8-তে সমর্থিত নয়, এর শক্ত উত্তর পাওয়া ভাল।
টিএমএল

8

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


8

আমি মনে করি যে প্রশ্নটি হিসাবে বর্ণিত হয়েছে (2015-04-22, "কোন কোলেশন [...]") এর অর্থ কি তা নয়, প্রদত্ত গ্রহণযোগ্য উত্তর কোলেশনের পরিবর্তে এনকোডিং সম্পর্কে কথা বলে। উদ্দেশ্যযুক্ত প্রশ্নের পরিবর্তে আমাকে বর্ণিত প্রশ্নের উত্তর দেওয়া যাক, কারণ আমি মনে করি এটি আকর্ষণীয় :-)

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

আমি মনে করি সংক্ষিপ্ত উত্তরটি সম্ভবত "সম্ভবত" হতে পারে। কমপক্ষে আমি নিম্নলিখিত শেননিগান সম্পর্কে সচেতন:

#!/usr/bin/python
name = u"Jonas K\xf6lker" # \xf6 is o-umlaut
enc = name.encode('utf-8')
assert len(name) == 12  # \xf6 is one character
assert len(enc) == 13   # but two bytes in utf-8

import locale
locale.setlocale(locale.LC_COLLATE, "da_DK.utf8") # works on my machine
long_form = locale.strxfrm(enc)
assert len(long_form) == 38

locale.strxfrmএটি একটি ফাংশন যা Returns a string that behaves for cmp locale-awareএটি, এটি একটি স্ট্রিংকে এমনভাবে এনকোড করে তোলে যে একইভাবে এনকোড করা অন্য স্ট্রিংয়ের সাথে বাইট-বাই-বাইট স্ট্যান্ডার্ড লিক্সোগ্রাফিক তুলনাটি স্থানীয়ভাবে নির্দিষ্ট করা কোলেশন ফাংশন অনুসারে স্ট্রিংগুলির তুলনা করার মতো একই ফলাফল তৈরি করবে।

কিছু পর্যবেক্ষণ: ইন da_DK.utf8, স্ট্রিং ouüöবাছাই করা হয়। ইন de_DE.utf8, স্ট্রিং oöuüবাছাই করা হয়। দ্রষ্টব্য len(long_form) == 38এবং 38> 13. (দৈর্ঘ্যও 38 ইন de_DE.utf8।)

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

আপনি জিজ্ঞাসা করেছেন "কোলেশনের কোনও প্রশ্নের গতিতে কোনও প্রভাব আছে?", যার আমি উত্তরটি হ্যাঁ সম্পর্কে যথেষ্ট নিশ্চিত: "সি" (ওরফে "পোসিক্স") কোলিশনটি কেবল ইউনিকোড কোড পয়েন্টের মানগুলির সাথে তুলনা করে, যেখানে ডেনিশ ( da_DK.utf8) এবং জার্মান ( de_DE.utf8) স্থানীয় লোকেরা আরও জটিল কিছু করে। এটি ক্যোয়ারী গতিতে কিছুটা প্রভাব ফেলবে, যদিও আমি সন্দেহ করি এটি উদ্বেগের মতো হবে না।

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

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

এই সমস্ত আপনার ডেটাবেজের অভ্যন্তরীণ কাজের উপর নির্ভর করে; আমি মনে করি এটি "প্রমিত" (LOL!) এসকিউএল ছাড়িয়ে ভাল beyond সর্বদা হিসাবে, আপনার নির্দিষ্ট ডাটাবেস সিস্টেমে ডকুমেন্টেশন পরামর্শ করুন।

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