![]() |
Antar att det inte finns något max antal tabeller man kan lägga i en databas, men finns det fördelar att dela upp tabellerna över flera databaser? Något som hör till praxis? Hur många tabeller har ni i en databas, ungefär?
|
Mig veterligen finns det ingen fördel rent prestandamässigt att dela upp tabeller på flera databaser. Den enda fördelen jag kan se är att man möjligtvis får en överskådligare struktur om man nu har väldigt mycket tabeller.
Har haft alltifrån 1 tabell till 80-100st per databas. Ibland på flera platformar som man jobbar mot parallelt/samtidigt i samma applikation. Då gäller det att man har ett bra databasschema över vad alla tabeller innehåller, deras struktur osv :P |
Citat:
Jag tror knappast att Mysql skulle prestera bättre genom att skapa tabellerna i olika databaser. Har du så extrema krav så kanske du ska tänka på en "riktig" databasmotor såsom Sybase och Oracle. Både med Sybase och Oracle kan du styra vilka "lagringsskluster" en viss tabell ska läggas på. Ett lagringskluster kan i sin tur ligga på separata diskar/arrayer för bättre prestanda. /Zoran |
Jag har över 1400 tabeller i en databas, och den klagar inte.. ;)
|
Citat:
Citat:
|
Här är en kanonbra (verkligen) url från linköpings universitet som hänger ihop lite med databaskursen som går här:
http://www.ida.liu.se/~tompa/databaser/index.html |
Citat:
Nej, men ännu bättre. http://www.ida.liu.se/~tompa/databaser/ Det är en sida gjord av en mycket kompetent man. Jag tycker att den är lättförstålig och lätt att läsa. |
Citat:
Det luktar dålig design, men det behöver inte vara så. Låt mig förtydliga. Att manuellt skapa 1400 tabeller är ett ...vetes jobb. Förrutom om man inte använder skript. Använder man skript så antar jag att de flesta tabeller har samma typ av data. Har man samma typ av data i olika tabeller, så luktar det dålig design. Så upplys mig gärna. /Zoran |
Åh, jo det var bra. Tack grazzy och zoran för länken.
|
Citat:
EDIT: ett alternativ är förstås att ha en gigantisk tabell, med ett extra fält som är instrumentets namn. Tycker dock att detta skulle göra databasen väldigt svåröverskådlig och är tveksam om det är några prestandamässiga fördelar heller. |
Nå zoran, du frågade. Dålig design eller ej?
|
Citat:
Det tycker jag iaf låter mer överskådligt än att ha 1000+ tabeller. |
Citat:
Datum Högst Lägst Stängningskurs Omsättning Instrumentets (oftast aktiens) namn finns i tabellens namn. Varje post är kursdata för en dag, från 1995 till idag. Hur lägger jag upp det på något bättre och fortfarande överskådligt sätt? Jag har även några tabeller med annan typ av data, där instrumentnamnet ligger i ett fält. Men där finns inte tidsdimensionen. |
Två tabeller,
instrument {id, namn} data {instrument_id, resten_av_datan, ..., ... etc } Jag kanske har missat nåt viktigt här dock? |
Citat:
|
I princip inte. Dina index måste vara korrekta dock.
|
Citat:
|
Citat:
|
Citat:
Egentligen är det kanske tillsynes överskådligt. Men tabellnamnen måste hårdkodas i applikationen eller någon algoritm, för att beräkna tabellnamnen, skapas. Det kanske fungerar jättebra idag, men imorgon när du behöver ändra något är det plötsligt mycket svårare. Ditt skript eller du själv måste hålla reda på olika tabellnamn/instrumet. Dvs. du eller ditt skript gör det jobbet som databasmotorn är designad för. Jag vet inte riktigt varför du tycker att det är jobbigt att lägga in en "where id=x" i dina querys. Sen vet jag inte hur du kan tycka att det är överskådligt att "show tables" i mysql returnerar 1400 rader. Om du dessutom råkar ha en rad data i varje tabell så har du ökat din datalagring med sisodär 200-300%, eftersom för varje rad data måste du lagra info om fälten som egentligen skulle kunna delas av alla tabeller. Hursomhelst, den bästa metoden NI kan använda är ju naturligtvis den metoden som fungerar för er och den metoden ni har arbetsprocesser för. Objektivt sett är ni ute och cyklar en smula. /Zoran |
Citat:
Så länge du kan "gissa" hur din tabell ska heta är det fint. Vad händer när "styrelsen" beslutar att en instrument foo ska heta foo_a eller liknande. Det kanske inte tillämpar just här, men i andra lägen. Man är i princip låst. Har man en tabell där man lagrar ID, och sen attributen för det id-et, och sen data i en annan tabell som man knyter till ID-et i den första, gärna med foreign keys med "on update cascade on delete cascade", så kan du göra en ändring i datat helt transparant för din applikation. Skulle man plötsligt få för sig att ändra nomenklaturen i första fallet måste du hacka om din applikation för att det ska fungera. /Zoran |
Citat:
Du får ursäkta, men jag tänker fortsätta göra på det sätt som är enklast för mig. :) Mitt inlägg här var aldrig någon fråga om att lösa ett problem, för det är inga problem. Det var bara en upplysning att det går utmärkt att ha många tabeller om det skulle behövas. |
Alla tider är GMT +2. Klockan är nu 08:08. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson