Идеальное хранилище
              геоданных для вашего
                       приложения




WWW.2GIS.RU
Кто здесь


              Андрей Лузин, 2GIS, Разработчик
              бэкендов, тимлид
              @dronnix, a.luzin@2gis.ru




WWW.2GIS.RU
Пару слов
              о компании 2GIS




WWW.2GIS.RU
Пару слов
              о компании 2GIS




WWW.2GIS.RU
Чего не будет


               • Не будем касаться профессиональных GIS
                 систем
               • Не будет сферических бенчмарков в вакууме
               • Не скажу какое хранилище идеальное




WWW.2GIS.RU
 WWW.2GIS.RU
Что будет


               • Рассмотрим как обстоят дела с хранением
                 геоданных
               • Определим, как выбрать хранилище
               • Поделюсь, как сами храним геоданные
               • Отвечу на вопросы, буду рад пообщаться




WWW.2GIS.RU
 WWW.2GIS.RU
Типы данных - Point




WWW.2GIS.RU
Типы данных - MultiPoint




WWW.2GIS.RU
Типы данных – Polyline




WWW.2GIS.RU
Типы данных – MultiPolyline




WWW.2GIS.RU
Типы данных – Polygon




WWW.2GIS.RU
Типы данных – MultiPolygon




WWW.2GIS.RU
Операции отношений




WWW.2GIS.RU
Порождающие операции




WWW.2GIS.RU
Пространственные индексы




WWW.2GIS.RU
Хранилище: А оно нам надо?




WWW.2GIS.RU
Библиотеки и контейнеры


                  • C++: Boost Geometry, GEOS
                  • Python: GeoJango, Shapely
                  • JavaScript: OpenLayers, GeoScript




WWW.2GIS.RU
«Компактность низкая производительность»
            Расставьте запятые




WWW.2GIS.RU
SpatiaLite


              Преимущества:
              • Большой набор геопространственных функций
              • Компактность и простота
              • Кроссплатформенность и переносимость




WWW.2GIS.RU
SpatiaLite


              Недостатки
              • Производительность
              • Масштабируемость




WWW.2GIS.RU
Oracle




WWW.2GIS.RU
MS SQL Server >= 2008


                     • Points, LineStrings, Polygons

                     • Geometry, Geography

                     • Well-Known Text (WKT), Well-Known Binary (WKB)

                     • Intersects, Contains, Crosses, Touches

                     • Distance, Length, Area

                     • Multi-Level Grid Index




WWW.2GIS.RU
MySQL


              • MyISAM, InnoDB, NDB, Archive

              • WKT, WKB

              • Points, LineStrings, Polygons

              • Buffer, Union, Difference и т.д.

              • R-Tree indexes




WWW.2GIS.RU
MySQL


              • Индексы только в MyISAM

              • Только MBR (Minimal Bound Rectangle)

              • Rule-based оптимизатор




WWW.2GIS.RU
PostgreSQL (PostGIS)


                • Поддержка OpenGIS

                • WKB, WKT, GeoJSON, Text, SVG, GML, KML

                • R-Tree индексы

                • Cost-based оптимизатор




WWW.2GIS.RU
НеMnogo О Mongo


              { loc : { lon : 40.739037, lat: 73.992964 } };
              db.places.ensureIndex( { loc : "2d" } );

              db.places.find( { loc : { $near : [50,50] , $maxDistance : 5 } }
              ).limit(20);




WWW.2GIS.RU
НеMnogo О Mongo




              box = [[40.73083, -73.99756], [40.741404, -73.988135]];
              db.places.find({"loc" : {"$within" : {"$box" : box}}});




WWW.2GIS.RU
Neo4J




              • Графовое представление данных
              • Хороший набор инструментов




WWW.2GIS.RU
Sphinx


              • Точки и полигоны

              • Geodist и Contains




WWW.2GIS.RU
Наш опыт: Пробки




WWW.2GIS.RU
Наш опыт: Пробки


              Сбор точек, требования:
              •Schemeless
              •Хорошая производительность на запись
              •Масштабирование
              •Можем позволить себе потерять немного данных




WWW.2GIS.RU
Наш опыт: Пробки




WWW.2GIS.RU
Наш опыт: Пробки




              Расчет пробок, требования:
              •Хороший набор геопространственных функций
              •Высокая скорость выборки данных




WWW.2GIS.RU
Наш опыт: Пробки




WWW.2GIS.RU
Summary


              • Выбирайте геохранилище под
                задачу, анализируя требования
              • Делайте бенчмарки только своих задачах
              • Не бойтесь использовать несколько решений в
                одном проекте
              • Иногда изобретать велосипед – путь наименьшей
                боли и страданий




WWW.2GIS.RU
СПАСИБО ЗА ВНИМАНИЕ!

Идеальное хранилище геоданных для вашего приложения