Разработка высоконагруженных веб приложений требует от разработчиков не только создание просто расширяемого, программно-аппаратного комплекса, но и максимальную оптимизацию всех происходящих на ресурсе процессов, в частности перенос части вычислительных процессов на сторону клиента, асинхронные запросы, генерацию страниц и формирование визуального представления данных с помощью ресурсов клиента. Все это соответствует концепции Web 2.0 интернет приложений.
Стоит отметить, что не только производительность, но и безопасность, является основным аспектом создания Web 2.0 приложения. Одним из критериев безопасности, является идентификация пользователя на ресурсе, но связка логин/пароль в современной концепции SSO (Single sign-on, одна авторизация на множестве ресурсов) не позволяет гарантировать подлинность пользователя , сходную с локальными приложениями.
В результате исследования было выделено 4 механизма идентификации пользователя, суммарный результат которых близок к 90% деанонимизации пользователя ресурса.
1. Технология evercookie
2. Индивидуальный геолокационый след
3. HTTP-заголовки
4. Данные с источников в открытом доступе
Данные механизмы позволяют сгенерировать набор уникальных данных о пользователе, либо оставить метку в браузере или операционной системе пользователя, что позволяет в сумме, вне зависимости от введенного логина и пароля, определить пользователя ресурса.
Помимо идентификации пользователя, в высоконагруженной системе существует проблема ускоренного анализа ближайших геолокационных точек. Очевидный подход в данном случае завести в таблице два поля — широта/долгота. Можно использовать double precision(float8), который занимает 8 байт. В итоге нам потребуется 16 байт для хранения координат одного пользователя. Но есть и другой подход, который называется geohashing. Идея простая. Широта и долгота кодируется в число, которое затем кодируется в base-32. Карта разбивается на матрицу размера 4x8 и каждой ячейке присваивается некоторый символ(alphanumeric). Чтобы повысить точность, каждая ячейка разбивается на более мелкие, при этом к коду добавляются символы(если быть точным цифры, а после происходит кодирование в base-32).
Разбиение можно производить до необходимой точности. Такой код уникален для каждой точки.
Данный код обратим. Многие технологии уже имеют встроенные методы для работы с гео-хешами, например, MongoDB.
Пример: координаты 57.64911,10.40744 будут закодированы в u4pruydqqvj (11 символов). Если требуется меньшая точность, то и код будет меньше.
Список литературы:
Apostolos N. Nearest neighbor search. London, 2005, 170 p.
Verleysen M., Blondel V. Unique in the Crowd: The privacy bounds of human mobility. Scientific Reports. 2012
Сборник. Разработка высоконагруженных систем. HighLoad++. -Москва. 2012, 230 c.