আমি দুটি ক্ষেত্রের সাথে একটি টেবিল তৈরি করতে যাচ্ছি - ID
হিসাবে BIGINT
এবং IPAddress
হয় varchar(45)
বা হিসাবে varbinary(16)
। ধারণাটি হ'ল সমস্ত অনন্য আইপি ঠিকানা সঞ্চয় করা এবং অন্য টেবিলগুলিতে ID
প্রকৃত পরিবর্তে একটি রেফারেন্স ব্যবহার করা IP address
।
সাধারণত, আমি একটি সঞ্চিত প্রক্রিয়া তৈরি করতে যাচ্ছি যা ID
প্রদত্ত জন্য প্রদত্ত ফিরিয়ে দিচ্ছে IP address
বা (যদি ঠিকানাটি খুঁজে পাওয়া না যায়) ঠিকানা সন্নিবেশ করান এবং জেনারেটটি ফিরিয়ে দিন ID
।
আমি অনেক রেকর্ড রাখার প্রত্যাশা করছি (আমি ঠিক কতটি বলতে পারি না) তবে আমার উপরের সঞ্চিত প্রক্রিয়াটি যত তাড়াতাড়ি সম্ভব সম্পাদন করা দরকার। সুতরাং, আমি ভাবছি কীভাবে আসল আইপি ঠিকানাটি সংরক্ষণ করতে হবে - পাঠ্য বা বাইট ফর্ম্যাটে। যা ভাল হতে চলেছে?
আমি SQL CLR
আইপি ঠিকানা বাইটগুলি স্ট্রিং এবং বিপরীতে রূপান্তর করার জন্য ইতিমধ্যে লিখিত ফাংশন লিখেছি , সুতরাং রূপান্তর কোনও সমস্যা নয় (উভয় IPv4
এবং উভয়ের সাথে কাজ করে IPv6
)।
আমি অনুমান করি যে অনুসন্ধানটি অপ্টিমাইজ করার জন্য আমার একটি সূচক তৈরি করা দরকার, তবে আমি নিশ্চিত নই যে আমার IP address
ক্ষেত্রটি ক্লাস্টারড ইনডেক্সে অন্তর্ভুক্ত করা উচিত , বা আলাদা সূচি তৈরি করা উচিত এবং কোন ধরণের সাহায্যে অনুসন্ধানটি আরও দ্রুত হবে?
IPv4
কেসটি কেবল আমার অনুমানের জন্যই হত তবে আমি ঠিকানাটিকে রূপান্তর করব INT
এবং ক্ষেত্রটিকে সূচক কী হিসাবে ব্যবহার করব। তবে এর জন্য IPv6
আমার দুটি BIGINT
ক্ষেত্র ব্যবহার করা দরকার এবং আমি মানটি একটি ক্ষেত্রে সংরক্ষণ করতে পছন্দ করি - আমার কাছে এটি আরও প্রাকৃতিক বলে মনে হয়।