6

Chcemy zaimplementować "kanał informacyjny", w którym użytkownik może zobaczyć wiadomości nadane przez jej przyjaciół, posortowane najpierw najnowszą wiadomością. Jednak kanał musi odzwierciedlać zmiany na liście znajomych. (Jeśli doda nowe znajomy , wiadomości z nich powinny być zawarte w kanale, a jeśli usuwa przyjaciół, ich wiadomości nie powinny być dołączone.) Jeśli użyjemy przykładu pubsub-test i dołączymy listę adresatów do każdej wiadomości oznacza to wiele manipulacji list odbiorców wiadomości, gdy użytkownicy łączą się i rozłączają znajomych.Jak modelować kanał wiadomości społecznościowych w Google App Engine

Najpierw modelowaliśmy "wypuszczanie" z subskrypcji do subskrypcji przy użyciu konwencjonalnego myślenia RDBMS . Początkowo wydawało się, że działa, ale potem, ponieważ operator IN działa tak, jak to robi, szybko uświadomiliśmy sobie, że nie możemy kontynuować tej ścieżki na . Znaleźliśmy Brett Slatkin's presentation from last years Google I/O i obejrzeliśmy go już kilka razy, ale nie jest dla nas jasne, jak to zrobić z "dynamicznymi" listami odbiorców.

Potrzebujemy kilku wskazówek, jak "myśleć" podczas modelowania tego.

Odpowiedz

3

Wklejanie odpowiedź dostałem na to pytanie w Grupie Google dla Google App Engine http://groups.google.com/group/google-appengine/browse_thread/thread/09a05c5f41163b4d# Przez Ikai L (Google)

Kilka myśli tutaj:

  • jest usuwanie znajomych wspólne wydarzenie? podobnie, czy dodanie znajomych jest częstym wydarzeniem? (Wszystko jest względne, względem „czyta” z kanału informacyjnego)

  • z tego co pamiętam, to jedyny sposób, aby ciężki czyta skala jest napisać dotyczące danych wielokrotnie w ludowej strumieni. Świergot robi to z tego, co pamiętam, używając "ostatecznie spójnego" modelu " ". Dlatego Twój kanał nie będzie aktualizowany przez kilka minut, gdy jest obciążony ciężkim ładunkiem . Ogólny konsensus jest jednak taki, że relacyjny, znormalizowany model po prostu nie zadziała.

  • Silnik Jaiku jest open source do badania: http://code.google.com/p/jaikuengine. To działa na App Engine Hope te pomóc, gdy myślisz o projekcie.