একটি ইউআরএল জন্য সেরা ডাটাবেস ক্ষেত্র প্রকার


352

আমার একটি মাইএসকিউএল টেবিলে একটি url সঞ্চয় করা দরকার to এমন একটি ক্ষেত্র নির্ধারণের জন্য সেরা অনুশীলন যা কোনও নির্ধারিত দৈর্ঘ্যের URL না রাখে?


1
এটি আপনার যা প্রয়োজন তার উপর নির্ভর করে, সূচি, একতা?
থমাস ডেকাউক্স

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

1
কেবল TEXTটাইপটি দিয়ে যান এবং নীচের এই সমস্ত উত্তরগুলি পড়তে যান। শেষ পর্যন্ত, তাদের বেশিরভাগই এটাই পরামর্শ দেয়। :) অবশ্যই, যদি আপনার সূচিকরণ বা স্বতন্ত্রতা প্রয়োজন হয় তবে যান VARCHAR, যেহেতু সহজেইTEXT সূচী করা যায় না
Aleksandar

উত্তর:


324
  1. জনপ্রিয় ওয়েব ব্রাউজারগুলির মধ্যে সর্বনিম্ন সাধারণ ডিনমিনেটর সর্বোচ্চ URL দৈর্ঘ্য: 2,083 (ইন্টারনেট এক্সপ্লোরার)

  2. http://dev.mysql.com/doc/refman/5.0/en/char.html
    VARCHAR কলামের মানগুলি পরিবর্তনশীল-দৈর্ঘ্যের স্ট্রিং। দৈর্ঘ্যটি মাইএসকিউএল 5.0.3 এর আগে 0 থেকে 255 এবং 5.0.3 এবং পরবর্তী সংস্করণগুলিতে 0 থেকে 65,535 পর্যন্ত মান হিসাবে নির্দিষ্ট করা যেতে পারে। মাইএসকিউএল 5.0.3 এ একটি ভ্রচারের কার্যকর সর্বোচ্চ দৈর্ঘ্য এবং পরে সর্বাধিক সারি আকারের (65,535 বাইট, যা সমস্ত কলামের মধ্যে ভাগ করা হয়) এবং ব্যবহৃত অক্ষর সেট সাপেক্ষে।

  3. সুতরাং ...
    <মাইএসকিউএল 5.0.3 ব্যবহার টেক্সট
    বা
    > = মাইএসকিউএল 5.0.3 ব্যবহার VARCHAR (2083)


14
ভাল উত্তর, কিন্তু ব্যক্তিগত আমি দৈর্ঘ্য সীমাবদ্ধ হবে। প্রকল্পের উপর নির্ভর করে আপনি স্বীকৃত ইউআরএল সীমাবদ্ধ করতে চাইতে পারেন। 200 এর চেয়ে বেশি দীর্ঘ ইউআরএল কে ব্যবহার করে?
জন

2
তারা আরও ভালভাবে একটি ইউরি ডেটাটাইপ নিয়ে আসতে পারে যা ইউরির কাঠামোটি "বোঝে" যাতে ইনডেক্সিং এবং অনুসন্ধান দক্ষতার সাথে সম্পন্ন হয়, যেমন ওরাকলের মতো হয়েছিল ... অপেক্ষা করুন, মাইএসকিএল এখন ওরাকেলের ... ডাউনলোড.
রেডবেন

80
এই উত্তরটি কিছুটা বিভ্রান্তিকর। মনে রাখবেন যে এখানে "সর্বনিম্ন সাধারণ ডিনোমিনেটর" অর্থহীন, আপনি কোনও ব্রাউজার বা সার্ভার সর্বাধিক সংখ্যাটি ব্যবহার করতে চান (যা ধারাবাহিক নয় এবং পরিবর্তনের সাপেক্ষে)। আপনার লিঙ্কটি যেমন বলে: " ... এইচটিটিপি প্রোটোকলের স্পেসিফিকেশন কোনও সর্বাধিক দৈর্ঘ্য নির্দিষ্ট করে না ... ", তাই এটি নিয়ে বিরক্ত করবেন না VARCHAR(2083), কেবল ব্যবহার করুন TEXT
ওয়েসলি মার্চ

4
উদাহরণস্বরূপ, আপনার লিঙ্কটি থেকে: " 65,536 টি অক্ষরের পরে, অবস্থান বারটি আর উইন্ডোজ ফায়ারফক্স 1.5.x এ ইউআরএল প্রদর্শন করে না However তবে, আরও দীর্ঘ ইউআরএলগুলি কাজ করবে 100 আমি 100,000 অক্ষরের পরে পরীক্ষা করা বন্ধ করে দিয়েছি " "
ওয়েসলি মার্চ

1
বুটেল ডট কম রিসোর্স নেট থেকে পড়েছে। : এখানে একটি স্ক্যান করা ও'রেলি বইয়ে এটা একটি রেফারেন্স এর books.google.ca/...
micahwittman

33

VARCHAR(512)(বা অনুরূপ) যথেষ্ট হওয়া উচিত। তবে, যেহেতু আপনি প্রশ্নে থাকা ইউআরএলগুলির সর্বাধিক দৈর্ঘ্যটি সত্যই জানেন না, তাই আমি কেবল এখানে যেতে পারি TEXT। এই সঙ্গে বিপদ কারণে দক্ষতা অবশ্যই ক্ষতির হয় CLOBগুলি মত সরল স্ট্রিং ডাটাটাইপ চেয়ে অনেক ধীর হচ্ছে VARCHAR


কোলেশন সম্পর্কে কী?
kommradHomer

16

varchar(max) এসকিউএল সার্ভার 2003 এর জন্য

varchar(65535) মাইএসকিউএল 5.0.3 এবং তারপরের জন্য

এটি প্রয়োজনীয় হিসাবে স্টোরেজ বরাদ্দ করবে এবং কার্য সম্পাদনকে প্রভাবিত করবে না।


1
আপনার স্নিপেটে, maxকোনও জাদু এএনএসআই এসকিউএল নির্দিষ্ট হিসাবে ভিউচারার আকার বাড়ানোর জন্য রয়েছে, না এটি উদাহরণের জন্য কেবল একটি মেটা-ভেরিয়েবল?
ড্যানিয়েল স্পিওক

4
মাইএসকিউএলে সম্ভবত আপনি টেবিলের একমাত্র কলাম না হওয়া পর্যন্ত ভার্চর এত বড় করতে পারবেন না।
কারসন

1
@ ড্যানিয়েল স্পিউয়াক: "টেক্সট এবং ভর্চার (ম্যাক্স) এর মধ্যে মূল পার্থক্য হ'ল একটি পাঠ্য প্রকারটি সর্বদা ডেটা একটি ব্লাবে সংরক্ষণ করবে যেখানে ভর্চার (ম্যাক্স) প্রকারটি 8 কে ছাড়িয়ে না থাকলে সরাসরি সারিতে তথ্য সংরক্ষণের চেষ্টা করবে সীমাবদ্ধতা এবং এই মুহুর্তে এটি একটি পুষ্পে সঞ্চয় করে। " stackoverflow.com/questions/834788/… তবে প্রশ্নটি মাইএসকিউএল সম্পর্কে ছিল, সুতরাং এটি এখানে সত্যিই প্রাসঙ্গিক নয়।
স্টিজন বোলেন

9

আপনি উপর ভিত্তি করে একটি পাঠ্য বা VARCHAR কলাম মধ্যে নির্বাচন করতে চাইবেন কত ঘন ঘন URL টি ব্যবহার করা হবে কিনা আপনি আসলে আনবাউন্ড হতে দৈর্ঘ্য প্রয়োজন।

ব্যবহারের VARCHAR MAXLENGTH সঙ্গে> = 2,083 যেমন micahwittman যদি প্রস্তাবিত:

  1. আপনি প্রতি ক্যোয়ারী প্রচুর ইউআরএল ব্যবহার করবেন (পাঠ্য কলামগুলির বিপরীতে, ভ্রচারগুলি সারিটির সাথে ইনলাইনে সংরক্ষণ করা হবে)
  2. আপনি নিশ্চিত যে কোনও ইউআরএল 65,535 বাইটের সীমা সীমা অতিক্রম করবে না pretty

পাঠ্য ব্যবহার করুন যদি:

  1. ইউআরএল সত্যিই 65,535 বাইট সারি সীমা ভেঙে দিতে পারে
  2. আপনার প্রশ্নগুলি একবারে (বা খুব ঘন ঘন) একসাথে ইউআরএলগুলি নির্বাচন বা আপডেট করে না। এটি হ'ল পাঠ্য কলামগুলি কেবলমাত্র একটি পয়েন্টার ইনলাইন ধারন করে এবং রেফারেন্সযুক্ত ডেটা পুনরুদ্ধারে জড়িত এ্যাক্সেসগুলি বেদনাদায়ক হতে পারে।

9

আপনার একটি ASCII অক্ষর এনকোডিং সহ একটি V মার্চার ব্যবহার করা উচিত। ইউআরএলগুলি শতাংশ এনকোডযুক্ত এবং আন্তর্জাতিক ডোমেন নামগুলি পিউকোড ব্যবহার করে তাই এগুলি সংরক্ষণের জন্য এএসসিআইআই যথেষ্ট। এটি ইউটিএফ 8 এর তুলনায় অনেক কম স্থান ব্যবহার করবে।

VARCHAR(512) CHARACTER SET 'ascii' COLLATE 'ascii_general_ci' NOT NULL

5
ইউটিএফ -8 যখন কেবল তখনই বেশি জায়গা ব্যবহার করে না?
কমম্রাডহোমার

7

এটি সত্যই আপনার ব্যবহারের ক্ষেত্রে (নীচে দেখুন) উপর নির্ভর করে, তবে TEXTপারফরম্যান্স সংক্রান্ত সমস্যাগুলি সংরক্ষণ করে এবং VARCHARবেশিরভাগ ক্ষেত্রে ওভারকিলের মতো বিশাল শব্দ শোনা যায়।

আমার পদ্ধতির: উদার, তবে অযৌক্তিকভাবে বড় VARCHARদৈর্ঘ্য নয়, যেমন VARCHAR(500)ব্যবহার করুন এবং এমন ইউআরএল সংক্ষিপ্ত ব্যবহারকারীর জন্য যাদের বৃহত্তর URL প্রয়োজন হয় তাদের উত্সাহিত করুন safe.mn

টুইটার পদ্ধতির: সত্যই সুন্দর ইউএক্স-এর জন্য অতিরিক্ত দীর্ঘ ইউআরএল'র জন্য একটি স্বয়ংক্রিয় ইউআরএল শর্টনার সরবরাহ করুন এবং লিঙ্কটির "ডিসপ্লে সংস্করণ" টি শেষের দিকে উপবৃত্ত সহ URL টি স্নিপেট হিসাবে সংরক্ষণ করুন। (উদাহরণ: http://stackoverflow.com/q/219569/1235702প্রদর্শিত stackoverflow.com/q/21956...হবে এবং একটি সংক্ষিপ্ত URL এর লিঙ্ক হবে http://ex.ampl/e1234)

নোট এবং গুহাত

  • স্পষ্টতই, টুইটারের পদ্ধতিটি দুর্দান্ত, তবে আমার অ্যাপ্লিকেশনগুলির প্রয়োজনের জন্য, একটি URL সংক্ষিপ্ত করার পরামর্শ দেওয়া যথেষ্ট ছিল।
  • সুরক্ষার উদ্বেগের মতো ইউআরএল সংক্ষিপ্তকারীদের তাদের ত্রুটি রয়েছে। আমার ক্ষেত্রে এটি কোনও বিশাল ঝুঁকি নয় কারণ ইউআরএল প্রকাশ্য নয় এবং ভারী ব্যবহৃত হয় না; তবে এটি অবশ্যই সবার জন্য কাজ করবে না। Safe.mn অনেকগুলি স্প্যাম এবং ফিশিং ইউআরএলকে ব্লক করে বলে মনে হচ্ছে তবে আমি সতর্কতা অবলম্বন করব।
  • নিশ্চিত হয়ে নিন যে আপনার ব্যবহারকারীদের ইউআরএল সংক্ষিপ্তকরণ ব্যবহার করতে বাধ্য করা উচিত নয়। বেশিরভাগ ক্ষেত্রে (কমপক্ষে আমার অ্যাপ্লিকেশনগুলির প্রয়োজনের জন্য), বেশিরভাগ ব্যবহারকারীরা এটির জন্য কী ব্যবহার করবেন তার জন্য 500 অক্ষর অতিরিক্ত পর্যাপ্ত sufficient মাত্রাতিরিক্ত-দীর্ঘ লিঙ্কগুলির জন্য কেবল একটি URL সংক্ষিপ্তকরণ ব্যবহার / সুপারিশ করুন।

10
যদি আপনি একটি অন্তর্নির্মিত ইউআরএল সংক্ষিপ্তকরণ সরবরাহ করে থাকেন তবে এটির কাজ করার জন্য কি আপনাকে এখনও কোনও ডেটাবেজে পূর্ণ দৈর্ঘ্যের ইউআরএল সংরক্ষণ করতে হবে না? :-)
নীল নেইমান

2
অবশ্যই; তবে আমি সন্দেহ করি বেশিরভাগ লোকেরা নিজের শর্টনার লিখবেন। এটি লেখার পরে, আমি শিখেছি যে এখানে অনেকগুলি ইউআরএল সংক্ষিপ্তকরণের API আছে (listed১ এখানে তালিকাভুক্ত করা হয়েছে: প্রোগ্রামেবল ওয়েবে ডটকম / নিউজ /…), যাতে আপনি নিজের লেখা না লিখে প্রক্রিয়াটি স্বয়ংক্রিয় করতে পারেন। এটি অবশ্যই ব্যবহারকারীর জ্ঞান এবং সম্মতির উপর নির্ভর করে।
ব্রোকেট বিল্ডগেইন

4

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


3

আমি অন্যান্য ব্রাউজারগুলি সম্পর্কে জানি না, তবে আইটি 7 ​​টি এইচটিটিপি জিইটি অপারেশনের জন্য 2083 অক্ষরের সীমাবদ্ধতা রয়েছে । অন্য কোনও ব্রাউজারের সীমাবদ্ধতা না থাকলে আমি কেন দেখতে পাচ্ছি না কেন আপনার 2083 এর চেয়ে বেশি চরিত্রের প্রয়োজন হবে।


1

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


1

আপনি আরও ভাল ভারচার ব্যবহার করুন (সর্বোচ্চ) যার (আকারের দিক থেকে) অর্থ varchar (65535)। এটি আপনার আরও বড় ওয়েব ঠিকানাগুলি সঞ্চয় করবে এবং পাশাপাশি আপনার স্থান সংরক্ষণ করবে।

সর্বাধিক নির্দিষ্টকরণকারী বারচার, এনভারচার এবং ভের্বাইনারি ডেটা ধরণের স্টোরেজ ক্ষমতাগুলি প্রসারিত করে। ভারচার (সর্বাধিক), এনভারচর (সর্বাধিক), এবং ভার্বাইনারি (সর্বাধিক) সম্মিলিতভাবে বৃহত্তর মান ডাটা টাইপ বলা হয়। আপনি 2 ^ 31-1 বাইট উপাত্ত পর্যন্ত সঞ্চয় করতে বৃহত মানের ডেটা ধরণগুলি ব্যবহার করতে পারেন।

বড়-মূল্য ডেটা প্রকারগুলি ব্যবহার সম্পর্কে টেকনেটে এই নিবন্ধটি দেখুন


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