Идеальное хранилище геоданных для вашего приложения
description
Transcript of Идеальное хранилище геоданных для вашего приложения
Идеальное хранилище геоданных для вашего
приложения
WWW.2GIS.RU
Пару слово компании 2GIS
WWW.2GIS.RU
Пару слово компании 2GIS
WWW.2GIS.RU
Чего не будет
• Не будем касаться профессиональных GIS
систем
• Не будет сферических бенчмарков в вакууме
• Не скажу какое хранилище идеальное
WWW.2GIS.RUWWW.2GIS.RU
Что будет
• Рассмотрим как обстоят дела с хранением
геоданных
• Определим, как выбрать хранилище
• Поделюсь, как сами храним геоданные
• Отвечу на вопросы, буду рад пообщаться
WWW.2GIS.RUWWW.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
WWW.2GIS.RU
{ loc : { lon : 40.739037, lat: 73.992964 } };db.places.ensureIndex( { loc : "2d" } );
db.places.find( { loc : { $near : [50,50] , $maxDistance : 5 } } ).limit(20);
Не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
СПАСИБО ЗА ВНИМАНИЕ!