문제

Google App Engine이 조인이 허용되지 않기 때문에 웹 앱에서 모든 테이블을 가져 와서 하나의 거대한 테이블로 결합하는 방법을 알아 내야합니까?

도움이 되었습니까?

해결책

DBMS에서 구현 한 조인이 없다고해서 여러 테이블을 가질 수 없다는 의미는 아닙니다. 앱 엔진에서는이를 '엔티티 유형'이라고하며 원하는만큼 가질 수 있습니다.

일반적으로 빈번한 조인이 필요하지 않도록 데이터를 비정규로 만들어야합니다. 불가피한 몇 가지 상황에서는 사용자 코드에 가입하는 것과 같은 다른 기술을 사용할 수 있습니다.

다른 팁

하나의 큰 테이블에 결합하는 것은 항상 옵션이지만, 대부분의 시간 동안 불필요하게 크고 중복성 테이블이 발생하므로 앱이 느리고 유지 관리가 어려워집니다.

쿼리 결과를 반복하고 첫 번째 쿼리에 대해 찾은 각 결과에 대한 두 번째 쿼리를 실행하여 조인을 모방 할 수도 있습니다. SQL 쿼리가있는 경우

SELECT a.x FROM b INNER JOIN a ON a.y=b.y;

당신은 다음과 같이 이것을 모방 할 수 있습니다.

for b in db.GqlQuery("SELECT * FROM b"):
  for a in db.GqlQuery("SELECT * FROM a WHERE y=:1", b.y):
    print a.x

당신이 데이터 가능을 설계하는 방법을 찾고 있다면. 작업을 시작하기 전에 약간의 연구를하는 것이 좋습니다. Google App Engine에는 다음과 같은 꽤 마법의 속성이 있습니다.

  • 자기 관리
  • 다중 값 목록 속성

그것은 당신의 디자인에 매우 도움이 될 것입니다. 나는 공유했다 내 경험.

스케일 가능성에 대해 배우려면 독점이 있습니다 Udacity의 무료 코스 그냥 주제에. Reddit.com의 창립자가 가르치고 있으며 방문자 수가 가장 많은 사이트 중 하나 인 Reddit에서 발생하는 전체 스케일링 작업을 명확하게 설명합니다. 그는 GAE에서 전체 코스 데모 구현을 보여줍니다 (그리고 그것은 저에게 잭팟이었습니다!). 그들은 전체 코스 비디오를 제공합니다 여기에서 무료로 다운로드 할 수 있습니다 . 이 리소스를 얻기 전에 App Engine으로 열심히 먹었습니다. 그래서 나는 이것을 공유하는 것이 물에서 발을 밟고있는 다른 사람들에게 도움이 될 것이라고 생각했습니다.

관계형 데이터베이스에서 App Engine Datastore로 전환하려면 데이터를 모델링 할 때 개발자에게 패러다임 전환이 필요합니다. 구경하다 여기 더 나은 아이디어를 얻으려면. 이를 위해서는 데이터 스토어가 부과하는 제약 조건에 문제를 장착하는 방법에 대해 더 많이 생각해야하지만, 가능하면 빠르게 실행되고 확장 될 것이라고 보장받을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top