2012-06-02 3 views
2

У меня есть приложение, которое работает, ссылаясь на матрицу расстояний. В текущем проекте мы собираем матрицу расстояний из API Google Maps v3, конвертируем их в хэш и сохраняем в локальный текстовый файл.Как сохранить матрицу расстояний в локальной базе данных?

Мои данные состоят из расстояния между одной точки в другую; У меня 5000 очков.

я столкнулся вопросы, связанные с размером. Размер файла уже 250 МБ.

  1. Каков наилучший способ хранения данных такого типа?
  2. Есть ли способ быстро получить эту информацию?
  3. Как искать данные из такого большого списка?
+3

Поскольку данные, которые вы сохраняете на самом деле просто результат некоторого довольно простой Шир/математике, не было бы лучше просто хранить каждую точку в базе данных с его широта/долгота, и вычислить разницу между двумя заданными пункты с этих цифр по запросу? Да, это немного увеличит время загрузки, но весит это против экономии в использовании данных, и я лично считаю, что это того стоит. – DaveRandom

+0

Сколько записей у вас в таблице есть все пространство? Можете ли вы опубликовать схему этой таблицы? Возможно, также образец записей из этой таблицы? –

+0

Ваш комментарий к сообщению с PHP, MySQL, Perl и SQLite. Какая конкретная комбинация технологий используется в приложении? Можете ли вы использовать другие технологии для решения проблемы, например PostgreSQL? –

ответ

1

Я не верю, что Google Terms of Service позволяет хранить их данные. См. 10.1.3 (b):

Вы не должны предварительно извлекать, кэшировать или хранить Контент, за исключением того, что вы можете хранить: (i) ограниченное количество Контента с целью повышения производительности вашего Внедрение API Карт, если вы делаете это временно, надежно и таким образом, чтобы не разрешать использование Контента вне Сервиса; и (ii) любой идентификатор или ключ контента, который специально разрешает хранить в Документах API Карт. Например, вы не должны использовать Контент для создания независимой базы данных из «мест» или другой информации о локальных списках.

«Временный безопасный» магазин, который «не разрешает использование Контента за пределами Сервиса», является в основном кешем браузера. Он может включает локальное хранилище HTML5 в браузере. Он не будет включать в себя какую-либо внешнюю базу данных, которая позволяет использовать данные в другом месте. И 250 МБ вряд ли «ограниченное количество»!

Ничто в документации Distance Matrix переопределяет это положение и позволяет хранить эти данные.

Итак: вы ограничены хранения расстояния прямой линии (если вы не используете геокодер Google, чтобы найти место).

Я не совсем уверен, почему Google является ограничительным это; это, вероятно, результат их собственных лицензий от поставщиков данных.


Так что это не совсем и пессимизм, храня расстояние данных будут нуждаться в таблице с тремя столбцами: origindestination, и distance. Выбор одной строки из 5000 будет быстрым.

Смежные вопросы