2012-02-19 2 views
1

AppEngine 데이터 저장소를 사용하지만, 이것은 불가 지론 일 수 있습니다.데이터 저장 : 속성 값별로 엔티티를 "그룹화"하시겠습니까? (사전 /지도와 같은)

Comment이라는 데이터베이스 엔터티를 가정하십시오. 각 CommentUser에 속합니다. 모든 Comment은 지금까지 꽤 표준 인 date 속성을 가지고 있습니다.

내가 나를 드릴 것입니다 뭔가 싶어 : 데이터 구조 (., 그러나 그것은이 컨텍스트에서 호출해야 파이썬 배경, 용서 해시 테이블,지도에서 오는)를 User를 지정하고 사전 틱을 다시 얻을 수를 :

  • 키 : date에 만들어진 Comments : 모든 dateUser의 의견에
  • 값을 표시.

나는 일정한 범위의 일정을 반복하여이 같은지도를 만들 수 있다고 생각하지만, 여기서 내 자신의 솔루션을 "발명"해야한다는 점을 진지하게 생각합니다.

방법/도구/기법이 있습니까?

답변

2

Datastore는 참조 및 목록 속성을 모두 지원합니다. 이하자 당신은 두 가지 방법으로 일대 다 관계를 구축 :

  1. 부모 (사용자) 아이 엔티티 (코멘트)의 키를 포함하는 목록 속성이 있습니다.

  2. 하위 항목에는 부모를 가리키는 키 속성이 있습니다.

날짜별로 댓글을 제한해야하므로 2 번 옵션을 사용하는 것이 가장 좋습니다. 그런 다음 date = somedate (또는 date range) 및 user = someuserkey가있는 주석을 쿼리 할 수 ​​있습니다.

데이터 저장소에 기본 그룹화 기능이 없으므로 날짜별로 "그룹화"할 수도 있습니다. 날짜에 정렬을 쿼리에 추가 할 수 있습니다. 결과를 반복 할 때보 다 날짜가 바뀌면 그룹 키로 사용/저장할 수 있습니다.

업데이트

더-SQL 데이터베이스를 설계하지 것은 접속 지향 (SQL에서 지향 데이터 모델 대)해야한다 : 가능한 한 자주 사용하는 작업이 싸게 (= 몇 가지 작업 등)에서 데이터를 가져 오는되어야에 대한 .

어림짐작으로서, 한 번의 조작으로 그 순간에 필요한 데이터 만 가져와야합니다 (사용자에게 해당 페이지에 표시됨). 앱의 디자인에 대해서는 잘 모르겠지만 한 번에 모든 사용자의 전체적인 의견 (텍스트 및 모든 것이 필요함)이 필요하다고는 생각하지 않습니다.

+0

실제로 # 2를 수행하면 암시 적으로 # 1을 수행합니다. 즉, 부모 엔티티에 _set 속성을 생성하므로 실제로 두 가지 접근 방식이 다릅니다. 어쨌든, 그래서 바보 같은 반복과 dateit의 변화를 지켜보고 있습니까? 실제로 MapReduce-esque를 기대하고있었습니다. 또는 색인 생성. 오, 그럼. 그러나 나는 계속 볼 것입니다. 나는 더 좋은 것을 원한다. – ntl0ve

+0

아니요, 확실히 Java가 아닙니다. 나는 파이썬을 사용하지 않지만 확실히 그렇지는 않다. 1. 그리고 2. 다른 방향으로 참조를하십시오 : 1. 부모는 자녀를 가리키고, 2. 어린이는 부모를 가리 킵니다. –

+0

지도 축소는 큰 덩어리의 데이터를 처리 (매핑)하고 결과를 생성하는 일부 작업 (축소)을 수행하는 방법에 불과합니다. 주로보고/OLAP 및 고전적인 쿼리가없는 NoSQL 시스템에서 유용했습니다. –

0

나는 파이썬 배경에 대해 사과해서는 안된다는 말로 시작하겠다. App Engine은 Python 만 지원하기 시작했습니다. db 모듈을 사용하면 몇 개의 DailyCommentBatch 엔티티의 부모 인 User 엔티티를 각각의 Comment 엔티티의 부모로 가질 수 있습니다. IIRC, 이것은 관련된 모든 엔티티를 함께 저장 (또는 닫을)합니다.

NDB를 사용하고 있다면 (좋아한다) StructuredProperty를 User 또는 DailyCommentBatch 수준에서 사용할 수 있습니다.

관련 문제