Какие изменения мне нужны, чтобы мои таблицы работали в BigTable от AppEngine?

StackOverflow https://stackoverflow.com/questions/731147

Вопрос

Допустим, у меня есть база данных бронирования, состоящая из Пользователи:

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top