Нет, речь не о скорости, такие сравнения уже были. А захотелось мне сравнить выдачу разных баз на одном наборе данных. Причём не страны (с этим у всех нормально), а города.

Для сравнения использовались базы:
  1. MaxMind: GeoLite2 City, 9 октября 2015
  2. Sypex: Sypex Geo City, 5 октября 2015

Использовались IP из внутренних логов, немного — всего 28012 штук, в основном российских. Но и этого количества хватило для получения интересных результатов.

Для начала — обе базы не справились с шестью адресами, то есть не определили ни город, ни страну:

  1. 96.47.226.20
  2. 141.0.14.15
  3. 141.0.14.199
  4. 141.0.14.29
  5. 141.0.14.174
  6. 195.160.253.4

Дополнительно Sypex не определил ничего для 53 IP:

список
  1. 45.33.149.6
  2. 45.64.9.238
  3. 45.79.152.156
  4. 45.79.139.163
  5. 65.49.14.165
  6. 65.49.14.85
  7. 65.49.14.94
  8. 65.49.14.59
  9. 65.49.14.60
  10. 65.49.14.156
  11. 65.49.14.87
  12. 104.128.144.131
  13. 104.152.128.187
  14. 104.156.222.206
  15. 104.238.180.234
  16. 104.45.92.166
  17. 131.0.160.14
  18. 131.221.208.2
  19. 138.122.142.18
  20. 138.204.27.157
  21. 141.0.15.155
  22. 160.176.232.3
  23. 162.252.188.138
  24. 172.77.39.227
  25. 172.78.141.158
  26. 172.79.136.230
  27. 177.235.49.236
  28. 177.92.13.51
  29. 177.92.20.134
  30. 179.105.241.151
  31. 185.104.215.108
  32. 185.112.142.213
  33. 185.81.157.159
  34. 185.91.178.161
  35. 185.91.179.83
  36. 185.91.178.227
  37. 185.91.179.196
  38. 185.91.178.52
  39. 185.91.178.66
  40. 185.91.179.193
  41. 185.91.179.106
  42. 185.91.179.237
  43. 185.91.178.186
  44. 185.91.178.69
  45. 185.91.179.4
  46. 185.91.179.173
  47. 185.91.178.10
  48. 185.92.73.126
  49. 185.95.104.234
  50. 185.97.165.245
  51. 185.97.165.11
  52. 191.37.63.14
  53. 201.140.240.254


MaxMind — для 78:

список
  1. 66.249.81.157
  2. 66.249.81.153
  3. 66.249.93.163
  4. 66.249.93.146
  5. 66.249.93.153
  6. 66.249.93.154
  7. 66.249.93.157
  8. 66.249.93.150
  9. 66.249.93.161
  10. 66.249.81.149
  11. 82.145.220.108
  12. 82.145.209.36
  13. 82.145.221.24
  14. 82.145.208.144
  15. 82.145.218.254
  16. 82.145.223.56
  17. 82.145.220.94
  18. 82.145.208.197
  19. 82.145.221.153
  20. 82.145.220.208
  21. 82.145.223.110
  22. 82.145.221.46
  23. 82.145.222.49
  24. 82.145.222.91
  25. 82.145.217.220
  26. 82.145.222.101
  27. 82.145.211.24
  28. 82.145.221.127
  29. 82.145.221.34
  30. 82.145.208.194
  31. 82.145.210.174
  32. 82.145.216.190
  33. 82.145.208.146
  34. 82.145.208.147
  35. 82.145.220.65
  36. 82.145.221.102
  37. 82.145.208.130
  38. 82.145.223.7
  39. 82.145.217.209
  40. 82.145.222.240
  41. 82.145.208.196
  42. 82.145.222.192
  43. 82.145.220.176
  44. 82.145.219.143
  45. 82.145.209.50
  46. 82.145.222.233
  47. 82.145.221.226
  48. 82.145.222.112
  49. 82.145.208.131
  50. 82.145.223.93
  51. 82.145.222.25
  52. 82.145.220.173
  53. 82.145.223.4
  54. 82.145.223.63
  55. 82.145.223.45
  56. 82.145.223.51
  57. 82.145.222.184
  58. 134.222.104.250
  59. 169.143.244.115
  60. 185.26.182.34
  61. 185.26.180.87
  62. 185.26.182.25
  63. 185.26.182.29
  64. 185.26.180.206
  65. 185.26.180.111
  66. 185.26.183.75
  67. 185.26.180.33
  68. 185.26.182.35
  69. 185.26.180.136
  70. 185.26.182.37
  71. 185.26.182.33
  72. 185.26.180.19
  73. 185.26.180.221
  74. 185.26.182.36
  75. 185.26.182.27
  76. 185.26.182.42
  77. 185.26.182.31
  78. 185.26.182.38


С частичным определением, когда определяется только страна, но не город, немного хуже. Sypex озадачился для 91 IP, MaxMind аж для 6509! То есть MaxMind не справился с почти четвертью предоставленных адресов…

Но самое интересное началось при сравнении выдачи данных разными базами для одних и тех же IP. Несовпадений обнаружилось 1066 штук. Для сокращения объёма материала в статье методика проверки была простая: сначала сравнивался код города (обе базы гарантируют их совпадение с кодами объектов GeoNames). При несовпадении проверялось название. «Ведущей» базой здесь была Sypex, как более «благополучная» по «ru», и в сводную таблицу попадало только первое несовпадение имени, дальнейшие отбрасывались. Координаты объектов брались из выдачи, по ним формировались ссылки на гуглокарты, яндекскарты и OSM. И вот что получилось в итоге (полная таблица — по ссылке, там расхождений намного больше):

Sypex MaxMind
IP код объект код объект
5.199.212.40 579266 Baranchinskiy (G), (Я), (O) 1538636 Новоуральск (G), (Я), (O)
2.61.112.181 1512236 Абакан (G), (Я), (O) 1508054 Черногорск (G), (Я), (O)
217.23.187.92 582432 Альметьевск (G), (Я), (O) 551487 Казань (G), (Я), (O)
31.128.219.246 581357 Апатиты (G), (Я), (O) 548391 Кировск (G), (Я), (O)
217.118.81.11 580922 Армавир (G), (Я), (O) 542420 Краснодар (G), (Я), (O)
92.101.51.249 581049 Архангельск (G), (Я), (O) 518909 Новодвинск (G), (Я), (O)
2.92.12.195 580493 Астрахань (G), (Я), (O) 472757 Волгоград (G), (Я), (O)
5.227.218.235 579492 Балаково (G), (Я), (O) 498677 Саратов (G), (Я), (O)
95.73.34.150 579464 Балашиха (G), (Я), (O) 532615 Люберцы (G), (Я), (O)
178.187.43.127 1510853 Барнаул (G), (Я), (O) 1538642 Сибирский (G), (Я), (O)
95.71.47.34 578072 Белгород (G), (Я), (O) 558146 Губкин (G), (Я), (O)
5.8.230.18 1510018 Бийск (G), (Я), (O) 1510853 Барнаул (G), (Я), (O)
95.70.79.206 2026643 Биробиджан (G), (Я), (O) 2132037 Брас (G), (Я), (O)
31.41.192.54 2026094 Братск (G), (Я), (O) 1497259 Нов.Силава (G), (Я), (O)
2.92.93.183 571476 Брянск (G), (Я), (O) 553915 Калуга (G), (Я), (O)
79.141.214.0 519336 Великий Новгород (G), (Я), (O) 548442 Кириши (G), (Я), (O)
185.13.132.63 1487281 Верхняя Пышма (G), (Я), (O) 1486209 Екатеринбург (G), (Я), (O)
95.167.53.228 1487277 Верхняя Салда (G), (Я), (O) 1497393 Нижняя Салда (G), (Я), (O)
31.185.5.71 473778 Видное (G), (Я), (O) 486968 Ступино (G), (Я), (O)
80.83.237.107 2013348 Владивосток (G), (Я), (O) 2023469 Иркутск (G), (Я), (O)
178.35.118.87 473249 Владикавказ (G), (Я), (O) 524736 Моздок (G), (Я), (O)
31.28.219.85 473247 Владимир (G), (Я), (O) 487837 Ставрово (G), (Я), (O)
188.187.16.38 472757 Волгоград (G), (Я), (O) 498817 Санкт-Петербург (G), (Я), (O)
92.38.11.21 472761 Волгодонск (G), (Я), (O) 533874 Лозной (G), (Я), (O)
46.29.234.35 472231 Волжский (G), (Я), (O) 7043838 Зареченский (G), (Я), (O)
178.64.239.12 472459 Вологда (G), (Я), (O) 569223 Череповец (G), (Я), (O)
91.229.177.176 472045 Воронеж (G), (Я), (O) 572525 Борисоглебск (G), (Я), (O)
95.73.174.231 471656 Воскресенск (G), (Я), (O) 565955 Дмитров (G), (Я), (O)
92.242.69.253 563708 Дзержинск (G), (Я), (O) 520555 Нижний Новгород (G), (Я), (O)
95.72.12.150 565955 Дмитров (G), (Я), (O) 524901 Москва (G), (Я), (O)
95.72.103.17 565614 Долгопрудный (G), (Я), (O) 524901 Москва (G), (Я), (O)
5.140.162.233 1486209 Екатеринбург (G), (Я), (O) 1491159 Среднеуральск (G), (Я), (O)
91.190.176.113 466990 Ессентуки (G), (Я), (O) 503550 Пятигорск (G), (Я), (O)
212.124.11.99 555312 Иваново (G), (Я), (O) 473247 Владимир (G), (Я), (O)
78.85.112.21 554840 Ижевск (G), (Я), (O) 2132037 Брас (G), (Я), (O)
91.226.122.97 2023469 Иркутск (G), (Я), (O) 2012557 Железногорск-Илимский (G), (Я), (O)
176.215.84.101 466806 Йошкар-Ола (G), (Я), (O) 1502026 Красноярск (G), (Я), (O)
178.206.158.72 551487 Казань (G), (Я), (O) 824195 Бибаево (G), (Я), (O)
46.183.6.71 554234 Калининград (G), (Я), (O) 557882 Гусев (G), (Я), (O)
109.202.54.88 1504826 Каменск-Уральский (G), (Я), (O) 1486209 Екатеринбург (G), (Я), (O)
91.217.3.227 553190 Кандалакша (G), (Я), (O) 581357 Апатиты (G), (Я), (O)
95.190.51.192 1503901 Кемерово (G), (Я), (O) 1510208 Березовка (G), (Я), (O)
176.115.155.82 548408 Киров (G), (Я), (O) 543737 Котельнич (G), (Я), (O)
95.72.84.208 546230 Коломна (G), (Я), (O) 566950 Давыдово (G), (Я), (O)
195.88.59.213 546521 Кольчугино (G), (Я), (O) 537107 Лакинск (G), (Я), (O)
92.37.211.162 2021851 Комсомольск-на-Амуре (G), (Я), (O) 545736 Комсомольск (G), (Я), (O)
91.236.204.41 1502603 Копейск (G), (Я), (O) 1502536 Коркино (G), (Я), (O)
95.153.131.117 542420 Краснодар (G), (Я), (O) 528293 Майкоп (G), (Я), (O)
46.166.75.199 1502026 Красноярск (G), (Я), (O) 1512165 Ачинск (G), (Я), (O)
149.62.51.111 540030 Кубинка (G), (Я), (O) 524901 Москва (G), (Я), (O)
5.141.221.191 1501321 Курган (G), (Я), (O) 1510421 Белозерское (G), (Я), (O)
46.229.140.229 538560 Курск (G), (Я), (O) 515012 Орёл (G), (Я), (O)
84.18.119.182 536162 Лениногорск (G), (Я), (O) 578638 Бавлы (G), (Я), (O)
178.234.214.208 535121 Липецк (G), (Я), (O) 558312 Грязи (G), (Я), (O)
95.73.102.180 533543 Луховицы (G), (Я), (O) 501320 Рошаль (G), (Я), (O)
85.174.245.231 528293 Майкоп (G), (Я), (O) 7077462 Жуковского (G), (Я), (O)
176.103.98.57 531820 Малаховка (G), (Я), (O) 524901 Москва (G), (Я), (O)
62.182.203.22 532096 Махачкала (G), (Я), (O) 566789 Дельта (G), (Я), (O)
95.24.64.218 524901 Москва (G), (Я), (O) 498817 Санкт-Петербург (G), (Я), (O)
78.36.21.225 524305 Мурманск (G), (Я), (O) 795243 Снежногорск (G), (Я), (O)
109.248.226.28 524294 Муром (G), (Я), (O) 569696 Чебоксары (G), (Я), (O)
31.135.77.128 523811 Мытищи (G), (Я), (O) 524901 Москва (G), (Я), (O)
95.86.242.75 523859 Мышкин (G), (Я), (O) 468902 Ярославль (G), (Я), (O)
95.78.40.253 523750 Набережные Челны (G), (Я), (O) 824195 Бибаево (G), (Я), (O)
85.173.113.121 523523 Нальчик (G), (Я), (O) 579574 Баксан (G), (Я), (O)
95.73.205.74 523426 Наро-Фоминск (G), (Я), (O) 565381 Домодедово (G), (Я), (O)
46.46.11.126 2019528 Находка (G), (Я), (O) 2020812 Лесозаводск (G), (Я), (O)
83.149.37.235 1497543 Нижневартовск (G), (Я), (O) 1486209 Екатеринбург (G), (Я), (O)
217.23.186.11 521118 Нижнекамск (G), (Я), (O) 551487 Казань (G), (Я), (O)
93.120.171.24 520555 Нижний Новгород (G), (Я), (O) 519336 Великий Новгород (G), (Я), (O)
195.88.17.207 1496747 Новосибирск (G), (Я), (O) 1496421 Обь (G), (Я), (O)
178.213.208.45 518976 Новочебоксарск (G), (Я), (O) 519148 Нова (G), (Я), (O)
178.167.64.81 520068 Ногинск (G), (Я), (O) 515024 Орехово-Зуево (G), (Я), (O)
94.103.238.207 516215 Одинцово (G), (Я), (O) 524901 Москва (G), (Я), (O)
91.205.236.66 1538634 Озерск (G), (Я), (O) 1489837 Нов.Теча (G), (Я), (O)
5.166.197.159 1496153 Омск (G), (Я), (O) 519336 Великий Новгород (G), (Я), (O)
79.126.119.225 515003 Оренбург (G), (Я), (O) 2126132 Чкалов (G), (Я), (O)
95.72.162.135 515024 Орехово-Зуево (G), (Я), (O) 501320 Рошаль (G), (Я), (O)
94.253.117.139 512023 Павловский Посад (G), (Я), (O) 524901 Москва (G), (Я), (O)
80.95.38.188 511565 Пенза (G), (Я), (O) 553725 Каменка (G), (Я), (O)
176.214.179.193 511196 Пермь (G), (Я), (O) 2126132 Чкалов (G), (Я), (O)
77.82.142.5 2122104 Петропавловск-Камчатский (G), (Я), (O) 1504924 Камчатка (G), (Я), (O)
37.1.2.163 508101 Подольск (G), (Я), (O) 569591 Чехов (G), (Я), (O)
91.238.168.147 507977 Подстёпки (G), (Я), (O) 482283 Тольятти (G), (Я), (O)
84.204.255.21 504341 Псков (G), (Я), (O) 498817 Санкт-Петербург (G), (Я), (O)
194.15.118.205 502018 Реутов (G), (Я), (O) 524901 Москва (G), (Я), (O)
77.66.132.52 501175 Ростов-на-Дону (G), (Я), (O) 501183 Ростов (G), (Я), (O)
178.46.9.85 1493197 Салехард (G), (Я), (O) 1488414 Уренгой (G), (Я), (O)
217.118.90.217 499099 Самара (G), (Я), (O) 1486209 Екатеринбург (G), (Я), (O)
178.130.38.73 498817 Санкт-Петербург (G), (Я), (O) 491061 Солдатское (G), (Я), (O)
2.92.127.82 498677 Саратов (G), (Я), (O) 553915 Калуга (G), (Я), (O)
213.110.16.83 498418 Сатка (G), (Я), (O) 873483 Скат (G), (Я), (O)
83.172.36.136 1538637 Северск (G), (Я), (O) 1489425 Томск (G), (Я), (O)
188.35.14.57 496638 Сергиев Посад (G), (Я), (O) 541950 Краснозаводск (G), (Я), (O)
77.51.92.205 496527 Серпухов (G), (Я), (O) 555746 Истра (G), (Я), (O)
46.172.219.145 693805 Симферополь (G), (Я), (O) 540259 Крым (G), (Я), (O)
95.167.146.223 491687 Смоленск (G), (Я), (O) 468866 Ярцево (G), (Я), (O)
46.45.28.247 1536289 Снежинск (G), (Я), (O) 7077209 Вега (G), (Я), (O)
31.42.47.98 490996 Солнечногорск (G), (Я), (O) 527581 Менделеево (G), (Я), (O)
81.177.127.83 491422 Сочи (G), (Я), (O) 6417459 Краснознаменск (G), (Я), (O)
77.34.175.208 2016187 Спасск-Дальний (G), (Я), (O) 1491197 Спасск (G), (Я), (O)
46.45.227.93 487846 Ставрополь (G), (Я), (O) 522377 Невинномысск (G), (Я), (O)
5.141.203.210 1490624 Сургут (G), (Я), (O) 1508291 Челябинск (G), (Я), (O)
95.52.181.96 485239 Сыктывкар (G), (Я), (O) 511794 Печора (G), (Я), (O)
78.132.234.93 484646 Тамбов (G), (Я), (O) 502793 Рассказово (G), (Я), (O)
95.29.242.149 480060 Тверь (G), (Я), (O) 498677 Саратов (G), (Я), (O)
95.67.213.95 482283 Тольятти (G), (Я), (O) 463082 Жигулевск (G), (Я), (O)
109.206.157.24 482260 Томилино (G), (Я), (O) 524901 Москва (G), (Я), (O)
77.106.104.3 1489425 Томск (G), (Я), (O) 1489870 Тайшет (G), (Я), (O)
2.94.171.202 480562 Тула (G), (Я), (O) 543878 Кострома (G), (Я), (O)
91.143.48.193 1488754 Тюмень (G), (Я), (O) 1490624 Сургут (G), (Я), (O)
85.26.164.249 479123 Ульяновск (G), (Я), (O) 482283 Тольятти (G), (Я), (O)
46.46.34.19 2014006 Уссурийск (G), (Я), (O) 2020812 Лесозаводск (G), (Я), (O)
94.41.235.183 479561 Уфа (G), (Я), (O) 522942 Нефтекамск (G), (Я), (O)
92.37.159.205 2022890 Хабаровск (G), (Я), (O) 2021851 Комсомольск-на-Амуре (G), (Я), (O)
5.140.235.75 1503772 Ханты-Мансийск (G), (Я), (O) 1490624 Сургут (G), (Я), (O)
178.219.32.48 550280 Химки (G), (Я), (O) 524901 Москва (G), (Я), (O)
91.216.72.161 569696 Чебоксары (G), (Я), (O) 470845 Вурнары (G), (Я), (O)
5.141.192.237 1508291 Челябинск (G), (Я), (O) 511196 Пермь (G), (Я), (O)
128.0.161.90 568595 Черняховск (G), (Я), (O) 554234 Калининград (G), (Я), (O)
82.112.37.217 567434 Чусовой (G), (Я), (O) 511196 Пермь (G), (Я), (O)
195.189.180.57 495260 Щербинка (G), (Я), (O) 508101 Подольск (G), (Я), (O)
178.219.176.125 563523 Электросталь (G), (Я), (O) 520068 Ногинск (G), (Я), (O)
87.228.42.101 536206 Юбилейный (G), (Я), (O) 523812 Мытищи (G), (Я), (O)
188.244.143.112 2119441 Южно-Сахалинск (G), (Я), (O) 2132037 Брас (G), (Я), (O)
91.220.92.29 469178 Янаул (G), (Я), (O) 576116 Благовещенск (G), (Я), (O)
91.242.167.93 468902 Ярославль (G), (Я), (O) 497242 Семибратово (G), (Я), (O)


Выводов не будет. Хотя, IP 95.24.64.218 безусловно порадовал. Да и «то ли Владивосток, то ли Иркутск» тоже неплохо.

Комментарии (4)


  1. apelsyn
    19.10.2015 11:38
    +1

    По Украине MaxMind выдал точнее результат, вот IP: 80.91.174.90, правильный ответ Винница.


    1. kloppspb
      19.10.2015 13:39
      +1

      Точность — это отдельный вопрос, как её тестировать пока не очень понятно.

      А косяков у всех хватает. MaxMind, например, не видит разницы между Новгородом и Нижним Новгородом, Ростовом и Ростовом-на-Дону, Комсомольском и Комсомольском-на-Амуре, Спасском и Спасском-Дальним, etc.


  1. mvs
    19.10.2015 22:03

    Ну и что толку сравнивать 2 демо-версии баз, которые по-определению показывают погоду вместо реальных данных? Для объективности сравните хотя ограниченные веб-версии с подключенными коммерческими базами: sypexgeo.net/ru/demo и www.maxmind.com/en/geoip-demo

    К слову сказать, мой IP-адрес, которому уже несколько лет, а провайдеру — больше 10-ти лет, Sypex до сих пор относит к небольшому соседнему городку вместо реального областного центра.

    А вот с адресами сотовых операторов одинаково плохо у всех: либо вообще пустой ответ, либо Europe, либо Russia (чаще всего), либо какой угодно город рандомно.
    Сейчас у телефона 217.118.79.36 (Томск, Билайн): Sypex и MaxMind считают, что это Санкт-Петербург, а в who.is/whois-ip/ip-address/217.118.79.36 ничего конкретного.


    1. kloppspb
      19.10.2015 22:28

      У Sypex единственное отличие free GeoCity от коммерческой версии только в частоте обновлений (2 раза в месяц против недельного). Не думаю, что такая задержка ведёт к протуханию данных вплоть до «погоды». REST API? 30 тысяч запросов в месяц максимум. Да я только за время отладки прогоняю несколько сотен тысяч IP-шников :-)

      А у максмайнда по ссылке явно сказано:

      If you'd like to test multiple IP addresses, we offer a demo for up to 25 addresses per day.


      Если придумается как через коммерческую версию базы прогнать хоть сколько-нибудь значимое количество адресов (хотя бы десяток-другой тысяч) за осмысленное время, да с автоматизацией процесса — будет здорово.