Какие изменения мне нужны, чтобы мои таблицы работали в BigTable AppEngine? - PullRequest
4 голосов
/ 08 апреля 2009

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

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

Другими словами, все мои запросы теперь выполняются к одной и той же таблице?

Ответы [ 2 ]

7 голосов
/ 08 апреля 2009

Какие изменения вам нужны, в основном зависит от того, какие запросы вам нужно выполнить, а не от того, какие данные у вас есть. Скорее всего, вам нужно будет добавить только пару вещей.

Составьте список запросов, а затем посмотрите на Ограничения на запросы . После того, как вы нашли проблемные, попробуйте переписать их с учетом ограничений BigTable.

Например, если вам часто нужно найти количество билетов для списка рейсов, вы не сможете просто:

SELECT
    flight_no, COUNT(*)
FROM
    flights
JOIN
    tickets ON tickets.flight_no = flights.flight_no
GROUP BY
    flight_no

Таким образом, вам нужно добавить счетчик билетов к flights и увеличить / уменьшить его при создании / удалении билетов.

Хорошая сторона этого в том, что BigTable заставляет вас иметь очень масштабируемый дизайн базы данных. Плохая сторона в том, что это тратит впустую большую часть вашего времени, когда вам на самом деле не нужно масштабируемый дизайн.

1 голос
/ 17 августа 2009

Вы можете использовать подлинные реляционные базы данных SQL из приложений Google appengine через веб-сервис.

Одним из таких веб-сервисов является Rdbhost, по адресу http://www.rdbhost.com.

Он предполагает свои компромиссы, особенно скорость, в том, что для каждого просмотра страницы требуется еще один внутренний запрос http-страницы на сервер БД, но он позволяет вам использовать уже имеющиеся у вас знания SQL-дизайна.

...