dump-2012 - Базы данных - "Идеальное хранилище геоданных...
DESCRIPTION
TRANSCRIPT
Идеальное хранилище геоданных для вашего
приложения
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
СПАСИБО ЗА ВНИМАНИЕ!