2012-02-23 13 views
5

Pytanie ma dwie strony.Której bazy danych należy użyć do śledzenia statystyk i archiwizowania wiadomości e-mail wysyłanych za pośrednictwem PHP

  1. Obsługujemy wiele plików statycznych do publicznego pobrania. Pliki PDF, zamki, obrazy, ludzie pobierają tysiące każdego każdego dnia. Śledzimy liczniki w naszej bazie danych MySQL, a szczegóły są śledzone w MongoDB (szczegóły, takie jak miejsce pochodzenia i czas pobierania).

  2. Wysyłamy dużo e-maili za pośrednictwem PHP. Nasza aplikacja wysyła co miesiąc setki tysięcy e-maili, z których wiele to newslettery, powiadomienia i zaproszenia do projektów. Te wysyłane e-maile są zapisywane w bazie danych MySQL z zewnątrz ich istotne dane w odcinkach (nigdy organ lub rzeczywista zawartość e-mail, tylko nagłówki, odbiorca, czas wysłania itp)

Czy MySQL jest ok wyborem do tego? Czy Mongo? Czy powinniśmy użyć czegoś innego? Obecnie zarówno tabela archiwów e-maili, jak i tabela statystyk pobierania szybko osiągają 2 GB.

Uwaga: Dane, które przechowujemy, są dostępne regularnie, więc nie można o tym pamiętać. Korzystamy ze statystyk pobierania, aby powiadomić autorów treści, że liczba ich pobrań osiągnęła X, i używamy archiwum wiadomości e-mail do sprawdzania statusu dostawy itp. I wyświetlania go naszym pracownikom, którzy śledzą to na bieżąco. (używamy Sendgrid do dostarczania danych)

+0

+1 Normalnie chciałbym głosować, aby zamknąć, która technika to lepsze pytania, ale przyszedł z wyraźnym określonym problemem. Mam nadzieję, że otrzymasz odpowiedzi. – cspray

+0

Dzięki, starałem się unikać niejasności i subiektywności, jest to dla mnie bardzo ważne i nie mam pojęcia, jak inaczej o to zapytać. – Swader

Odpowiedz

1

Myślę, że mysql może dobrze służyć twojemu celowi. jest bardziej elastyczny w Internecie, do śledzenia logu można użyć silnika mysql ARCHIVE db. mysql ma różne silniki db dla różnych celów. Myślę, że archiwum najlepiej pasuje do twojej struktury.

w ostatnim czasie zarządzam bazą danych mysql o pojemności 60 GB. była to baza danych o dużej skali, a wydajność jest dobra.

+0

Wybrałem to jako najlepszą odpowiedź, ponieważ lubię być w stanie przechowywać wszystko w jednej bazie danych - silnik Archiwum służy temu celowi. Dziękuję Ci. Odpowiem, jeśli mam jakieś inne ustalenia, ale na razie to się stanie. Przesłuchanie, że masz 60 GB, jest bardzo motywujące, co powinno nam zająć trochę czasu. – Swader

1

Moje dwa centy:

Jest to plotka dzieje wokół, że MySQL nie skaluje się bardzo dobrze z liczbą wierszy w tabeli, a PostgreSQL zarządza dużych tabel znacznie lepiej pod względem wydajności. Zdecydowanie wolałbym używać PostgreS do aplikacji z ogromnymi tabelami. (Jednak this article mówi, że ważniejszy jest sposób definiowania i korzystania z bazy danych, niezależnie od wybranego systemu.)

Jeśli czujesz się żądny przygód i chcesz zrobić coś bardziej nowoczesnego i rozproszonego, być może zajrzyj do mola i ula, które w tym samym czasie może również rozwiązać problem przechowywania dużych plików, ale wymaga nauki nowych rzeczy.

+0

Dziękuję, ale nie sądzę, że ten artykuł odnosi się do tych czasów. Ma 6 lat, a od tego czasu zarówno MySQL, jak i Postgre znacznie się rozwinęły. Mamy kilka tabel z ponad milionem rekordów i dobrze się z nimi obchodzą, ale przechowują o wiele mniej danych w każdym polu niż archiwum e-mail - ten wzrost jest tym, co mnie martwi – Swader

1

Porozmawiam trochę z kawałkiem MongoDB. Zakładam, że korzystasz ze sklepu MongoDB, aby szybko uzyskać dostęp do danych, a może do danych, które możesz rozpalić i zapomnieć, ale dobrze jest mieć je przy uruchamianiu raportów. Kluczem do szybkiego utrzymywania instancji MongoDB (oprócz efektywnych, wydajnych indeksów i odpowiednich zapytań, oczywiście) jest upewnienie się, że twój zestaw danych roboczych mieści się w pamięci RAM.

Ogólny rozmiar danych jest mniejszy z punktu widzenia wydajności, może być wiele, wiele razy większy od zestawu roboczego bez problemu. Miej oko na rozmiar pamięci rezydentnej (MMS jest tam twoim przyjacielem) i bądź przygotowany na odłamki, jeśli zaczniesz wykazywać tendencję do przekraczania górnych granic twojego sprzętu.

2 GB nie jest tak duże jak na zestaw danych Mongo, ani nawet na działający zestaw danych. Widziałem rozmiary danych działające w zakresie wielu terabajtów. Na podstawie podanych informacji uważam, że wybór MongoDB jest w porządku w najbliższej przyszłości.