Pomyślmy o jednym-wielu na chwilę; jeśli chcesz obiektowi do „ma wiele” object śniadaniem, istnieją tylko dwa sposoby, aby to zrobić:
relacyjny sposób: zrobić każdy punkt B na A. Gdy masz A0 i chcą wszystko Bs, które odnoszą się do niego, po prostu zapytaj o Bs, które wskazują na dane A0.
Sposób NoSQL/ObjectStore: make A ma pole zawierające listę wskaźników (Keys) do B-ów. Zauważ, że ten sposób pozwala również B-ów być w określonej kolejności (mimo docs GAE/Java przeciwnie.)
Który z nich jest najlepszy zależy. Sposób ObjectStore jest ograniczony przez rozmiar obiektu. Relacyjny sposób podlega subtelnemu problemowi polegającemu na tym, że jeśli A i wszystkie B znajdują się w tej samej Grupie Jednostek, a Ty wykonujesz Zapytanie Przodków w Transakcji (a może nawet, jeśli nie jest to w Transakcji), masz gwarancję, że dostaniesz wszystkie z Bs, które wskazują na to A. Jednakże, jeśli grupy jednostek A i Bs są w stanie (choć być może mało prawdopodobne), że otrzymasz B, który nie spełnia predykatu zapytania, lub przegapisz B, który robi : https://developers.google.com/appengine/articles/transaction_isolation
W (obecnie standard) Wysokiej Replikacja magazynu danych, transakcja zazwyczaj stosowana jest całkowicie w ciągu kilkuset milisekund po powrocie popełnić. Jednak, nawet jeśli nie zostanie zastosowane, wszystkie kolejne odczyty, zapisy i zapytania przodków zawsze będą miały wartość odzwierciedlającą wyniki zatwierdzenia, ponieważ te operacje zastosują wszelkie niezastąpione modyfikacje przed wykonaniem.Jednak zapytania, które obejmują wiele grup encji, nie mogą określić, czy istnieją jakieś niezapisane modyfikacje przed wykonaniem i mogą zwrócić nieaktualne lub częściowo zastosowane wyniki.
Teraz dla wielu osób: czytałem historię, która kiedyś opisywała chodzenie do toalety w kosmosie; były cztery kombinacje: wewnątrz/na zewnątrz statku kosmicznego i dwa rodzaje chodzenia do toalety. Dla ostatniej kombinacji bycia poza statkiem (w skafandrze kosmicznym) i eliminacji brył, jedyną odpowiedzią było "nie ma żadnej zgrabnej drogi" (także tytuł artykułu): http://settlement.arc.nasa.gov/CoEvolutionBook/SPACE.HTML#There Nie jest to żadna Łaskawa Droga . .. i jest to również odpowiedź na wiele-wiele relacji w GAE. Można je zbudować za pomocą klasy join, a każda strona sprzężenia może zostać zaimplementowana za pomocą kwerendy lub listy kluczy.
można wyjaśnić w jaki sposób realizowane swoje dołączać do zajęć? Obawiam się o wydajności, jeśli mam tysiące elementów na liście relatedIds, szczególnie gdy potrzebuję pobrać wszystkie obiekty, na które wskazuje relatedIds na raz (co może być wspólne dla mnie) – sanity