NDB / Google Datastore はビット データ型とサポートする演算子をサポートしていないことに気付きました。
しかし、誰もが回避策を提案していますか。
私のデータはカテゴリのツリーであり、ユーザーは複数のカテゴリを選択できます。理想的な実装は、単一の数値として格納し、一致を見つけるためにビットごとの操作を実行することでした。
また、NDB/Datastore ロードマップを知っている人はいますか? 前もって感謝します。
NDB / Google Datastore はビット データ型とサポートする演算子をサポートしていないことに気付きました。
しかし、誰もが回避策を提案していますか。
私のデータはカテゴリのツリーであり、ユーザーは複数のカテゴリを選択できます。理想的な実装は、単一の数値として格納し、一致を見つけるためにビットごとの操作を実行することでした。
また、NDB/Datastore ロードマップを知っている人はいますか? 前もって感謝します。
ビット単位のサポートが必要な場合は、bitstring が優れたライブラリです (バージョン 2.2 が動作し、パッチが適用されます)。ただし、個々のビットに基づいてクエリを実行することはできず、ビット文字列全体だけをクエリすることはできません。
各ユーザーが選択する可能性のあるカテゴリの数がほんの一握りである場合は、繰り返しプロパティを使用して、カテゴリごとに 1 つのリスト エントリを選択することを検討してください。これにより、簡単なクエリが可能になり、思ったほどクォータを消費しなくなります。
コストの大部分は読み取りと書き込みから発生することに注意してください。毎回取得するエンティティの数を制限する限り、クエリは安価です。その種類のエンティティが 100 であろうと 1,000,000 であろうと関係ありません。
GAE では、データの保存に関して、独創的な考え方が必要です (ここでは、非正規化が良い場合もあります)。クエリとインデックスがどのように機能するかを深く理解できるように、データストアのドキュメントを最初から最後まで読むことをお勧めします。内部でどのように機能するかについての Google I/O プレゼンテーションもあります。
jterrace がほのめかしたように、最適なソリューションの開発に費やされた時間は、効率は劣るがより簡単なソリューションの追加コスト以上のものではないかと考えなければならない場合があります。