Uk:Rails port/Database schema

From OpenStreetMap Wiki
Jump to navigation Jump to search

Ця документація в першу чергу призначена розробникам. Тут йдеться про те, як різні таблиці бази даних пов'язані одна з одною в застосунку OpenStreetMap rail (rails port). База даних зберігає всі дані, що безпосередньо стосуються роботи сайту https://openstreetmap.org/ та API, та найважливіше – таблиці для геоданих, які містять дані примітивів OSM (точок, ліній, зв'язків, їх теґи й так далі) разом з історією змін.

Зміни схеми періодично здійснюються у формі "міграцій" (rails "migrations"), тому опис міграцій у git слід розглядати як "єдине справжнє джерело" для опису схеми. Насправді, принаймні теоретично, немає потреби заглиблюватися основну схему бази даних, оскільки взаємодія коду в застосунку rails відбувається через моделі rails (ActiveRecord), а взаємодія з даними інструментами сторонніх розробників відбувається через API. Однак, якщо ви займаєтесь розробкою використовуючи власний сервер для тестування, вам може бути корисно знати, з яких компонентів складається база даних.

Останню версію схеми бази даних можна знайти в репозиторії git порту Rails.

ER діаграму схеми RailsPort станом на грудень 2014 року можна подивитись тут. Актуальна схема наведена на зображені нижче.

Таблиці

Таблиці з геоданими

База містить два комплекти таблиць з примітивами даних OSM: основні таблиці та таблиці з поточними версіями примітивів.

Поточні таблиці (такі які 'current_nodes', 'current_ways', 'current_relations') містять останню версію даних, які використовується для створення мап. Основні таблиці містять всю історію змін. Також поточна версія даних міститься в основних таблицях.

Значення широти та довготи зберігаються у вигляді збільшених цілих чисел з коефіцієнтом масштабування 1e7, тому ціле значення широти -412870685 дорівнює широті -41.2870685.

Діаграма

ERD of OSM DB.svg