Клуб API Карт

Базы данных с координатами

Пост в архиве.

И все таки думаю спросить у специалистов о хранении координат в БД!
В голову пришлоdecimal(9,6)
Подумав, что отсеивать по координатам будет сложно(не уверен в этом)

Решил создать поле city! В которую занести код города! Прогнав таблицу допустим из 100 000 записей! Он отсеит быстрей сперва по городу потом уже по координатам!
Возможно я ошибаюсь!

Если это так, то geocode c условием kind не подойдет т. к. рядом много с городами поселков, которые отпадут при запросе!
Как все таки хранить координат в БД?

8 комментариев

Наверное надо хотя бы тип используемой БД указать?

В MySQL есть Spatial extensions, на таблице в 1 млн записей отрабатывает за 1 сек.

К городам привязывайтесь! Ведь за МКАДом жизни нет!

Spatial данные сейчас работают хорошо, но можно использовать или обычные "два float" или целочисленные координаты (домноженные на 10 миллионов, например)

к городам не подойдет! с условием kind: "locality"! появляются много садовых сообществ)

Я хранб координаты меток! и использую пока что MYISAM!

В 3 колонки! serv_id x y! Вообще без ключей) Тип данных demical) думаете spatial лучше отработает?)

Я думаю что MYISAM и decimal это верный путь в АД.

Величины типов DECIMAL и NUMERIC хранятся как строки, а не как двоичные числа

Нужно использовать хардварные типы:INT или FLOAT или Spatial(который флоат)

Про ключи и формы нормальности БД сами почитайте.

Мне не нужна нормальность) У меня чисто таблица с координатами) и id) которые могут повторятся) Для вывода остальной инфы хочу использовать ajax через id формы) Передал метке id) и по клику всю инфу грузить с сервера)

В PostgreSQL есть геометрические типы данны - точки, ломанные, полигоны. Очень много полезных операторов и функций для работы с этими типами. Например, пересекаются полигоны или нет, можно определить прямо в запросе (polygon1 && polygon2).

Спасибо за инфрмацию, но пока разрабатываем не думаем особо над БД! нагрузки появятся сразу будем думать об оптимизации! т. к. главное проект хотя бы в бета выпустить)