আইপি ঠিকানা সংরক্ষণ করা হচ্ছে oring


25

আমাকে ডাটাবেসে সমস্ত নিবন্ধিত ব্যবহারকারীদের আইপি ঠিকানা সঞ্চয় করতে হবে। আমি ভাবছি, এই জাতীয় কলামের জন্য আমার কয়টি চরিত্র ঘোষণা করা উচিত?

আমারও কি আইপিভি 6 সমর্থন করা উচিত? যদি তা হয় তবে আইপি ঠিকানার সর্বোচ্চ দৈর্ঘ্য কত?

উত্তর:


27

স্ট্রিং হিসাবে সংরক্ষণ করবেন না। একটি ব্যবহার করুন int unsignedকলাম এবং দোকান / দিয়ে উদ্ধার INET_ATON()এবং INET_NTOA()যথাক্রমে। আফাইক মাইএসকিএল INET_ * আইপিভি 6 এর জন্য সমর্থন করে না।

মন্তব্য অনুযায়ী সম্পাদনা করুন

সংখ্যায় / থেকে আইপি রূপান্তর করতে ফাংশনে অন্তর্নির্মিত ব্যবহার করে (এবং ডাটাবেসে সেই পূর্ণসংখ্যা সংরক্ষণ করে) সেই আইপিগুলি স্বয়ংক্রিয়ভাবে বৈধ করার পার্শ্ব প্রতিক্রিয়া রয়েছে has বলুন যে আপনি একটি আইপি ভিচারার (16) হিসাবে সঞ্চয় করেছেন, আপনাকে কিছু কাস্টম বৈধতা সহ অবৈধ আইপিগুলি (উদাহরণ হিসাবে 999.999.999.999 এর মতো) সংরক্ষণ না করার বিষয়টি নিশ্চিত করতে হবে। INET_ * ফাংশনগুলি এটি যত্ন করে।


1
-1, আইপি অ্যাড্রেসগুলি 128 বিট অবধি এবং মাইএসকিউএল দ্বারা সমর্থিত বৃহত্তম সংখ্যার 64৪ বিট।
হেন্ডরিক ব্রুমারম্যান

3
আইপিভি 4 32-বিট। 128-বিট আইপিভি 6 এর জন্য, যা তিনি উল্লেখ করেছেন, INET_ * স্টাফ সমর্থন করে না।
রিচার্ড

1
আইপিভি address ঠিকানার জন্য INET6_ATON () এবং INET6_NTOA () ফাংশন ব্যবহার করুন, উদাহরণ দেখুন - rathishkumar.in77
08

6

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

আপনি তখন থেকে তথ্যের আকারটি গণনা করতে পারেন যে separa বিভাজক অক্ষরের সাথে সর্বাধিক 8 চারটি অক্ষর গ্রুপ থাকবে। অস্বাভাবিক ফর্ম্যাটটি শেষ দুটি গ্রুপকে একটি আইপিভি 4 ফর্ম্যাট ঠিকানা দিয়ে প্রতিস্থাপন করে। কোনও ঠিকানা সংকোচনের সাথে এটি 15 টি পর্যন্ত অক্ষরের সাথে শেষ 9 টি অক্ষর প্রতিস্থাপন করে।

আপনি যদি ব্লকগুলি সংরক্ষণ করেন, তবে ব্লক আকারের ইঙ্গিতটি IPv4 এর জন্য প্রয়োজনীয় 3 টি অক্ষরের পরিবর্তে 4 টি অক্ষর নিতে পারে।

আপনার প্রাপ্ত বিন্যাসটি সামঞ্জস্যপূর্ণ হওয়া নিশ্চিত করা উচিত তবে আমি যে সমস্ত সফ্টওয়্যার দেখেছি সেগুলি ঠিকানার জন্য সামঞ্জস্যপূর্ণ ফর্ম্যাট দেয়।


2
আমি পুরোপুরি একমত, আইপিভি 6 আসছে এবং ওয়াই 2 কে এর মতো অপেক্ষা করার চেয়ে এটির জন্য প্রস্তুত হওয়া ভাল D ডি
জেফ

শুধু আসছে না, ইতিমধ্যে আমার সিস্টেমে এখানে।
বিলথোর

6

আমি পোস্টগ্রিজ এসকিউএল এ মাইগ্রেশন এবং আইএনইটি বা সিআইডিআর ডেটা ধরণের ব্যবহারের পরামর্শ দেব ।

CREATE TABLE test ( test_id serial PRIMARY KEY, address inet );
INSERT INTO test ( address ) VALUES ( '1.2.3.4'::inet );
INSERT INTO test ( address ) VALUES ( 'a:b::c:d'::inet );
SELECT * FROM test;
 test_id | address  
---------+----------
       1 | 1.2.3.4
       2 | a:b::c:d

কোন আইপি কোন নেটওয়ার্কে রয়েছে তা পেতে * ঠিকানা থেকে পরীক্ষা করুন << '1.2.3.0/24':: নেট;
jkj

4

মাইএসকিউএল মেলিং তালিকার একটিতে তৈরি সেরা উত্তর এখানে। পড়ুন শ্রেষ্ঠ Fieldtype IP ঠিকানা সঞ্চয় করতে ...

সংক্ষেপে এটি প্রস্তাব করে, যা আমি দ্বিতীয়, INT (10) UNSIGNED ব্যবহার করতে পারি।

  1. এটি কম স্মৃতি ব্যবহার করে (কেবলমাত্র 4 বাইট)
  2. আইপি রেঞ্জগুলি বাছাই এবং অনুসন্ধানের জন্য সেরা, বিশেষত যদি আপনি আপনার দর্শকদের আদি দেশ খুঁজছেন।

সুতরাং, 192.168.10.50 ব্যবহার করে:

(192 * 2 ^ 24) + (168 * 2 ^ 16) + (10 * 2 ^ 8) + 50 = 3232238130 (192.168.10.50 এ ফলাফল)

মাইএসকিউএল এ আপনি সরাসরি ব্যবহার SELECT INET_ATON('192.168.10.50'); করতে পারেন 3232238130

অথবা

192 + (168 * 2 ^ 8) + (10 * 2 ^ 16) + (50 * 2 ^ 24) = 839559360 (পিছনে, ফলাফল 50.10.168.192)

মাইএসকিউএল এ আপনি ফিরে আসতে সরাসরি ব্যবহার SELECT INET_NTOA(3232238130); করতে পারেন 192.168.10.50


চিত্তাকর্ষক, আপনার জন্য +1 !!! 4 বাইট স্বাক্ষরিত নিশ্চিত ব্যবহার কোনও দিন স্ট্রিং ম্যানিপুলেশন।
RolandoMySQLDBA

-1, আইপি অ্যাড্রেসগুলি 128 বিট অবধি এবং মাইএসকিউএল দ্বারা সমর্থিত বৃহত্তম সংখ্যার 64৪ বিট।
হেনড্রিক ব্রুমারম্যান

3
nhnb, IPv6, 128 বিট, কিন্তু কথোপকথন IPv4- র যা সম্পর্কে IS 32 বিট। আপনার জ্ঞানের উপর জোর দিয়ে প্রতিটি মন্তব্য / মন্তব্যে মন্তব্য করার দরকার নেই।
চোখ

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

2

মাইএসকিউএল v5.6.3 হিসাবে তারা সমর্থন যোগ করেছে INET6_ATONএবং INET6_NOTAএটি আইপিভি 4 এবং আইপিভি 6 ঠিকানাগুলির যত্ন নেবে। তবে তারা আর এটি পূর্ণসংখ্যা হিসাবে সঞ্চয় করে না। IPv6 একটি varbinary(16)এবং IPv4 প্রদান করে a varbinary(4)

http://dev.mysql.com/doc/refman/5.6/en/miscellaneous-functions.html#function_inet6-aton


1

আপনি 15 টি পর্যন্ত ছায়াছবি সঞ্চয় করতে পারেন। দয়া করে ভর্চার (15) ব্যবহার করবেন না কারণ এটি 16 বাইট (প্রথম বাইট স্ট্রিংয়ের দৈর্ঘ্য পরিচালনা করে এবং এভাবে ধীরে ধীরে পুনরুদ্ধার এবং স্টোরেজ পরিচালনা করে)। সর্বদা আইপি ঠিকানার মতো কিছুতে CHAR (15) ব্যবহার করুন।


আইপি ঠিকানার সর্বোচ্চ দৈর্ঘ্য 45 টি অক্ষর।
হেন্ডরিক ব্রুমারম্যান

চার্জ কি ফাঁকা জায়গায় প্যাড করবে না?
গাইউস

0

দুঃখিত, উত্তরে মন্তব্য করতে পারবেন না। স্ট্যাকওভারফ্লোতে এটি নিয়ে একটি প্রশ্ন রয়েছে । এবং আমি নির্বাচিত উত্তরের সাথে পুরোপুরি একমত: 2xBIGINT ব্যবহার করা বর্তমানে আইপিভি 6 এর পক্ষে সম্ভবত সেরা উপায়।

আমি 2 * বিগিন্টে যাওয়ার পরামর্শ দিচ্ছি, তবে নিশ্চিত করুন যে তারা নিরবধি রয়েছে। IPv6 এ / 64 ঠিকানার সীমানায় এক ধরণের প্রাকৃতিক বিভাজন রয়েছে (যেহেতু একটি / 64 হ'ল নেটব্লক আকার) তবে এটির সাথে খুব ভালভাবে সারিবদ্ধ হবে।

এই বিগিন্টগুলিতে আইপিভি 4 সংরক্ষণ করাও সম্ভব - তাদের মধ্যে একটিকে নূলে চিহ্নিত করে বা ভি 4COMPAT ফর্ম্যাট ব্যবহার করে

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