malinka
17.01.2012, 11:58:52
Witam,
Zastanawiam się jaki schemat bazy stworzyć. Docelowo będzie tysiące rekordów dla każdego z obiektów. Będzie można w nich wyszukiwać i w zależności od ustawień część będzie pobierana do wyświetlenia, czasem wszystkie, czasem tylko jeden z nich. Sposób wyświetlania będzie też zależał od preferencji użytkownika (osobna tabela na przechowywanie tej relacji, tu nie mam wątpliwości). Każdy z tych obiektów ma podobne pola (typ/przeznaczenie) niektóre mogą mieć więcej/mniej.
Rozważam dwie opcje.
1. Osobne tabelki dla każdego obiektu i potem w PHP pobieranie poprzez UNION - w php tworzenie zapytania w zależności od rodzajów obiektów które mają zostać wyświetlone.
2. Jedna tabelka dla wszystkich i potem w zapytaniu coś ala kind IN()
Które z tych rozwiązań byłoby optymalne? W tej chwili mam 1 opcje, ale 2 jest dużo łatwiejsza w zaimplementowaniu jeśli chodzi o php, bo całość przerzuca się na mysql. Jednak obawiam się czy jak będzie już kilkaset tysięcy rekordów to czy nie będzie to trudniejsze do wyszukiwania jako że może chcieć wyszukiwać np tylko w 3 obiektach, albo nawet 1 a i tak musiałby się przekopać przez wszystkie rekordy, a tak tylko do odpowiednich tabelek by się odwołał. Za każde sugestie, opinie z góry dzięki.
nospor
17.01.2012, 12:02:35
Kilkaset tysięcy to jak pierdnięcie dla mysql. Jedna tabela, +odpowiednie indeksy i po sprawie
malinka
17.01.2012, 12:06:56
no właśnie nie miałam nigdy okazji pracować przy bazie która liczy więcej niż tysiąc rekordów i teraz musze nad takimi rzeczami się zastanawiać.
A czy w przypadku jak dojdzie do kilku milionów też da rade? Nie jestem aż takim optymistą, ale muszę rozważyć taką możliwość.
nospor
17.01.2012, 12:20:19
Też da rade
Tylko zaznaczam: muszą być prawidłowo założone indeksy
malinka
17.01.2012, 12:43:05
ok, dziękuje po stokroć.
indexy planowałam założyć, ale najpierw muszę o nich więcej poczytać. Bo to że to dodatkowe miejsce, powodują wolniejsze wykonywanie się zapytań typu insert, update, delete - to wiem. Tak z ciekawości, bo swego czasu widziałam w jednym miejscu że była stworzona zupełnie nowa tabelka pod wyszukiwanie gdzie były indexy założone na pola tekstowe właśnie. Jest sens? Co prawda, był to zlepek 3 różnych tabeli, ale to akurat powodowało że podczas dodawania do jednej z nich trzeba było robić niezależnie update/insert do tej pod wyszukiwanie, co trochę bezsensu mi się wydaje, ale może jest o czymś o czym nie wiem.
nospor
17.01.2012, 12:48:05
Sytuacja którą opisałeś mogła mieć miejsce np. gdy ktoś chciał robić wyszukiwanie pełnokonktekstowe a miał tabele typu InnoDB. Wyszukiwanie pełnokonktestowe wymaga tabeli MyIsam - dlatego ktoś musiał tworzyć kolejną tabelę na wyszukiwanie. To jedna z przyczyn.
by_ikar
17.01.2012, 12:48:41
Tamte pozostałe tabelki mogły wykorzystywać inny silnik (mechanizm składowania), przykładowo innoDB, żeby móc korzystać z relacji. A w przypadku dodatkowej tabeli, która była miksem tych trzech, ona z kolei mogła wykorzystywać MyISAM aby móc korzystać z wyszukiwania pełnotekstowego.
@UP ubiegłeś mnie ;>
thek
17.01.2012, 12:50:54
Zapewne chodzi o fakt, że tabele główne były na silniky InnoDB. Ten nie ma wsparcia dla Full Text Search (to ma silnik MyISAM), ale za to blokuje tylko na poziomie wiersza przy update/insert oraz ma wsparcie innych mechanizmów. W takim wypadku zrobiono mix obu... Teksty wywalono do jednej z tabel na silniku MyISAM (co pozwala Full Text search użyć), a reszta danych już jest w tabelach InnoDB. Dlatego poczytaj też o róznicach między silnikami, a powinno Ci się kilka tricków rozjaśnić
nospor
17.01.2012, 13:00:47
Cytat
: No tak... kobieta na forum = pomoc aż 3 userów, w tym 2 modów

:D:D
Rany, thek, ty zboku jeden.... malinka to facet. O czym ty myślisz w pracy?
malinka
17.01.2012, 13:05:15
ach. no tak. teraz już kojarzę. teraz to dopiero muszę sobie to przemyśleć. nie tak łatwo jest zaprojektować bazę samemu po raz pierwszy z myślą o wydajności, etc etc. Małe bazy danych to pikuś, ale jeśli mówimy o portalowych rozwiązaniach to tutaj doświadczenie jest przydatne ;o)
dzięki Panowie,
offtop:
thek, czasem dobrze jest być kobietą ;o))) nospor - nie wiem o czym ty myślisz ale jestem kobietą ;oP
nospor
17.01.2012, 13:08:48
Wybacz malinko, ale zmylił mnie Twój męski ton wypowiedzi:
Cytat
Nie jestem aż takim optymistą,
Nie wiem, nie jestem kobietą, ale podejrzewam, ze zazwyczaj kobiety piszą: "Nie jestem aż taką optymistką"

Cytat
"Indexy planowałam", "nie miałam nigdy", "swego czasu planowałam" to odmiana męska?

Hehe, ja sie skupiłem na tekście, który przytoczyłem
malinka
17.01.2012, 13:10:05
czasem mi się to zdarza. to wynik wiecznej pracy/studiów/liceum z praktycznie samymi facetami ;o)
ale
Cytat
"indexy planowałam założyć,"
juz napisałam dobrze ;o)
nospor
17.01.2012, 13:13:04
Cytat
to wynik wiecznej pracy/studiów/liceum z praktycznie samymi facetami
Hehe, ja też dużo czasu przebywam z facetami i jakoś nie mam problemów z poprawnym pisaniem..... joke

Dobra, sorki za zamieszanie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.