0

NDB/Google Datastore는 비트 데이터 유형 및 지원 연산자를 지원하지 않는다는 것을 알고 있습니다.비트 데이터/연산자 구현을위한 디자인 패턴

하지만 누구에게도 대안을 제안하지 않습니다.

내 데이터는 카테고리 트리이며 사용자는 여러 카테고리를 선택할 수 있습니다. 이상적인 구현은 단일 숫자로 저장하고 일치를 찾기 위해 비트와 연산을 수행하는 것이 었습니다.

또한 누구나 NDB/Datastore 로드맵을 알고 있습니까? 미리 감사드립니다.

+1

소리를 지르지 마십시오. 고맙습니다. – bernie

+0

이것은 조숙 한 최적화의 냄새가 난다. – jterrace

답변

1

비트 지원이 필요한 경우 bitstring은 훌륭한 라이브러리입니다 (버전 2.2가 작동하며 patch). 그러나 개별 비트, 전체 비트 스트링 전체를 기반으로 쿼리 할 수는 없습니다.

각 사용자가 잠재적으로 선택할 수있는 범주의 수가 적은 경우 반복 된 속성을 사용하여 선택한 각 범주에 대해 하나의 목록 항목을 고려하십시오. 이렇게하면 쉽게 쿼리 할 수 ​​있으며 생각만큼 할당량을 먹지 않습니다.

대부분의 비용은 읽기 및 쓰기로 인한 것임을 기억하십시오. 매번 가져올 항목의 수를 제한하는 한 검색어는 저렴합니다. 당신이 그 종류의 100000000000 엔티티를 가지고 있다면 그것은 중요하지 않습니다.

GAE는 데이터 저장과 관련하여 기본 생각을 필요로합니다 (여기에서 비정규 화는 때때로 좋은 점입니다). 데이터 저장소 문서를 위에서 아래로 읽으므로 쿼리와 인덱스의 작동 방식을 깊이있게 이해할 것을 권장합니다. 또한 후드 아래에서 작동하는 방법에 대한 Google I/O 프레젠테이션이 있습니다.

jterrace에서 언급했듯이 을 개발하는 데 소요되는 시간이 덜 효율적이지만 더 쉬운 솔루션의 추가 비용 이상인 지 궁금해 할 때가 있습니다.

+0

그리고 하나의 플랫폼에서 최적의 솔루션 인 것처럼 보일 수 있습니다. 포인트 비트 필드 및 appengine의 인덱서 빌리티/검색 가능성에 대한 사례가 다를 수 있습니다. –

+0

Cool Thanks a mil! 반복되는 재산 - 나는 이것을 몰랐다! 시원한! 그게 효과가있어! out-of-the-box 생각에 대해 .. 매우 사실 ... 나는 나이에 대해 정규화 된 SQL 디자인을 해왔다. GAE는 내 마지막에 몇 가지 재 배선이 필요하다. –

+0

반복되는 속성에주의하십시오. 쿼리에 둘 이상의 반복 속성이 포함되어있는 경우 폭발하는 인덱스를 실행할 수 있습니다 (이들은 소리가 나는 것처럼 무섭습니다). [Read more] (https://developers.google.com/appengine/docs/python/datastore/indexes#Index_Limits) – jdiaz5513