1

내 웹 응용 프로그램에는 ~ 150 개의 필드가 있으며 모든 필드 (적어도 하나)에서 값이 변경되면 변경된 값을 저장해야합니다. GAE에 이러한 값을 어떻게 저장해야합니까? 데이터 저장소에 직접 저장해야합니까? 임시로 memcache를 사용하고 데이터 저장소에 모든 값을 한 번에 저장해야합니까? 아니면 다른 접근법을 따라야합니까?GAE에 데이터를 저장하는 데 사용해야하는 것은 무엇입니까?

답변

3

데이터 저장소가 데이터베이스입니다. Memcache는 데이터베이스에 너무 많은 호출을 회피하기 위해 데이터 저장소에서 가져 와서 일시적으로 메모리에 저장된 데이터를 저장하는 것입니다. 먼저 데이터 저장소 주위에 앱을 디자인 한 다음 memcache를 사용하여 성능을 향상시켜야합니다.

프로그래밍 언어 (java, python, go)에 따라 앱의 객체를 데이터 저장소에 매핑하고 memcache를 효과적으로 사용할 수있는 많은 도구가 있습니다.

0

먼저 데이터를 어떻게 사용할 것인지 알아야합니다. 어떤 쿼리를 만들 계획입니까? 엔티티의 크기는 얼마입니까?

Datastore는 관계형 데이터베이스와 매우 다릅니다. 즉, 얼마나 많은 속성이 변경되는지는 중요하지 않습니다. 속성을 자체적으로 업데이트 할 방법이 없기 때문입니다. 엔티티 전체를 저장할 수만 있습니다. 귀하의 유스 케이스에 대해서는 알지 못하지만 하나의 엔티티에 대해 ~ 150 개의 속성을 갖는 것보다 데이터 구조화를위한 더 나은 접근 방법이 있어야합니다. 당신의 유스 케이스는 무엇입니까?

엔티티에 너무 많은 속성이있는 경우 인덱스가 폭발하거나 데이터 저장소 쓰기 속도가 느려질 수 있습니다.

+0

감사합니다. Maxim. 내 사건에 대한 자세한 내용은 여기에서 찾을 수 있습니다 - http://stackoverflow.com/questions/9232438/how-to-protect-gae-server-side-calculation-logic –

0

루트 엔티티에서 엔티티를 분리하고 150 개의 속성 각각을 보유하고있는 링크 된 엔티티를 분리하는 것이 좋습니다.이 방법은 하나의 속성을 업데이트 할 때 하나만 저장하면됩니다. 업데이트는 루트 엔티티에서 작은 엔티티를 거대한 엔티티 대신 데이터 스토어에 반영합니다.

memcache를 사용하면 데이터 스토어로 보낼 데이터를 저장하지 않고 읽기를 방지 할 수 있습니다. Memcache는 플러시 될 수 있으며 영구 저장 장치에 도달하기 전에 데이터가 파괴 될 수 있습니다. , 속성의 그룹이 함께 업데이트 된 데이터 반영 할 수있는 한 단계 더 나아가

- 당신은 항상 거리 함께 우편 번호를 업데이트 할 경우, 말하자면, 그것은 하나의 구조에서 함께 유지하는 의미가 있습니다.

관련 문제