[Из песочницы] Сравнение геолокационных бинарных баз и их драйверов: GeoIP, Sypex Geo, TabGeo
Особенностью данного тестирования является некая приближенность к реальным условиям, когда есть необходимость определять страну одного посетителя на лету за один запуск скрипта, то есть: один запуск скрипта — один ip-адрес. В подобном тестировании от zapimir использовался другой принцип, который, как мне кажется, имеет мало общего с реальной необходимостью: один запуск скрипта — определение нескольких тысяч ip-адресов в цикле.Первое, что мы сделаем — это сравним базы: Разработчик База Дата обновления Количество диапазонов, тыс Размер базы, Kb GeoIP GeoLite Country 2014.06.03 93 688 Sypex Geo Sypex Geo Country 2014.06.20 90 365 TabGeo tabgeo_country_v4 2014.06.20 200 998 Sypex Geo может похвастаться самой маленькой базой из всех представленных, но и самой низкой точность (90 000 диапазонов). Самая высокая точность у TabGeo — 200 000 диапазонов, но и, в связи с этим, самая пухлая база. GeoIP — по всем параметрам занимает промежуточное положение. Все базы на данный момент имеют регулярные обновления.А теперь непосредственно перейдем к тестированию производительности разных баз. Особенностью тестирования было определение времени работы скрипта для определения одного ip-адреса за один запуск, затем данные интерпретировались в количество запусков на одну секунду.
Разработчик База Количество запросов в секунду (медиана) GeoIP GeoLite Country 460 Sypex Geo Sypex Geo Country 910 TabGeo tabgeo_country_v4 1400 Из таблицы видно, что самым неспешным решением для геолокации является GeoIP — всего 460 запросов в секунду, для самого распространенного и популярного решения — это очень плохо, и хочется отметить, что GeoIP2 от MaxMind совсем не выход из данной ситуации (это больше информационная база, чем база для геолокации).Серебряным призером данного соревнования является база и драйвер от Sypex Geo — 910 обращений в секунду, что в два раза лучше, чем результаты показанные GeoIP. Но абсолютным лидером в данной номинации является TabGeo — 1400 запросов в секунду при равных условиях, что в более чем в 1,5 раза лучше, чем Sypex Geo.
Также небольшой прирост производительности дает меньшее количество обращений к диску, сравнение при условии: одно определение страны — один запуск скрипта, показало, что минимальное значение этого параметра у TabGeo — от 1 до 3 дисковых операций, у Sypex Geo — 4 и полным аутсайдером в данном сравнении является GeoIP — от 23 до 52 на одну инициализацию и одно определение страны по ip-адресу.
Немаловажным значением является и размер памяти занимаемый скриптом: TabGeo — 26 Kb, Sypex Geo — 110 Kb и GeoIP — 285 Kb.
Из представленных данных можно сделать вывод, что самое популярное решение геолокации GeoIP — является одновременно и самым худшим для реальных проектов. Sypex Geo — занимает промежуточное положение в данной иерархии. Ну, и абсолютным лидером практически по всем параметрам (из представленных баз) — является TabGeo.
Сайты испытуемых баз: TabGeoSypex GeoGeoIp