Какие изменения мне нужны, чтобы мои таблицы работали в BigTable от AppEngine?
-
06-09-2019 - |
Вопрос
Допустим, у меня есть база данных бронирования, состоящая из Пользователи:
user_id
fname
lname
и их Билеты
ticket_id
user_id
flight_no
и связанные полеты
flight_no
airline
departure_time
arrival_time
Что мне нужно изменить, чтобы переместить этот Google AppEngine?
Я понимаю AppEngine не допускает объединения.
Означает ли это, что моя таблица должна превратиться в одну большую кучу полей, собранных воедино?
бронирования:
user_id
fname
lname
ticket_id
flight_no
airline
departure_time
arrival_time
Другими словами, все мои запросы теперь выполняются к одной и той же таблице?
Решение
Какие изменения вам нужны, зависит в основном от того, какие запросы вам нужно выполнить, а не от того, какие данные у вас есть.Скорее всего, вам нужно будет добавить всего пару вещей.
Составьте список запросов, а затем взгляните на Ограничения на запросы.После того как вы нашли проблемные из них, попробуйте переписать их с учетом ограничений BigTable.
Например, если вам часто нужно найти количество билетов на список рейсов, вы не сможете просто сделать:
SELECT flight_no, COUNT(*) FROM flights JOIN tickets ON tickets.flight_no = flights.flight_no GROUP BY flight_no
Таким образом, вам нужно будет добавить счетчик билетов в flights
и увеличивайте / уменьшайте это при создании / удалении билетов.
Хорошей стороной этого является то, что BigTable вынуждает вас иметь очень масштабируемый дизайн базы данных.Плохая сторона заключается в том, что это отнимает уйму вашего времени, когда вы на самом деле не потребность масштабируемый дизайн.
Другие советы
Вы можете использовать подлинные реляционные базы данных SQL из приложений Google appengine через веб-сервис.
Одним из таких веб-сервисов является Rdbhost, на http://www.rdbhost.com .
Это сопряжено со своими недостатками, в частности со скоростью, поскольку для каждого просмотра страницы требуется еще один внутренний HTTP-запрос страницы к серверу БД, но это позволяет вам использовать уже имеющиеся у вас знания в области проектирования SQL.