Moje doświadczenia z bazami danych dotyczą dość małych aplikacji internetowych, ale teraz pracuję z zestawem danych dotyczących wyborców dla całego stanu. Jest około 3,5 miliona wyborców i będę musiał zrobić sporo raportów na ich temat, biorąc pod uwagę ich adres, historię głosowania, wiek itp. Aplikacja internetowa będzie napisana z Django, więc mam kilka opcji wyboru bazy danych, w tym MySQL i PostgreSQL.Czy MySQL jest odpowiedni dla ciężkiej bazy danych o wielkości 3,5 m + wiersze? Jeśli tak, to jaki silnik?
W przeszłości prawie używałam MySQL, ponieważ był on tak łatwo dostępny. Zdaję sobie sprawę, że 3,5 miliona rzędów w tabeli to naprawdę niewiele, ale jest to największy zestaw danych, z którym osobiście współpracowałem, więc nie znajduję się w mojej osobistej strefie komfortu. Ponadto ten projekt nie jest aplikacją typu "throw-away", więc chcę mieć pewność, że wybiorę najlepszą bazę danych do pracy, a nie tylko tę najbardziej wygodną.
Jeśli MySQL jest odpowiednim narzędziem do pracy, chciałbym również wiedzieć, czy używanie InnoDB lub MyISAM ma sens. Rozumiem podstawowe różnice między tymi dwoma, ale niektóre źródła podają użycie MyISAM dla prędkości, ale InnoDB, jeśli chcesz "prawdziwą" bazę danych, podczas gdy inni mówią, że wszystkie nowoczesne zastosowania MySQL powinny używać InnoDB.
Dzięki!
+1 - moje uczucia dokładnie. Nie używam MyISAM, chyba że mam ku temu konkretny powód. Jest bardzo zdolny, zwykłem pracować z tabelami z 20 milionami + rekordów bez żadnych problemów, ale możliwości transakcyjne InnoDB zwykle przewyższają wszelkie różnice w wydajności, które prawdopodobnie będą potrzebne, dopóki nie napotkasz określonych problemów z wydajnością. – zombat
Dzięki Tim! Czy mogę poprosić o rozwinięcie "dokładnie nastroić swoje indeksy"? Dostaję cel indeksów, ale nie jestem pewien, co to jest kompromis - tzn. Dlaczego nie wszystko indeksować. Jestem też nieco zdezorientowany tym, co to znaczy dostroić indeks - byłem pod wrażeniem, że zdecydowałeś się zaindeksować kolumnę lub nie i to było to. –
Podczas tworzenia indeksu dodajesz dodatkowe obciążenie podczas wykonywania wstawek (niewiele, tylko trochę, ale się sumuje). Jeśli zindeksujesz wszystko, to może naprawdę spowolnić działanie. Indeksy mogą być oparte na jednym polu, pierwszych N bajtów (lub znaków) pola lub co najmniej dwóch polach. Musisz pracować z narzędziem "wyjaśnij zapytanie" i przetestować system, aby znaleźć najlepszą mieszankę dla danego zestawu danych i wyszukiwań, które zwykle uruchamiasz. Sprawdź dokumentację mysql tutaj: http://dev.mysql.com/doc/refman/5.0/en/create-index.html, aby uzyskać więcej informacji. –