Appengine의 Bigtable에서 테이블이 작동하는 데 어떤 변경이 필요합니까?
-
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이 매우 확장 가능한 데이터베이스 설계를 갖도록 강요한다는 것입니다. 나쁜 편은 당신이 정말로 당신이 정말로 당신의 시간을 낭비한다는 것입니다. 필요 확장 가능한 디자인.
다른 팁
WebService를 통해 Google Appengine Apps의 진정한 SQL 관계형 데이터베이스를 사용할 수 있습니다.
그러한 웹 서비스 중 하나는 rdbhost입니다 http://www.rdbhost.com .
각 페이지보기에는 DB 서버에 대한 또 다른 백엔드 HTTP 페이지 요청이 필요하지만 이미 가지고있는 SQL 설계 지식을 사용할 수 있다는 점에서 타협, 특히 속도가 포함됩니다.