관계형 데이터베이스 세계에서 왔으며이 데이터 스토어를 찾았습니다. 그것을 끊는 데 며칠이 걸렸습니다. 내 소견 중 일부가 있습니다.
Datastore가 확장 가능한 빌드이며 RDMBS와 분리 된 것임을 이미 알고 있어야합니다. 대규모 데이터 세트로 확장 성을 높이기 위해 App Engine은 일부 변경을 수행했습니다 (일부는 많은 변경을 의미 함).
RDBMS VS DataStore
구조
데이터베이스에서는 일반적으로 데이터를 Datastore에있는 Tables, Rows로 구성 합니다. Kinds and Entities가 됩니다.
관계
RDBMS에서 대부분의 사람들은 일대일, 다 대일, 다 대다 관계를 다음과 같이 처리합니다. 데이터 저장소에서 "조인 없음"항목이 있기 때문에 " ReferenceProperty를 사용하여 정규화를 달성 할 수 있습니다. "예 : 일대일 관계 예 .
인덱스
일반적으로 RDMBS에서는 기본 키, 외래 키, 고유 키 및 인덱스 키와 같은 인덱스를 만들어 검색 속도를 높이고 데이터베이스 성능을 향상시킵니다. 데이터 저장소에서데이터 저장소는 이러한 인덱스를 기반으로 엔티티를 검색하고 가장 중요한 부분이라고 생각하기 때문에종류별로 적어도 하나의 인덱스를 작성해야합니다 (원하는지 여부를자동으로 생성 함 ). RDBMS에서는 다음을 사용하여 검색 할 수 있습니다. 색인이 아닌 필드는 시간이 걸리지 만 시간이 걸립니다. Datastore에서는 인덱스가 아닌 속성을 사용하여 검색 할 수 없습니다.
카운트
가 계산하는 것이 훨씬 쉽다에서는 RDMBS를 (*)하지만, 데이터 저장소, (그래 카운트 기능이) 정상적인 방법으로 그것을 생각도하지 말아주십시오이있다으로 1000 제한 하고 많이 비용이 작은 opertion 엔티티로하는 좋지는 않지만 항상 좋은 선택이 있습니다 . 샤드 카운터를 사용할 수 있습니다 .
고유 한 제약
RDMBS에서이 기능이 마음에 드십니까? 그러나 데이터 스토어에는 고유 한 방법이 있습니다. 속성을 고유 :(.)로 정의 할 수 없습니다.
Query
GAE Datatore 는 GQL 인 LIKE (Oh no! datastore에 LIKE 키워드가 없음) SQL 보다 훨씬 나은 기능을 제공합니다 .
데이터 삽입 / 업데이트 / 삭제 / 선택
RDMBS와 마찬가지로 RDBMS와 마찬가지로 삽입, 업데이트, 삭제 및 선택에 대한 쿼리가 하나 필요합니다. 데이터 스토어는 데이터 스토어가 있기 때문에 데이터를 저장, 삭제, 가져 오기 (너무 흥분하지 않습니다) 쓰기, 읽기, 소규모 작업 ( 데이터 스토어 호출에 대한 읽기 비용 ) 및 데이터 모델링이 적용되는 측면에서 넣거나 가져 옵니다. 이러한 작업을 최소화하고 앱을 계속 실행해야합니다. 읽기 작업 을 줄이기 위해 Memcache 를 사용할 수 있습니다 .