<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:content="http://purl.org/rss/1.0/modules/content/"
 xmlns:atom="http://www.w3.org/2005/Atom"
>
	<channel>
		<copyright>Copyright 1998 - 2026 DPG Media B.V.</copyright>
		<pubDate>Fri, 22 May 2026 16:37:50 GMT</pubDate>
		<lastBuildDate>Fri, 22 May 2026 16:37:50 GMT</lastBuildDate>
		<description>GoT - list_messages</description>
		<image>
			<link>https://gathering.tweakers.net/</link>
			<title>Gathering of Tweakers</title>
			<url>https://tweakers.net/g/if/logo.gif</url>
		</image>
		<language>nl-nl</language>
		<link>https://gathering.tweakers.net/rss/list_messages/1240436</link>
		<atom:link href="https://gathering.tweakers.net/rss/list_messages/1240436" rel="self" type="application/rss+xml" />
		<title>[DB-Design] Meerdere kleine vs 1 grote tabel - Softwareontwikkeling - GoT</title>
		<webMaster>gathering@tweakers.net (Administrator)</webMaster>
		<item>
			<title>MisterBlue</title>
			<link>https://gathering.tweakers.net/forum/list_message/28684714#28684714</link>
			<description>[quote]Volgens mij is verreweg de meeste bedrijfsmatig ingezette software bedrijfskritisch. Onzin? Ga maandag even langs bij wat systemen op je werk en trek even wat stekkers uit de systemen. Ga dan maar eens kijken hoeveel ellende dat veroorzaakt.[/qoute]

Ja, gebruikers raken van slag omdat ze nu anders moeten werken. Als het een week duurt, heeft men er om heen gewerkt en blijkt dat men het met de helft van de systemen ook kan doen.</description>
			<content:encoded><![CDATA[[quote]Volgens mij is verreweg de meeste bedrijfsmatig ingezette software bedrijfskritisch. Onzin? Ga maandag even langs bij wat systemen op je werk en trek even wat stekkers uit de systemen. Ga dan maar eens kijken hoeveel ellende dat veroorzaakt.[/qoute]<br>
<br>
Ja, gebruikers raken van slag omdat ze nu anders moeten werken. Als het een week duurt, heeft men er om heen gewerkt en blijkt dat men het met de helft van de systemen ook kan doen.]]></content:encoded>
			<dc:creator>MisterBlue</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28684714#28684714</guid>
			<pubDate>Thu, 06 Sep 2007 05:35:20 GMT</pubDate>
		</item>
		<item>
			<title>EfBe</title>
			<link>https://gathering.tweakers.net/forum/list_message/28623172#28623172</link>
			<description>Volgens mij is verreweg de meeste bedrijfsmatig ingezette software bedrijfskritisch. Onzin? Ga maandag even langs bij wat systemen op je werk en trek even wat stekkers uit de systemen. Ga dan maar eens kijken hoeveel ellende dat veroorzaakt.</description>
			<content:encoded><![CDATA[Volgens mij is verreweg de meeste bedrijfsmatig ingezette software bedrijfskritisch. Onzin? Ga maandag even langs bij wat systemen op je werk en trek even wat stekkers uit de systemen. Ga dan maar eens kijken hoeveel ellende dat veroorzaakt.]]></content:encoded>
			<dc:creator>EfBe</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28623172#28623172</guid>
			<pubDate>Sun, 26 Aug 2007 09:15:03 GMT</pubDate>
		</item>
		<item>
			<title>edeboeck</title>
			<link>https://gathering.tweakers.net/forum/list_message/28620391#28620391</link>
			<description>Boss schreef op zaterdag 25 augustus 2007 @ 11:51:(knip)
Ik kan nergens vinden dat het hier om een bedrijfskritische DB gaat, en dat TS het in zijn eentje moet doen en de volle verantwoording draagt.Wat het bedrijfskritische karakter betreft: ik wel  Sypher schreef op woensdag 22 augustus 2007 @ 14:18:
Goed, even wat meer duidelijkheid dan.

- Het aantal rows valt misschien mee, maar het is een bedrijfskritische applicatie en dient dus zo min mogelijk foutgevoelig te zijn.
(knip)Ik ben het met je eens dat je moet gestimuleerd worden om te leren, maar probeer dan thuis eerst wat uit zodat je tenminste een degelijke basis hebt om van te vertrekken als je aan een bedrijfskritische applicatie moet beginnen.</description>
			<content:encoded><![CDATA[<blockquote><div class="message-quote-div"><b><a href="https://gathering.tweakers.net/forum/list_message/28619604#28619604" rel="external" class="messagelink">Boss schreef op zaterdag 25 augustus 2007 @ 11:51</a>:</b>(knip)<br>
Ik kan nergens vinden dat het hier om een bedrijfskritische DB gaat, en dat TS het in zijn eentje moet doen en de volle verantwoording draagt.</div></blockquote>Wat het bedrijfskritische karakter betreft: ik wel  <img src="https://tweakers.net/g/s/wink.svg" width="16" height="16" alt=";)"><blockquote><div class="message-quote-div"><b><a href="https://gathering.tweakers.net/forum/list_message/28601379#28601379" rel="external" class="messagelink">Sypher schreef op woensdag 22 augustus 2007 @ 14:18</a>:</b><br>
Goed, even wat meer duidelijkheid dan.<br>
<br>
- Het aantal rows valt misschien mee, maar het is een bedrijfskritische applicatie en dient dus zo min mogelijk foutgevoelig te zijn.<br>
(knip)</div></blockquote>Ik ben het met je eens dat je moet gestimuleerd worden om te leren, maar probeer dan thuis eerst wat uit zodat je tenminste een degelijke basis hebt om van te vertrekken als je aan een bedrijfskritische applicatie moet beginnen.]]></content:encoded>
			<dc:creator>edeboeck</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28620391#28620391</guid>
			<pubDate>Sat, 25 Aug 2007 12:45:25 GMT</pubDate>
		</item>
		<item>
			<title>joggie</title>
			<link>https://gathering.tweakers.net/forum/list_message/28620331#28620331</link>
			<description>Als het inderdaad zoals je zegt om een bedrijfskritische database gaat, is het misschien meer van belang DAT je de data kunt terug zetten in plaats van hoelang het nou precies duurt. In het geval van 100.000 records zal het eerder in seconden dan minuten schelen...

Wat betreft de snelheid van zoeken en de foutgevoeligheid etc ben ik ook van mening dat je alles beter in 1 tabel kunt stoppen.</description>
			<content:encoded><![CDATA[Als het inderdaad zoals je zegt om een bedrijfskritische database gaat, is het misschien meer van belang DAT je de data kunt terug zetten in plaats van hoelang het nou precies duurt. In het geval van 100.000 records zal het eerder in seconden dan minuten schelen...<br>
<br>
Wat betreft de snelheid van zoeken en de foutgevoeligheid etc ben ik ook van mening dat je alles beter in 1 tabel kunt stoppen.]]></content:encoded>
			<dc:creator>joggie</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28620331#28620331</guid>
			<pubDate>Sat, 25 Aug 2007 12:34:48 GMT</pubDate>
		</item>
		<item>
			<title>Juup</title>
			<link>https://gathering.tweakers.net/forum/list_message/28619644#28619644</link>
			<description>Sypher, luister naar je discussiepartner (collega) en stop het in 1 tabel. Ga daarna een database tutprial lezen.
Bv. deze: http://www.sum-it.nl/cursus/dbdesign/hollands/intro010.php3</description>
			<content:encoded><![CDATA[Sypher, luister naar je discussiepartner (collega) en stop het in 1 tabel. Ga daarna een database tutprial lezen.<br>
Bv. deze: <a href="http://www.sum-it.nl/cursus/dbdesign/hollands/intro010.php3" rel="external nofollow">http://www.sum-it.nl/cursus/dbdesign/hollands/intro010.php3</a>]]></content:encoded>
			<dc:creator>Juup</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28619644#28619644</guid>
			<pubDate>Sat, 25 Aug 2007 10:03:19 GMT</pubDate>
		</item>
		<item>
			<title>Boss</title>
			<link>https://gathering.tweakers.net/forum/list_message/28619604#28619604</link>
			<description>Ja, laten we elkaar allemaal ontmoedigen om dingen uit te zoeken, onszelf iets nieuws aan te leren en te discussieren over ideeën 

Ik kan nergens vinden dat het hier om een bedrijfskritische DB gaat, en dat   TS het in zijn eentje moet doen en de volle verantwoording draagt.</description>
			<content:encoded><![CDATA[Ja, laten we elkaar allemaal ontmoedigen om dingen uit te zoeken, onszelf iets nieuws aan te leren en te discussieren over ideeën <img src="https://tweakers.net/g/s/smile.svg" width="16" height="16" alt=":)"><br>
<br>
Ik kan nergens vinden dat <span style="text-decoration:line-through">het hier om een bedrijfskritische DB gaat, en dat</span> <img src="https://tweakers.net/g/s/bonk.gif" width="30" height="17" alt="8)7">  TS het in zijn eentje moet doen en de volle verantwoording draagt.]]></content:encoded>
			<dc:creator>Boss</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28619604#28619604</guid>
			<pubDate>Sat, 25 Aug 2007 09:51:46 GMT</pubDate>
		</item>
		<item>
			<title>MSalters</title>
			<link>https://gathering.tweakers.net/forum/list_message/28618221#28618221</link>
			<description>Ik denk dat de TS een groot probleem heeft. Hij moet een DB ontwerpen, die bedrijfskritisch is, maar daarvoor heeft hij te weinig kennis. Ik vraag me af of het dan een goed advies is om hem bij stap 1 te helpen. Laten we hem zo niet ten onrechte in de waan dat hij bedrijfskritische databases kan bouwen?</description>
			<content:encoded><![CDATA[Ik denk dat de TS een groot probleem heeft. Hij moet een DB ontwerpen, die bedrijfskritisch is, maar daarvoor heeft hij te weinig kennis. Ik vraag me af of het dan een goed advies is om hem bij stap 1 te helpen. Laten we hem zo niet ten onrechte in de waan dat hij bedrijfskritische databases kan bouwen?]]></content:encoded>
			<dc:creator>MSalters</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28618221#28618221</guid>
			<pubDate>Fri, 24 Aug 2007 20:42:31 GMT</pubDate>
		</item>
		<item>
			<title>Verwijderd</title>
			<link>https://gathering.tweakers.net/forum/list_message/28613207#28613207</link>
			<description>EfBe schreef op donderdag 23 augustus 2007 @ 14:07:
[...]

Dat zou dan genoeg moeten zijn volgens mij, althans wanneer de table in aanmerking zou komen voor partitioning, echter de table wordt niet echt overladen met data, dus lijkt het me wat overbodig die dan te gaan partitioneren.Op het moment dat er performance problemen gaan onstaan doordat de tabel te groot wordt kan je altijd nog besluiten te gaan partitioneren.</description>
			<content:encoded><![CDATA[<blockquote><div class="message-quote-div"><b><a href="https://gathering.tweakers.net/forum/list_message/28608691#28608691" rel="external" class="messagelink">EfBe schreef op donderdag 23 augustus 2007 @ 14:07</a>:</b><br>
[...]<br>
<br>
Dat zou dan genoeg moeten zijn volgens mij, althans wanneer de table in aanmerking zou komen voor partitioning, echter de table wordt niet echt overladen met data, dus lijkt het me wat overbodig die dan te gaan partitioneren.</div></blockquote>Op het moment dat er performance problemen gaan onstaan doordat de tabel te groot wordt kan je altijd nog besluiten te gaan partitioneren.]]></content:encoded>
			<dc:creator>Verwijderd</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28613207#28613207</guid>
			<pubDate>Fri, 24 Aug 2007 05:32:23 GMT</pubDate>
		</item>
		<item>
			<title>EfBe</title>
			<link>https://gathering.tweakers.net/forum/list_message/28608691#28608691</link>
			<description>Verwijderd schreef op donderdag 23 augustus 2007 @ 10:44:
[...]

Dat heet partitioneren in Oracle. Dan kun je je tabel verdelen in partities op basis van een range, hash of list. Combinaties zijn ook mogelijk b.v. range en hash. Een datum veld wordt hier vaak voor gebruikt. Indexeren kan dan ook weer per partitie.dank, ik was even de term kwijt en had geen zin om die op te zoeken Postgre heeft alleen range en list partitioning.Dat zou dan genoeg moeten zijn volgens mij, althans wanneer de table in aanmerking zou komen voor partitioning, echter de table wordt niet echt overladen met data, dus lijkt het me wat overbodig die dan te gaan partitioneren.</description>
			<content:encoded><![CDATA[<blockquote><div class="message-quote-div"><b><a href="https://gathering.tweakers.net/forum/list_message/28606948#28606948" rel="external" class="messagelink">Verwijderd schreef op donderdag 23 augustus 2007 @ 10:44</a>:</b><br>
[...]<br>
<br>
Dat heet partitioneren in Oracle. Dan kun je je tabel verdelen in partities op basis van een range, hash of list. Combinaties zijn ook mogelijk b.v. range en hash. Een datum veld wordt hier vaak voor gebruikt. Indexeren kan dan ook weer per partitie.</div></blockquote>dank, ik was even de term kwijt en had geen zin om die op te zoeken <img src="https://tweakers.net/g/s/wink.svg" width="16" height="16" alt=";)"><blockquote><div class="message-quote-div">Postgre heeft alleen range en list partitioning.</div></blockquote>Dat zou dan genoeg moeten zijn volgens mij, althans wanneer de table in aanmerking zou komen voor partitioning, echter de table wordt niet echt overladen met data, dus lijkt het me wat overbodig die dan te gaan partitioneren.]]></content:encoded>
			<dc:creator>EfBe</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28608691#28608691</guid>
			<pubDate>Thu, 23 Aug 2007 12:07:52 GMT</pubDate>
		</item>
		<item>
			<title>Verwijderd</title>
			<link>https://gathering.tweakers.net/forum/list_message/28606948#28606948</link>
			<description>EfBe schreef op donderdag 23 augustus 2007 @ 09:26:
[...]

DIt heeft geen snars met modelleren te maken maar hoe data wordt opgeslagen. Oracle bv ondersteunt het horizontaal opsplitsen van tables, maar dat is transparant voor de gebruiker, en dat is ook de enige weg. Zelf gaan zitten knoeien met opsplitsen van tables is echt een ramp en veelal levert het niets op. Oh, en 10.000 rows is echt helemaal niks, ik zou pas denken over horizontaal opsplitsen bij een paar miljoen rows en dan nog.Dat heet partitioneren in Oracle. Dan kun je je tabel verdelen in partities op basis van een range, hash of list. Combinaties zijn ook mogelijk b.v. range en hash. Een datum veld wordt hier vaak voor gebruikt. Indexeren kan dan ook weer per partitie.

Postgre heeft alleen range en list partitioning.</description>
			<content:encoded><![CDATA[<blockquote><div class="message-quote-div"><b><a href="https://gathering.tweakers.net/forum/list_message/28606417#28606417" rel="external" class="messagelink">EfBe schreef op donderdag 23 augustus 2007 @ 09:26</a>:</b><br>
[...]<br>
<br>
DIt heeft geen snars met modelleren te maken maar hoe data wordt opgeslagen. Oracle bv ondersteunt het horizontaal opsplitsen van tables, maar dat is transparant voor de gebruiker, en dat is ook de enige weg. Zelf gaan zitten knoeien met opsplitsen van tables is echt een ramp en veelal levert het niets op. Oh, en 10.000 rows is echt helemaal niks, ik zou pas denken over horizontaal opsplitsen bij een paar miljoen rows en dan nog.</div></blockquote>Dat heet partitioneren in Oracle. Dan kun je je tabel verdelen in partities op basis van een range, hash of list. Combinaties zijn ook mogelijk b.v. range en hash. Een datum veld wordt hier vaak voor gebruikt. Indexeren kan dan ook weer per partitie.<br>
<br>
Postgre heeft alleen range en list partitioning.]]></content:encoded>
			<dc:creator>Verwijderd</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28606948#28606948</guid>
			<pubDate>Thu, 23 Aug 2007 08:44:13 GMT</pubDate>
		</item>
		<item>
			<title>EfBe</title>
			<link>https://gathering.tweakers.net/forum/list_message/28606417#28606417</link>
			<description>GarBaGe schreef op woensdag 22 augustus 2007 @ 15:02:
Dit topic doet mij denken aan de vele entries die ik ben tegengekomen op: 

http://thedailywtf.com

Je dagelijkse portie serieuze software screw-ups, waaronder: 1 tabel per artikel. Of 1 tabel per klant Of tabelnamen met een cryptische 6 letter-code... Het zou eigenlijk een site moeten zijn om je krom om te lachen, maar helaas blijken de artikelen vaak op waarheid gebaseerd.
Zo ook onze TS...Over cryptische 6 letterige table names: Er is op aarde een database, met het grootste marktaandeel nog wel, die heet DB2. DB2 had (en heeft op AS400 nog steeds dacht ik) het euvel dat je maar 8 characters per tablename mocht gebruiken. Men ging dus snel over tot codes voor tablenames. 

Neemt niet weg dat wanneer het niet nodig is je het idd niet moet doen. Tot zover het nutteloze triviaatje van de dag! Sypher schreef op woensdag 22 augustus 2007 @ 14:00:
Ik ben in een vurige discussie terecht gekomen over het modelleren van een database, we hebben in beide zaken een verschillende optiek over hoe het nou &quot;best practise&quot; is. Ik zal de situaties even voorleggen.

Het betreft een PostgreSQL database, wat verder niet veel van doen heeft met de situatie.
Het systeem zelf wordt vrij groot en leunt over het algemeen zeer op de database en de tabellen.
Er zullen een flink aantal tabellen aanwezig zijn, en daar kwam dus het meningsverschil

Optiek 1
1 grote tabel (dit kan naar verloop van tijd wel 10.000 tot een veelvoud wordenJe bedoelt, 10000 schamele rows in die table of 10000 tables?Optiek 2
Bovenstaande tabel splitsen in 3 tabellen. Deze zullen dus minder rijen bevatten máár de data zou wel sneller dubbel aanwezig kunnen zijn.

Ikzelf denk dat optie 2 veiliger is, namelijk:
- Data is gesplitst (risicospreiding)Nee.- Minder data in een tabel is sneller te doorzoekenNee, want je moet nog steeds de index door van 3 tables.- Backups maken en terugzetten gaat snellerNee, want de 3 tables samen vormen 1 entity. WANNEER leert men nu eens wat basisprincipes van de informatica alvorens met de tengels aan bv databases te zitten. Je moet niet op z&#039;n Fowleriaans maar wat tables gaan zitten refactoren als een kip zonder kop, die tables zijn een representatie van entities die je hebt herkent in je domain. Heb je 1 entity? Heb je 1 table. 

Wanneer je miljoenen en miljoenen rows hebt, wil men soms nog wel eens de table horizontaal splitsen, dus dat de ene 50% in de ene table zit en de andere 50% in de andere. Echter, dit is in veel gevallen een ramp om tegenaan te programmeren, en daarom laat men dat meestal over aan het RDBMS. Ik weet niet of PostgreSql dit ondersteunt, het zou zomaar kunnen.- Datacorruptie slaat niet direct een gat in het systeem.Erm... transaction log, backup, goede spullen kopen etc. etc... die zorgen voor prima recovery. Ookal splits je het 10 keer op, dan nog ben je data kwijt bij een corrupte table wanneer je geen goede disaster recovery hebt.Enfin, ik vroeg mij af wat de optieken van anderen waren op dit gebied. Ik moet eerlijk toegegeven dat modelleren niet mijn sterkste kant is en dat ik meer iemand ben die gaandeweg aanpassingen en uitbreidingen maakt zonder het bij het begin direct uit te denken.DIt heeft geen snars met modelleren te maken maar hoe data wordt opgeslagen. Oracle bv ondersteunt het horizontaal opsplitsen van tables, maar dat is transparant voor de gebruiker, en dat is ook de enige weg. Zelf gaan zitten knoeien met opsplitsen van tables is echt een ramp en veelal levert het niets op. Oh, en 10.000 rows is echt helemaal niks, ik zou pas denken over horizontaal opsplitsen bij een paar miljoen rows en dan nog.</description>
			<content:encoded><![CDATA[<blockquote><div class="message-quote-div"><b><a href="https://gathering.tweakers.net/forum/list_message/28601767#28601767" rel="external" class="messagelink">GarBaGe schreef op woensdag 22 augustus 2007 @ 15:02</a>:</b><br>
Dit topic doet mij denken aan de vele entries die ik ben tegengekomen op: <br>
<br>
<a href="http://thedailywtf.com" rel="external nofollow">http://thedailywtf.com</a><br>
<br>
Je dagelijkse portie serieuze software screw-ups, waaronder: 1 tabel per artikel. Of 1 tabel per klant Of tabelnamen met een cryptische 6 letter-code... Het zou eigenlijk een site moeten zijn om je krom om te lachen, maar helaas blijken de artikelen vaak op waarheid gebaseerd.<br>
Zo ook onze TS...</div></blockquote>Over cryptische 6 letterige table names: Er is op aarde een database, met het grootste marktaandeel nog wel, die heet DB2. DB2 had (en heeft op AS400 nog steeds dacht ik) het euvel dat je maar 8 characters per tablename mocht gebruiken. Men ging dus snel over tot codes voor tablenames. <img src="https://tweakers.net/g/s/smile.svg" width="16" height="16" alt=":)"><br>
<br>
Neemt niet weg dat wanneer het niet nodig is je het idd niet moet doen. Tot zover het nutteloze triviaatje van de dag! <img src="https://tweakers.net/g/s/biggrin.svg" width="16" height="16" alt=":D"><blockquote><div class="message-quote-div"><b><a href="https://gathering.tweakers.net/forum/list_message/28601239#28601239" rel="external" class="messagelink">Sypher schreef op woensdag 22 augustus 2007 @ 14:00</a>:</b><br>
Ik ben in een vurige discussie terecht gekomen over het modelleren van een database, we hebben in beide zaken een verschillende optiek over hoe het nou &quot;best practise&quot; is. Ik zal de situaties even voorleggen.<br>
<br>
Het betreft een PostgreSQL database, wat verder niet veel van doen heeft met de situatie.<br>
Het systeem zelf wordt vrij groot en leunt over het algemeen zeer op de database en de tabellen.<br>
Er zullen een flink aantal tabellen aanwezig zijn, en daar kwam dus het meningsverschil<br>
<br>
<b>Optiek 1</b><br>
1 grote tabel (dit kan naar verloop van tijd wel 10.000 tot een veelvoud worden</div></blockquote>Je bedoelt, 10000 schamele rows in die table of 10000 tables?<blockquote><div class="message-quote-div"><b>Optiek 2</b><br>
Bovenstaande tabel splitsen in 3 tabellen. Deze zullen dus minder rijen bevatten máár de data zou wel sneller dubbel aanwezig kunnen zijn.<br>
<br>
Ikzelf denk dat optie 2 veiliger is, namelijk:<br>
- Data is gesplitst (risicospreiding)</div></blockquote>Nee.<blockquote><div class="message-quote-div">- Minder data in een tabel is sneller te doorzoeken</div></blockquote>Nee, want je moet nog steeds de index door van 3 tables.<blockquote><div class="message-quote-div">- Backups maken en terugzetten gaat sneller</div></blockquote>Nee, want de 3 tables samen vormen 1 entity. WANNEER leert men nu eens wat basisprincipes van de informatica alvorens met de tengels aan bv databases te zitten. Je moet niet op z&#039;n Fowleriaans maar wat tables gaan zitten refactoren als een kip zonder kop, die tables zijn een representatie van entities die je hebt herkent in je domain. Heb je 1 entity? Heb je 1 table. <br>
<br>
Wanneer je miljoenen en miljoenen rows hebt, wil men soms nog wel eens de table horizontaal splitsen, dus dat de ene 50% in de ene table zit en de andere 50% in de andere. Echter, dit is in veel gevallen een ramp om tegenaan te programmeren, en daarom laat men dat meestal over aan het RDBMS. Ik weet niet of PostgreSql dit ondersteunt, het zou zomaar kunnen.<blockquote><div class="message-quote-div">- Datacorruptie slaat niet direct een gat in het systeem.</div></blockquote>Erm... transaction log, backup, goede spullen kopen etc. etc... die zorgen voor prima recovery. Ookal splits je het 10 keer op, dan nog ben je data kwijt bij een corrupte table wanneer je geen goede disaster recovery hebt.<blockquote><div class="message-quote-div">Enfin, ik vroeg mij af wat de optieken van anderen waren op dit gebied. Ik moet eerlijk toegegeven dat modelleren niet mijn sterkste kant is en dat ik meer iemand ben die gaandeweg aanpassingen en uitbreidingen maakt zonder het bij het begin direct uit te denken.</div></blockquote>DIt heeft geen snars met modelleren te maken maar hoe data wordt opgeslagen. Oracle bv ondersteunt het horizontaal opsplitsen van tables, maar dat is transparant voor de gebruiker, en dat is ook de enige weg. Zelf gaan zitten knoeien met opsplitsen van tables is echt een ramp en veelal levert het niets op. Oh, en 10.000 rows is echt helemaal niks, ik zou pas denken over horizontaal opsplitsen bij een paar miljoen rows en dan nog.]]></content:encoded>
			<dc:creator>EfBe</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28606417#28606417</guid>
			<pubDate>Thu, 23 Aug 2007 07:26:25 GMT</pubDate>
		</item>
		<item>
			<title>ACM</title>
			<link>https://gathering.tweakers.net/forum/list_message/28605382#28605382</link>
			<description>den 150 schreef op woensdag 22 augustus 2007 @ 22:57:
Je bedoelt natuurlijk gewoon sharding. Voor de huis-tuin-en-keuken developer een zéér slecht idee, dit zou ik pas toepassen wanneer &quot;ik gooi er gewoon wat meer hardware tegenaan&quot; te duur wordt (iets wat ik niet verwacht ooit te moeten doen).Dat hoeft niet, het kan ook zijn dat table partitioning een prima oplossing is, zonder losse servers te gebruiken. Maar ik ben het met de mede-posters eens dat dat voor een tabel met minder dan een paar miljoen records meestal niet zinvol en vaak zelfs onverstandig is om te doen.Sypher schreef op woensdag 22 augustus 2007 @ 14:18:
- Het aantal rows valt misschien mee, maar het is een bedrijfskritische applicatie en dient dus zo min mogelijk foutgevoelig te zijn.Wat precies de reden is dat je het in een consistente tabel wilt hebben, niet in losse stukjes die mogelijk corrupties onderling kunnen ontwikkelen en waar je allerlei lastige queries en stukken administratieve overhead omheen moet ontwikkelen. Hoe meer code je nodig hebt om queries uit te voeren, hoe erger de kans op meer fouten is en daardoor neemt de foutgevoeligheid dus juist toe.
Data-veiligheid bereik je door goede backups te maken, evt met een replicatie-oplossing en Point In Time Recovery om je backups aan te vullen met up-to-the-last-minute afspeelbare transactielogs.- Daarom is het dus noodzakelijk dat backups restoren - wanneer dat onverhoopt nodig is - zo snel mogelijk kan verlopen.Bij backups restoren wil je in de eerste plaats dat het goed gebeurd en pas in de tweede plaats dat het snel gaat. De kans dat slechts een enkele tabel corrupt geraakt is, is mijns inziens vrij klein, maar dan nog loop je grote kans dat je alsnog de hele database opnieuw moet inladen. Je moet tenslotte vooral ook een consistente versie van je data terugzetten, niet enkel van elk los stukje de laatste versie - die dus mogelijk verschillen.
Het lijkt me voor bedrijfskritische data namelijk juist erger dat een bewerking - door het half terugzetten van een backup - maar half verwerkt is, dan helemaal niet.

Maar ook hier geldt weer dat je waarschijnlijk beter complete backups kunt maken en die aan kunt vullen met PITR om zo zo veel mogelijk van je data terug te kunnen zetten, mocht er wat mis gaan.

[q]- Als je corruptie hebt in 1 tabel ligt alles er uit aangezien dat aan die tabel geknoopt zit, en als je het splitst is het enkel in die specieke tabel.[/
Mja, maar je kan niet garanderen dat je corruptie enkel in die ene losse splits-tabel zit, dus zul je alsnog moeten nagaan dat de rest wel o.k. is, mogelijk kost je dat alleen maar meer tijd...Het betreft een &quot;accounts&quot; tabel. Mijn collega wil alles in 1 tabel proppen, en daar vervolgens aan de hand van roles er taken (ftp, mail, ...) aan knopen. Wat ik in gedachten had was dus per service (dit zijn er dus 3) een aparte tabel te doen. Dit aangezien ik van mening ben dat de gegevens in de tabellen genoeg van elkaar verschillen.Uit het oogpunt van normalisatie is zijn oplossing de beste. En om de foutgevoeligheid te verlagen wil je over het algemeen normaliseren, niet denormaliseren.Het is dus niet zo dat je van:
1|2|3|4|5|6|7|8|9

1|2|3, 4|5|6, 7|8|9 maakt.En wat doe je met klanten die zowel ftp en mail etc hebben? Ga je die dubbel opslaan? Dubbel opslaan levert nog meer foutgevoeligheid op.</description>
			<content:encoded><![CDATA[<blockquote><div class="message-quote-div"><b><a href="https://gathering.tweakers.net/forum/list_message/28605026#28605026" rel="external" class="messagelink">den 150 schreef op woensdag 22 augustus 2007 @ 22:57</a>:</b><br>
Je bedoelt natuurlijk gewoon <a href="http://highscalability.com/unorthodox-approach-database-design-coming-shard" rel="external nofollow">sharding</a>. Voor de huis-tuin-en-keuken developer een zéér slecht idee, dit zou ik pas toepassen wanneer &quot;ik gooi er gewoon wat meer hardware tegenaan&quot; te duur wordt (iets wat ik niet verwacht ooit te moeten doen).</div></blockquote>Dat hoeft niet, het kan ook zijn dat table partitioning een prima oplossing is, zonder losse servers te gebruiken. Maar ik ben het met de mede-posters eens dat dat voor een tabel met minder dan een paar miljoen records meestal niet zinvol en vaak zelfs onverstandig is om te doen.<blockquote><div class="message-quote-div"><b><a href="https://gathering.tweakers.net/forum/list_message/28601379#28601379" rel="external" class="messagelink">Sypher schreef op woensdag 22 augustus 2007 @ 14:18</a>:</b><br>
- Het aantal rows valt misschien mee, maar het is een bedrijfskritische applicatie en dient dus zo min mogelijk foutgevoelig te zijn.</div></blockquote>Wat precies de reden is dat je het in een consistente tabel wilt hebben, niet in losse stukjes die mogelijk corrupties onderling kunnen ontwikkelen en waar je allerlei lastige queries en stukken administratieve overhead omheen moet ontwikkelen. Hoe meer code je nodig hebt om queries uit te voeren, hoe erger de kans op meer fouten is en daardoor neemt de foutgevoeligheid dus juist toe.<br>
Data-veiligheid bereik je door goede backups te maken, evt met een replicatie-oplossing en Point In Time Recovery om je backups aan te vullen met up-to-the-last-minute afspeelbare transactielogs.<blockquote><div class="message-quote-div">- Daarom is het dus noodzakelijk dat backups restoren - wanneer dat onverhoopt nodig is - zo snel mogelijk kan verlopen.</div></blockquote>Bij backups restoren wil je in de eerste plaats dat het goed gebeurd en pas in de tweede plaats dat het snel gaat. De kans dat slechts een enkele tabel corrupt geraakt is, is mijns inziens vrij klein, maar dan nog loop je grote kans dat je alsnog de hele database opnieuw moet inladen. Je moet tenslotte vooral ook een consistente versie van je data terugzetten, niet enkel van elk los stukje de laatste versie - die dus mogelijk verschillen.<br>
Het lijkt me voor bedrijfskritische data namelijk juist erger dat een bewerking - door het half terugzetten van een backup - maar half verwerkt is, dan helemaal niet.<br>
<br>
Maar ook hier geldt weer dat je waarschijnlijk beter complete backups kunt maken en die aan kunt vullen met PITR om zo zo veel mogelijk van je data terug te kunnen zetten, mocht er wat mis gaan.<br>
<br>
[q]- Als je corruptie hebt in 1 tabel ligt alles er uit aangezien dat aan die tabel geknoopt zit, en als je het splitst is het enkel in die specieke tabel.[/<br>
Mja, maar je kan niet garanderen dat je corruptie enkel in die ene losse splits-tabel zit, dus zul je alsnog moeten nagaan dat de rest wel o.k. is, mogelijk kost je dat alleen maar meer tijd...<blockquote><div class="message-quote-div">Het betreft een &quot;accounts&quot; tabel. Mijn collega wil alles in 1 tabel proppen, en daar vervolgens aan de hand van roles er taken (ftp, mail, ...) aan knopen. Wat ik in gedachten had was dus per service (dit zijn er dus 3) een aparte tabel te doen. Dit aangezien ik van mening ben dat de gegevens in de tabellen genoeg van elkaar verschillen.</div></blockquote>Uit het oogpunt van normalisatie is zijn oplossing de beste. En om de foutgevoeligheid te verlagen wil je over het algemeen normaliseren, niet denormaliseren.<blockquote><div class="message-quote-div">Het is dus niet zo dat je van:<br>
1|2|3|4|5|6|7|8|9<br>
<br>
1|2|3, 4|5|6, 7|8|9 maakt.</div></blockquote>En wat doe je met klanten die zowel ftp en mail etc hebben? Ga je die dubbel opslaan? Dubbel opslaan levert nog meer foutgevoeligheid op.]]></content:encoded>
			<dc:creator>ACM</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28605382#28605382</guid>
			<pubDate>Wed, 22 Aug 2007 21:55:15 GMT</pubDate>
		</item>
		<item>
			<title>den 150</title>
			<link>https://gathering.tweakers.net/forum/list_message/28605026#28605026</link>
			<description>Je bedoelt natuurlijk gewoon sharding. Voor de huis-tuin-en-keuken developer een zéér slecht idee, dit zou ik pas toepassen wanneer &quot;ik gooi er gewoon wat meer hardware tegenaan&quot; te duur wordt (iets wat ik niet verwacht ooit te moeten doen).</description>
			<content:encoded><![CDATA[Je bedoelt natuurlijk gewoon <a href="http://highscalability.com/unorthodox-approach-database-design-coming-shard" rel="external nofollow">sharding</a>. Voor de huis-tuin-en-keuken developer een zéér slecht idee, dit zou ik pas toepassen wanneer &quot;ik gooi er gewoon wat meer hardware tegenaan&quot; te duur wordt (iets wat ik niet verwacht ooit te moeten doen).]]></content:encoded>
			<dc:creator>den 150</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28605026#28605026</guid>
			<pubDate>Wed, 22 Aug 2007 20:57:40 GMT</pubDate>
		</item>
		<item>
			<title>Verwijderd</title>
			<link>https://gathering.tweakers.net/forum/list_message/28603580#28603580</link>
			<description>GarBaGe schreef op woensdag 22 augustus 2007 @ 14:13:
Minder data in een tabel is niet sneller te doorzoeken. Je gebruikt indices (toch?) en die staan in het geheugen! Als je queries steeds langzamer worden door een groeiende database, dan komt dit omdat de query / database structuur kennelijk een full table scan forceert. Dit is altijd langzaam en moet altijd worden voorkomen!Dat schaalt maar in beperkte mate. Tegen de tijd dat je tabellen krijgt met 300 miljoen rows, wil je dit echt gaan opsplitsen als dat mogelijk is. Zeker als je vaak maar data uit een beperkt aantal tabellen nodig hebt.

Voor de situatie van TS lijkt het me simpel. Hoeveel accounts zullen er totaal zijn? 100.000? Uitgaande van 1KB per row zou dat dan om 100MB gaan. Peanuts. Je hele database past zelfs in je geheugen. Niet de moeite waard om op te splitsen dus. En elke competente databaseserver heeft prima mogelijkheden voor high availability, dus daar zit het probleem ook niet. Lekker 1 table houden dus (en RAID is vooral HA, geen backup, dus uitsluitend nuttig als toevoeging op andere bescherming).</description>
			<content:encoded><![CDATA[<blockquote><div class="message-quote-div"><b><a href="https://gathering.tweakers.net/forum/list_message/28601348#28601348" rel="external" class="messagelink">GarBaGe schreef op woensdag 22 augustus 2007 @ 14:13</a>:</b><br>
Minder data in een tabel is niet sneller te doorzoeken. Je gebruikt indices (toch?) en die staan in het geheugen! Als je queries steeds langzamer worden door een groeiende database, dan komt dit omdat de query / database structuur kennelijk een full table scan forceert. Dit is altijd langzaam en moet altijd worden voorkomen!</div></blockquote>Dat schaalt maar in beperkte mate. Tegen de tijd dat je tabellen krijgt met 300 miljoen rows, wil je dit echt gaan opsplitsen als dat mogelijk is. Zeker als je vaak maar data uit een beperkt aantal tabellen nodig hebt.<br>
<br>
Voor de situatie van TS lijkt het me simpel. Hoeveel accounts zullen er totaal zijn? 100.000? Uitgaande van 1KB per row zou dat dan om 100MB gaan. Peanuts. Je hele database past zelfs in je geheugen. Niet de moeite waard om op te splitsen dus. En elke competente databaseserver heeft prima mogelijkheden voor high availability, dus daar zit het probleem ook niet. Lekker 1 table houden dus (en RAID is vooral HA, geen backup, dus uitsluitend nuttig als toevoeging op andere bescherming).]]></content:encoded>
			<dc:creator>Verwijderd</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28603580#28603580</guid>
			<pubDate>Wed, 22 Aug 2007 17:28:36 GMT</pubDate>
		</item>
		<item>
			<title>GarBaGe</title>
			<link>https://gathering.tweakers.net/forum/list_message/28601767#28601767</link>
			<description>Dit topic doet mij denken aan de vele entries die ik ben tegengekomen op: 

http://thedailywtf.com

Je dagelijkse portie serieuze software screw-ups, waaronder: 1 tabel per artikel. Of 1 tabel per klant Of tabelnamen met een cryptische 6 letter-code... Het zou eigenlijk een site moeten zijn om je krom om te lachen, maar helaas blijken de artikelen vaak op waarheid gebaseerd.
Zo ook onze TS...</description>
			<content:encoded><![CDATA[Dit topic doet mij denken aan de vele entries die ik ben tegengekomen op: <br>
<br>
<a href="http://thedailywtf.com" rel="external nofollow">http://thedailywtf.com</a><br>
<br>
Je dagelijkse portie serieuze software screw-ups, waaronder: 1 tabel per artikel. Of 1 tabel per klant Of tabelnamen met een cryptische 6 letter-code... Het zou eigenlijk een site moeten zijn om je krom om te lachen, maar helaas blijken de artikelen vaak op waarheid gebaseerd.<br>
Zo ook onze TS...]]></content:encoded>
			<dc:creator>GarBaGe</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28601767#28601767</guid>
			<pubDate>Wed, 22 Aug 2007 13:02:28 GMT</pubDate>
		</item>
		<item>
			<title>__fred__</title>
			<link>https://gathering.tweakers.net/forum/list_message/28601549#28601549</link>
			<description>Sypher schreef op woensdag 22 augustus 2007 @ 14:18:
Wat ik in gedachten had was dus per service (dit zijn er dus 3) een aparte tabel te doen.En wat ga je dan doen als er een nieuwe service bijkomt? Nieuwe tabel? En als je nou alle accounts voor alle services wilt hebben, wat voor queries denk je dan te krijgen, drie keer union? 

Je collega heeft gelijk. Gewoon netjes normaliseren volgens de normale regels en je indexen goed kiezen, dan wordt dat geen enkel probleem.

Ook de dataintegriteit is geen issue, omdat een goede backup altijd mogelijk maakt om een restore te doen. Desnoods op een aparte database, waarna je alleen een selectie overhaalt naar je productieomgeving.

Mocht je nou gigantisch veel records krijgen, waarvan 80% archiefmateriaal is, dan kun je nog een keer Partioning overwegen. Een goede DB ondersteunt dat en is eigenlijk wat jij hier zelf probeert te knutselen, maar dan in een nette DB feature gegoten. Zowel SQL Server, MySQL, DB2 als Oracle ondersteunen partitioning.

http://msdn2.microsoft.com/en-us/library/ms190787.aspx</description>
			<content:encoded><![CDATA[<blockquote><div class="message-quote-div"><b><a href="https://gathering.tweakers.net/forum/list_message/28601379#28601379" rel="external" class="messagelink">Sypher schreef op woensdag 22 augustus 2007 @ 14:18</a>:</b><br>
Wat ik in gedachten had was dus per service (dit zijn er dus 3) een aparte tabel te doen.</div></blockquote>En wat ga je dan doen als er een nieuwe service bijkomt? Nieuwe tabel? En als je nou alle accounts voor alle services wilt hebben, wat voor queries denk je dan te krijgen, drie keer union? <br>
<br>
Je collega heeft gelijk. Gewoon netjes normaliseren volgens de normale regels en je indexen goed kiezen, dan wordt dat geen enkel probleem.<br>
<br>
Ook de dataintegriteit is geen issue, omdat een goede backup altijd mogelijk maakt om een restore te doen. Desnoods op een aparte database, waarna je alleen een selectie overhaalt naar je productieomgeving.<br>
<br>
Mocht je nou gigantisch veel records krijgen, waarvan 80% archiefmateriaal is, dan kun je nog een keer Partioning overwegen. Een goede DB ondersteunt dat en is eigenlijk wat jij hier zelf probeert te knutselen, maar dan in een nette DB feature gegoten. Zowel SQL Server, MySQL, DB2 als Oracle ondersteunen partitioning.<br>
<br>
<a href="http://msdn2.microsoft.com/en-us/library/ms190787.aspx" rel="external nofollow">http://msdn2.microsoft.com/en-us/library/ms190787.aspx</a>]]></content:encoded>
			<dc:creator>__fred__</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28601549#28601549</guid>
			<pubDate>Wed, 22 Aug 2007 12:38:30 GMT</pubDate>
		</item>
		<item>
			<title>whoami</title>
			<link>https://gathering.tweakers.net/forum/list_message/28601501#28601501</link>
			<description>Ik denk dat jij hier gewoon wilt horen dat jouw mening de juiste is, maar dat is het niet ....

Als je je tabel splitst over meerdere tabellen, heb je gewoon meer kans op corrupte / foute data.  Stel bv dat je een unique constraint op een bepaalde veld-combinatie wilt hebben.   
Als al je gegevens in één tabel zitten, kan je databank deze constraint gewoon makkelijk beheren.
Zijn je gegevens gesplitst over meerdere tabellen, dan kan je dat niet meer....   In dat geval kan je bv een record toevoegen in tabel 1, terwijl er in tabel 2 ook al een record bestaat met deze combinatie.

Bye Bye integriteit van je gegevens.</description>
			<content:encoded><![CDATA[Ik denk dat jij hier gewoon wilt horen dat jouw mening de juiste is, maar dat is het niet ....<br>
<br>
Als je je tabel splitst over meerdere tabellen, heb je gewoon meer kans op corrupte / foute data.  Stel bv dat je een unique constraint op een bepaalde veld-combinatie wilt hebben.   <br>
Als al je gegevens in één tabel zitten, kan je databank deze constraint gewoon makkelijk beheren.<br>
Zijn je gegevens gesplitst over meerdere tabellen, dan kan je dat niet meer....   In dat geval kan je bv een record toevoegen in tabel 1, terwijl er in tabel 2 ook al een record bestaat met deze combinatie.<br>
<br>
Bye Bye integriteit van je gegevens.]]></content:encoded>
			<dc:creator>whoami</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28601501#28601501</guid>
			<pubDate>Wed, 22 Aug 2007 12:34:17 GMT</pubDate>
		</item>
		<item>
			<title>NMe</title>
			<link>https://gathering.tweakers.net/forum/list_message/28601481#28601481</link>
			<description>Waar hoort mijn topic?

PRG&gt;&gt;SEA</description>
			<content:encoded><![CDATA[<a href="https://gathering.tweakers.net/forum/list_messages/1111158" rel="external">Waar hoort mijn topic?</a><br>
<br>
PRG&gt;&gt;SEA]]></content:encoded>
			<dc:creator>NMe</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28601481#28601481</guid>
			<pubDate>Wed, 22 Aug 2007 12:31:51 GMT</pubDate>
		</item>
		<item>
			<title>GarBaGe</title>
			<link>https://gathering.tweakers.net/forum/list_message/28601469#28601469</link>
			<description>Okee, bedrijfskritische applicaties los je niet op door tabellen op te splitsen. Je kan wel kiezen voor meerdere fysieke gesynchronizeerde servers (master-slave setup) en/of RAID.
En een tabel raakt niet zomaar corrupt. Als dat wel gebeurt, is de oorzaak snel een software fout of een filesystem fout, waardoor je andere tabel zeer waarschijnlijk ook de sigaar is.
En voor user accounts en rechten kan je natuurlijk ook kijken naar bestaande bewezen applicaties (bv LDAP) in plaats van een do-it-yourself oplossing. De meeste fouten en problemen worden veroozaakt door software fouten (lees: programmeer fouten), niet door hardware fouten.

Als je zegt: de tabellen verschillen genoeg van elkaar om verschillende tabellen te gebruiken: voor dan een behoorlijke database analyse uit!
Maar verschillende tabellen gebruiken met als doel: fout bestendigheid verhogen is echt de grootste schijn-veiligheid die je maar kan bedenken!!</description>
			<content:encoded><![CDATA[Okee, bedrijfskritische applicaties los je niet op door tabellen op te splitsen. Je kan wel kiezen voor meerdere fysieke gesynchronizeerde servers (master-slave setup) en/of RAID.<br>
En een tabel raakt niet zomaar corrupt. Als dat wel gebeurt, is de oorzaak snel een software fout of een filesystem fout, waardoor je andere tabel zeer waarschijnlijk ook de sigaar is.<br>
En voor user accounts en rechten kan je natuurlijk ook kijken naar bestaande bewezen applicaties (bv LDAP) in plaats van een do-it-yourself oplossing. De meeste fouten en problemen worden veroozaakt door software fouten (lees: programmeer fouten), niet door hardware fouten.<br>
<br>
Als je zegt: de tabellen verschillen genoeg van elkaar om verschillende tabellen te gebruiken: voor dan een behoorlijke database analyse uit!<br>
Maar verschillende tabellen gebruiken met als doel: fout bestendigheid verhogen is echt de grootste schijn-veiligheid die je maar kan bedenken!!]]></content:encoded>
			<dc:creator>GarBaGe</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28601469#28601469</guid>
			<pubDate>Wed, 22 Aug 2007 12:30:56 GMT</pubDate>
		</item>
		<item>
			<title>Sypher</title>
			<link>https://gathering.tweakers.net/forum/list_message/28601379#28601379</link>
			<description>Goed, even wat meer duidelijkheid dan.

- Het aantal rows valt misschien mee, maar het is een bedrijfskritische applicatie en dient dus zo min mogelijk foutgevoelig te zijn.
- Daarom is het dus noodzakelijk dat backups restoren - wanneer dat onverhoopt nodig is - zo snel mogelijk kan verlopen.
- Als je corruptie hebt in 1 tabel ligt alles er uit aangezien dat aan die tabel geknoopt zit, en als je het splitst is het enkel in die specieke tabel.

Het betreft een &quot;accounts&quot; tabel. Mijn collega wil alles in 1 tabel proppen, en daar vervolgens aan de hand van roles er taken (ftp, mail, ...) aan knopen. Wat ik in gedachten had was dus per service (dit zijn er dus 3) een aparte tabel te doen. Dit aangezien ik van mening ben dat de gegevens in de tabellen genoeg van elkaar verschillen.

Het is dus niet zo dat je van:
1|2|3|4|5|6|7|8|9

1|2|3, 4|5|6, 7|8|9 maakt.

Daarnaast komt daar een stukje praktische zaken bij kijken, maar dat is een verhaal apart wat verder losstaat van de issue meerdere vs 1.</description>
			<content:encoded><![CDATA[Goed, even wat meer duidelijkheid dan.<br>
<br>
- Het aantal rows valt misschien mee, maar het is een bedrijfskritische applicatie en dient dus zo min mogelijk foutgevoelig te zijn.<br>
- Daarom is het dus noodzakelijk dat backups restoren - wanneer dat onverhoopt nodig is - zo snel mogelijk kan verlopen.<br>
- Als je corruptie hebt in 1 tabel ligt alles er uit aangezien dat aan die tabel geknoopt zit, en als je het splitst is het enkel in die specieke tabel.<br>
<br>
Het betreft een &quot;accounts&quot; tabel. Mijn collega wil alles in 1 tabel proppen, en daar vervolgens aan de hand van roles er taken (ftp, mail, ...) aan knopen. Wat ik in gedachten had was dus per service (dit zijn er dus 3) een aparte tabel te doen. Dit aangezien ik van mening ben dat de gegevens in de tabellen genoeg van elkaar verschillen.<br>
<br>
Het is dus niet zo dat je van:<br>
1|2|3|4|5|6|7|8|9<br>
<br>
1|2|3, 4|5|6, 7|8|9 maakt.<br>
<br>
Daarnaast komt daar een stukje praktische zaken bij kijken, maar dat is een verhaal apart wat verder losstaat van de issue meerdere vs 1.]]></content:encoded>
			<dc:creator>Sypher</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28601379#28601379</guid>
			<pubDate>Wed, 22 Aug 2007 12:18:12 GMT</pubDate>
		</item>
		<item>
			<title>Niemand_Anders</title>
			<link>https://gathering.tweakers.net/forum/list_message/28601369#28601369</link>
			<description>Wat split je precies van de tabel op? De velden of de records? Het opsplitsen van de records naar meerdere tabellen heeft een negatieve invloed op je performance. Want in de meeste gevallen zul je dan weer de tabellen moeten samenvoegen met unions en daarover weer meestal een order by uitvoeren. 

Velden opsplitsen naar meerdere tabellen kan uiteraard wel een performance winst behalen. Maar doen moet je zeer goed bedenken welke velden in welke tabel komen waarbij je dan zo min mogelijk joins nodig hebt om de informatie weer terug te halen.

Tot 1.000.000 records zal geen enkele bekende database problemen geven. Wij hebben in postgres 8.1 een tabel (tblLog) staan met daarin inmiddels 2.324.766 records. Een query &quot;select * from tblLog where IP=&#039;10.0.1.12&#039; and Page=&#039;/ws/user.php&#039;&quot; geeft binnen 0.972 seconde 4205 records terug.</description>
			<content:encoded><![CDATA[Wat split je precies van de tabel op? De velden of de records? Het opsplitsen van de records naar meerdere tabellen heeft een negatieve invloed op je performance. Want in de meeste gevallen zul je dan weer de tabellen moeten samenvoegen met unions en daarover weer meestal een order by uitvoeren. <br>
<br>
Velden opsplitsen naar meerdere tabellen kan uiteraard wel een performance winst behalen. Maar doen moet je zeer goed bedenken welke velden in welke tabel komen waarbij je dan zo min mogelijk joins nodig hebt om de informatie weer terug te halen.<br>
<br>
Tot 1.000.000 records zal geen enkele bekende database problemen geven. Wij hebben in postgres 8.1 een tabel (tblLog) staan met daarin inmiddels 2.324.766 records. Een query &quot;select * from tblLog where IP=&#039;10.0.1.12&#039; and Page=&#039;/ws/user.php&#039;&quot; geeft binnen 0.972 seconde 4205 records terug.]]></content:encoded>
			<dc:creator>Niemand_Anders</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28601369#28601369</guid>
			<pubDate>Wed, 22 Aug 2007 12:16:55 GMT</pubDate>
		</item>
		<item>
			<title>GarBaGe</title>
			<link>https://gathering.tweakers.net/forum/list_message/28601348#28601348</link>
			<description>Sypher schreef op woensdag 22 augustus 2007 @ 14:00:
...
Kortom; wat is slimmer? 1 grote tabel of 3 kleinere?1 tabel is echt veel beter. Zelfs met miljoenen records is dit geen probleem.

Risico spreiding is niet de verantwoordelijkheid van de database, maar van het OS en onderliggend filesystem. Zorg voor goede backups en RAID setup.
Minder data in een tabel is niet sneller te doorzoeken. Je gebruikt indices (toch?) en die staan in het geheugen! Als je queries steeds langzamer worden door een groeiende database, dan komt dit omdat de query / database structuur kennelijk een full table scan forceert. Dit is altijd langzaam en moet altijd worden voorkomen!</description>
			<content:encoded><![CDATA[<blockquote><div class="message-quote-div"><b><a href="https://gathering.tweakers.net/forum/list_message/28601239#28601239" rel="external" class="messagelink">Sypher schreef op woensdag 22 augustus 2007 @ 14:00</a>:</b><br>
...<br>
Kortom; wat is slimmer? 1 grote tabel of 3 kleinere?</div></blockquote>1 tabel is echt veel beter. Zelfs met miljoenen records is dit geen probleem.<br>
<br>
Risico spreiding is niet de verantwoordelijkheid van de database, maar van het OS en onderliggend filesystem. Zorg voor goede backups en RAID setup.<br>
Minder data in een tabel is niet sneller te doorzoeken. Je gebruikt indices (toch?) en die staan in het geheugen! Als je queries steeds langzamer worden door een groeiende database, dan komt dit omdat de query / database structuur kennelijk een full table scan forceert. Dit is altijd langzaam en moet altijd worden voorkomen!]]></content:encoded>
			<dc:creator>GarBaGe</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28601348#28601348</guid>
			<pubDate>Wed, 22 Aug 2007 12:13:42 GMT</pubDate>
		</item>
		<item>
			<title>whoami</title>
			<link>https://gathering.tweakers.net/forum/list_message/28601318#28601318</link>
			<description>Waarom zou je die tabel splitsen ?
- Datacorruptie ? Tja, als één tabel corrupt is, dan zal je toch een backup moeten terugzetten.  Dit is geen gegronde reden.
- 10.000 rows in een tabel is niks.  100.000 rows in een tabel is niks.  Mits goede indexen vind je data snel terug.  Sneller dan eerst te moeten nagaan of je nu in tabel 1 , 2 of 3 moet zoeken.   Ook geen goede reden dus.
- Snellere backups ? Heb je dat getest ?  Verder, wat maakt het uit of het maken van een backup nu 10 of 15 minuten duurt ?

Wanneer is het wel een gegronde reden om een tabel in 2 te splitsen ? Als je bv met history gegevens gaat zitten.   Bv, een hoop gegevens die je enkel af en toe nog raadpleegt, maar niet meer wijzigt.  Dan kan je naar een history tabel gaan verplaatsen zodanig dat je werktabel wat kleiner blijft.</description>
			<content:encoded><![CDATA[Waarom zou je die tabel splitsen ?<br>
- Datacorruptie ? Tja, als één tabel corrupt is, dan zal je toch een backup moeten terugzetten.  Dit is geen gegronde reden.<br>
- 10.000 rows in een tabel is niks.  100.000 rows in een tabel is niks.  Mits goede indexen vind je data snel terug.  Sneller dan eerst te moeten nagaan of je nu in tabel 1 , 2 of 3 moet zoeken.   Ook geen goede reden dus.<br>
- Snellere backups ? Heb je dat getest ?  Verder, wat maakt het uit of het maken van een backup nu 10 of 15 minuten duurt ?<br>
<br>
Wanneer is het wel een gegronde reden om een tabel in 2 te splitsen ? Als je bv met history gegevens gaat zitten.   Bv, een hoop gegevens die je enkel af en toe nog raadpleegt, maar niet meer wijzigt.  Dan kan je naar een history tabel gaan verplaatsen zodanig dat je werktabel wat kleiner blijft.]]></content:encoded>
			<dc:creator>whoami</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28601318#28601318</guid>
			<pubDate>Wed, 22 Aug 2007 12:10:06 GMT</pubDate>
		</item>
		<item>
			<title>Kalentum</title>
			<link>https://gathering.tweakers.net/forum/list_message/28601305#28601305</link>
			<description>Begrijp ik het goed dat die drie tabellen dezelfde structuur krijgen?

In dat geval gewoon 1 tabel. 
1. datacorruptie in 1 van de 3 tabellen is net zo erg als datacorruptie in 1 grote tabel.
2. Voor data doorzoeken zijn indexen uitgevonden. Als je de juiste indexen aanmaakt is er geen verschil in zoeksnelheid
3. backups terugzetten en maken maakt geen donder uit. 3 tabellen wegschrijven en weer terugzetten is zelfs langzamer dan 1 tabel.</description>
			<content:encoded><![CDATA[Begrijp ik het goed dat die drie tabellen dezelfde structuur krijgen?<br>
<br>
In dat geval gewoon 1 tabel. <br>
1. datacorruptie in 1 van de 3 tabellen is net zo erg als datacorruptie in 1 grote tabel.<br>
2. Voor data doorzoeken zijn indexen uitgevonden. Als je de juiste indexen aanmaakt is er geen verschil in zoeksnelheid<br>
3. backups terugzetten en maken maakt geen donder uit. 3 tabellen wegschrijven en weer terugzetten is zelfs langzamer dan 1 tabel.]]></content:encoded>
			<dc:creator>Kalentum</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28601305#28601305</guid>
			<pubDate>Wed, 22 Aug 2007 12:08:03 GMT</pubDate>
		</item>
		<item>
			<title>Verwijderd</title>
			<link>https://gathering.tweakers.net/forum/list_message/28601275#28601275</link>
			<description>mmmm, bedoel je nu dat je de tabel in 3en hakt of dat je ze dmv relaties aan elkaar koppelt?</description>
			<content:encoded><![CDATA[mmmm, bedoel je nu dat je de tabel in 3en hakt of dat je ze dmv relaties aan elkaar koppelt?]]></content:encoded>
			<dc:creator>Verwijderd</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28601275#28601275</guid>
			<pubDate>Wed, 22 Aug 2007 12:04:54 GMT</pubDate>
		</item>
		<item>
			<title>Sypher</title>
			<link>https://gathering.tweakers.net/forum/list_message/28601239#28601239</link>
			<description>Ik ben in een vurige discussie terecht gekomen over het modelleren van een database, we hebben in beide zaken een verschillende optiek over hoe het nou &quot;best practise&quot; is. Ik zal de situaties even voorleggen.

Het betreft een PostgreSQL database, wat verder niet veel van doen heeft met de situatie.
Het systeem zelf wordt vrij groot en leunt over het algemeen zeer op de database en de tabellen.
Er zullen een flink aantal tabellen aanwezig zijn, en daar kwam dus het meningsverschil

Optiek 1
1 grote tabel (dit kan naar verloop van tijd wel 10.000 tot een veelvoud worden

Optiek 2
Bovenstaande tabel splitsen in 3 tabellen. Deze zullen dus minder rijen bevatten máár de data zou wel sneller dubbel aanwezig kunnen zijn.

Ikzelf denk dat optie 2 veiliger is, namelijk:
- Data is gesplitst (risicospreiding)
- Minder data in een tabel is sneller te doorzoeken
- Backups maken en terugzetten gaat sneller
- Datacorruptie slaat niet direct een gat in het systeem.

Enfin, ik vroeg mij af wat de optieken van anderen waren op dit gebied. Ik moet eerlijk toegegeven dat modelleren niet mijn sterkste kant is en dat ik meer iemand ben die gaandeweg aanpassingen en uitbreidingen maakt zonder het bij het begin direct uit te denken.

Kortom; wat is slimmer? 1 grote tabel of 3 kleinere?</description>
			<content:encoded><![CDATA[Ik ben in een vurige discussie terecht gekomen over het modelleren van een database, we hebben in beide zaken een verschillende optiek over hoe het nou &quot;best practise&quot; is. Ik zal de situaties even voorleggen.<br>
<br>
Het betreft een PostgreSQL database, wat verder niet veel van doen heeft met de situatie.<br>
Het systeem zelf wordt vrij groot en leunt over het algemeen zeer op de database en de tabellen.<br>
Er zullen een flink aantal tabellen aanwezig zijn, en daar kwam dus het meningsverschil<br>
<br>
<b>Optiek 1</b><br>
1 grote tabel (dit kan naar verloop van tijd wel 10.000 tot een veelvoud worden<br>
<br>
<b>Optiek 2</b><br>
Bovenstaande tabel splitsen in 3 tabellen. Deze zullen dus minder rijen bevatten máár de data zou wel sneller dubbel aanwezig kunnen zijn.<br>
<br>
Ikzelf denk dat optie 2 veiliger is, namelijk:<br>
- Data is gesplitst (risicospreiding)<br>
- Minder data in een tabel is sneller te doorzoeken<br>
- Backups maken en terugzetten gaat sneller<br>
- Datacorruptie slaat niet direct een gat in het systeem.<br>
<br>
Enfin, ik vroeg mij af wat de optieken van anderen waren op dit gebied. Ik moet eerlijk toegegeven dat modelleren niet mijn sterkste kant is en dat ik meer iemand ben die gaandeweg aanpassingen en uitbreidingen maakt zonder het bij het begin direct uit te denken.<br>
<br>
Kortom; wat is slimmer? 1 grote tabel of 3 kleinere?]]></content:encoded>
			<dc:creator>Sypher</dc:creator>
			<guid isPermaLink="false">https://gathering.tweakers.net/forum/list_message/28601239#28601239</guid>
			<pubDate>Wed, 22 Aug 2007 12:00:37 GMT</pubDate>
		</item>
	</channel>
</rss>