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