Używam PHP i MySQL dla społecznego systemu pracy nettoco jest najlepszym sposobem na utworzenie dokumentu wewnątrz kolekcji w MongoDB
mam MySQL tabela o nazwie member_feed, w tym stół zapisać pasze dla każdego członka, moja struktura tabeli jest:
|member_feed_id | member_id | content_id | activity_id |
w tej tabeli mam więcej niż 120 milionów rekordów, a każdy członek ma zestaw rekordów.
Obecnie pracuję do migracji z MySQL do MongoDB i jestem nowy na MongoDB. , więc muszę przekonwertować ten tabeli na kolekcja w MongoDB. myślę budować mój kolekcję dla member_feed stole jak:
1- każdym rzędzie od member_feed tabeli jako dokumentu, jak:
{ "member_id: 1" , "content_id: 10" , "activity_id: 1" },
{ "member_id: 1" , "content_id: 11" , "activity_id: 2" },
{ "member_id: 1" , "content_id: 12" , "activity_id: 3" },
{ "member_id: 2" , "content_id: 9" , "activity_id: 4" },
{ "member_id: 2" , "content_id: 11" , "activity_id: 5" },
{ "member_id: 2" , "content_id: 14" , "activity_id: 6" }
więc ta kolekcja będzie miała 120 mln rekord
2- wszystkie kanały członkowskie dla jednego dokumentu o numerze, które mają identyfikator członka i wszystkie kanały dla tego członka.
{
member_id: '1',
feeds: [
{ content_id: '10', 'activity_id' : 1 },
{ content_id: '11', 'activity_id' : 2 },
{ content_id: '12', 'activity_id' : 3 }
]
member_id: '2',
feeds: [
{ content_id: '9', 'activity_id' : 4 },
{ content_id: '11', 'activity_id' : 2 },
{ content_id: '14', 'activity_id' : 6 }
]
}
więc kiedy muszę zobaczyć kanał użytkownika na jego desce rozdzielczej zrobię:
1-dostać wszystko IDS z dokumentu wewnątrz MongoDB jak $contentIdsFromMongo
przez member_id
2- zapytania wykonywania w MySQL aby uzyskać zawartość jak
select * from content where content_id in($contentIdsFromMongo);
i $ contentIdsFromMongo moi mają być 10000 ids, więc ma to wpływ na wydajność MySQL.
i mam MongoDB na serwerze i MySQL na innym serwerze
aw co drugim układzie włożyć dużo rekord dla każdego członka, więc muszę dokument, aby móc wykonać całą operację jak (insert , aktualizacja, wybierz, ..)
co jest najlepszym sposobem, aby stworzyć dokumenty w kolekcji dla każdego członka, i to w ten sposób dobre lub złe dla pracy z MongoDB
Dzięki.
Dzięki za odpowiedź Anuraga, –
Dzięki za odpowiedź Anurag, w moim systemie używam beanstalkd do buszu paszy dla moich członków, więc mam wiele rekordów insertów w każdej sekundzie do mojej tabeli, więc to samo będzie w tabeli MongoDB, więc dane będą rosły obficie iw profilu użytkownika wyświetlam wszystko dla elementu, więc mam zapytanie wyboru i mam również aktualizację zapytania, czy myślisz korzystać z pierwszej opcji. Jeszcze raz dziękuję –
Ok, więc pytania będą wyglądać podobnie - uzyskać wszystkie kanały dla członka, aby można było go wyświetlić na stronie profilu? Jaka jest przybliżona szybkość, z jaką wkładki zdarzają się dla tego samego członka? Na koniec, jak duży jest twój zdaniem dokument, gdybyś miał go na jednego członka? –