के लिए आईपी पता श्रेणी दो बिगिनट में कनवर्ट करें मैं एक परियोजना पर काम कर रहा हूं जिसमें हमें IP Address lookups
करने की आवश्यकता है। इसलिए इसके लिए हमें डेटासेट मिल गए हैं जो नीचे दिखेगा और अब अगले चरण MySql table
में इस डेटासेट (एक सीएसवी फ़ाइल हो सकता है) को पॉप्युलेट करना है।तेजी से लुकअप
मैं बजाय तालिका में IP Address
भंडारण के रूप में एक ऐसा करने का डाटाबेस में START_IP_NUM
और END_IP_NUM
BIGINT
के रूप में स्टोर करने के लिए योजना बना रहा हूँ: - नीचे डाटासेट उदाहरण columns-
ip_address country region city metro-code latitude longitude postal-code country-code region-code city-code continent-code country-code
24.32.116.116 usa tx clarksville 623 33.6103 -95.0498 75426 840 44 34918 6 us
65.29.108.232 usa mi novi 505 42.4637 -83.4604 48375 840 23 4339 6 us
66.169.99.69 usa tx ft worth 623 32.7016 -97.3823 76109 840 44 771 6 us
72.70.100.111 usa ma peabody 506 42.5332 -70.9726 1960 840 22 1392 6 us
174.252.116.137 usa va oakton 511 38.8892 -77.3222 22124 840 47 3860 6 us
68.55.144.242 usa md pasadena 512 39.1276 -76.5125 21122 840 21 4358 6 us
174.252.83.27 usa pa lancaster 566 40.0459 -76.3542 17603 840 39 333 6 us
174.78.192.31 usa ga warner robins 503 32.5958 -83.6384 31088 840 11 5052 6 us
98.192.146.235 usa fl panama city 656 30.1804 -85.5598 32404 840 10 671 6 us
71.192.181.20 usa ma springfield 543 42.1187 -72.5483 1109 840 22 967 6 us
76.183.54.227 usa tx dallas 623 32.7202 -96.6769 75217 840 44 77 6 us
69.62.143.140 usa ca granite bay 862 38.7442 -121.191 95746 840 5 49451 6 us
69.142.76.32 usa nj penns grove 504 39.707 -75.4467 8069 840 31 2335 6 us
70.173.54.93 usa nv las vegas 839 36.2059 -115.225 89108 840 29 173 6 us
98.242.8.222 usa ca fresno 866 36.7968 -119.883 93722 840 5 19 6 us
समस्या वक्तव्य युक्त एक बिगिनट के खिलाफ लुकअप एक स्ट्रिंग (बिंदीदार आईपी नोटेशन) की तुलना में कहीं अधिक तेज़ है। जैसे मैक्समिंड के लिए हमारे पास डेटाबेस सेटअप है।
तो मेरा सवाल है कि हमारे पास Java Program
अलग होगा जो MySQL तालिका में उपरोक्त डेटासेट को पॉप्युलेट करेगा। इसलिए मैं डिवाइस के लिए तर्क किसी प्रकार का जो की तरह में ऊपर डेटासेट में बदल सकते हैं below-
start_ip_num
end_ip_num
country
region
city
metro-code
latitude
longitude
postal-code
country-code
region-code
city-code
continent-code
country-code
मैं एक आईपी पता कर रहा हूँ दिया भ्रमित जरूरत है कैसे करना चाहिए मैं डिवाइस start_ip_num
और यहाँ end_ip_num
और यह MySql table
में संग्रहीत करते हैं। जैसा कि एक फ़ाइल होगी, मुझे लगता है कि ऊपर की तरह डेटासेट होंगे और फिर मुझे उस फ़ाइल और डिवाइस को आईपी एड्रेस को दो बिगिनट में बदलने और इसे MySQL तालिका में स्टोर करने के लिए कुछ प्रकार के तर्क को पढ़ने की आवश्यकता है।
और इसे MySQL डेटाबेस में संग्रहीत करने के बाद। मैं MySql-
में इस तरह देखने कुछ कर सकते हैंSELECT country
FROM geoip
WHERE
INET_ATON('174.36.207.186') BETWEEN start_ip_num AND end_ip_num
LIMIT 1
अद्यतन: -
मान लीजिए मैं प्रारूप मैं उपर्युक्त के साथ एक पाठ फ़ाइल में 100,000 IP Addresses
तरह Thousands IP Address
की जोड़ी के आसपास की है।
अब मेरा मुख्य उद्देश्य IP Address lookup
करना है। इस IP Address
के अनुरूप मुझे अन्य सभी आवश्यक फ़ील्ड प्राप्त करें।
इसलिए यह काम करने के लिए, मैं शुरुआत में टेक्स्ट फ़ाइल डेटा को डंप करने की योजना बना रहा था क्योंकि यह MySql table
में है। तो MySQL तालिका में IP Address
कॉलम और अन्य कॉलम होंगे जैसा कि मैंने उपरोक्त उदाहरण में किया है। लेकिन स्ट्रिंग पर एक लुकअप करना महंगा है।
तो मैंने सोचा कि मैं start_ip_num
और end_ip_num
रेंज में उन लोगों के आईपी एड्रेस को बदलने और उसके बाद MySql table
में डेटा डंप चाहिए तो अब यह इस-
start_ip_num
end_ip_num
country
region
city
metro-code
latitude
longitude
postal-code
country-code
region-code
city-code
continent-code
country-code
कुछ इस प्रकार दिखाई और होगा अब अगर मैं लुकअप करने की जरूरत है
SELECT country
FROM geoip
WHERE
INET_ATON('174.36.207.186') BETWEEN start_ip_num AND end_ip_num
LIMIT 1
तो है- सवाल को देखते हुए एक Text file
जो वाई -, मैं इस SQL query
मेरी WebService eventually
में एम्बेडेड हो सकता है IP Addresses
और IP Address
से संबंधित अन्य फ़ील्ड की सूची मुझे इस तरह से मालिश कैसे करनी चाहिए ताकि मैं ऊपर वर्णित प्रारूप में MySQL में उसी डेटासेट को start_ip_num
और end_ip_num
, country
और अन्य फ़ील्ड में संग्रहीत कर सकूं।
असल में मैं डेटाबेस के पैटर्न का पालन करने की कोशिश कर रहा हूं जैसे कि मैक्समिंड वर्तमान में है। उनके पास start_ip_num
और end_ip_num
और अन्य फ़ील्ड भी हैं। और जब आपको लुकअप करने की ज़रूरत होती है तो आप INET_ATON
का उपयोग करके आईपी एड्रेस को BIGINT
में परिवर्तित करके ऊपर वर्णित एसक्यूएल पर लुकअप आधार पर कर सकते हैं।
इसे एक पूर्णांक के रूप में क्यों स्टोर न करें? आईपीवी 4 पते 8 बाइट्स से अधिक नहीं होने की गारंटी है। – Makoto
@ मकोटो मैं कहूंगा कि आईपीवी 4 पते 4 बाइट होने की गारंटी है। – PSIAlt
मैंने आईपीवी 4 और 4 बाइट्स के साथ सुझाव दिया है, लेकिन ... शायद नए एप्लिकेशन में आईपीवी 6 समर्थन होना अच्छा होगा? – Kamil