WN

WN (https://www.wn.se/forum/index.php)
-   Webbhotell (https://www.wn.se/forum/forumdisplay.php?f=13)
-   -   Databashosting (https://www.wn.se/forum/showthread.php?t=1045374)

Kevmo 2010-12-14 22:40

Databashosting
 
Tjenis, har varit en passiv läsare här ett tag men har ett litet problem jag behöver hjälp med...

Har en tjänst på gång som behöver databashosting. Jag behöver ett upplägg som tillåter oändligt stora databaser. Tanken är att möjliggöra det här genom att lägga till servrar allt eftersom och ha någon sorts NFS.

Hur skulle man kunna tänka sig det här rent tekniskt? Jag behöver raid 10 eller 0+1 också och hyffsat bra prestanda, för att försvåra det hela lite till. Vad hade varit erat sätt att lösa det på?

Hoppas jag lagt tråden på rätt ställe :)

hnn 2010-12-14 23:52

citycloud? (citycloud.se)

Norman 2010-12-15 00:19

Oändligt stora databaser löser man inte genom en enkel VPS.
Någonstans träffar man en flaskhals där IOPs begränsas.

Det krävs att man planerar att kunna skala upp .
När man är så stora att man överskrider 16GB ram så får man börja fundera på NUMA begränsningar och annat smått och gott.

Kevmo 2010-12-15 00:21

Tanken är att sätta upp det själv med egna dedikerade servrar. Behöver rätt absurda mängder utrymme, så vi talar om TB och inte GB, möjligheten att addera servrar allt eftersom in i "molnet" är i princip ett måste.

Notera att jag inte söker servrar eller hosting, utan vill ha hjälp med hur man rent teoretiskt sätter upp en sådan här kluster.

För exemplets skull, låt oss säga att jag har 4 servrar á i7-920, 24GB DDR3, 1.5TB SATA II * 2 och oändlig mängd datatrafik. Hur gör jag?

jonny 2010-12-15 06:49

Det här är en helt klart intressant frågeställning. Har du valt någon databasmotor för detta eller är det valfritt?

emilv 2010-12-15 07:51

Det är otroligt viktigt att den databasmotor du väljer kan skala ut till flera servrar utan problem. Detta innebär ofta ett problem med relationsdatabaser (men inte alltid! Det finns några kommersiella databaser som skalar).

Jag skulle nog börjat kika på så kallade NoSQL-databaser, ofta kallade dokumentorienterade databaser. Cassandra och MongoDB är ett par kända fria alternativ. De har inga relationer mellan olika dokument och klarar därför att dela upp dem på olika maskiner utan speciellt krångliga lösningar. Typiskt brukar även vara att sökningar och andra typer av jobb kan skalas ut till dessa maskiner automatiskt av databasmotorn.

MongoDB har till exempel stöd för MapReduce för batchjobb, där varje maskin arbetar på sitt eget data och returnerar en delmängd av det slutliga resultatet.

abergman 2010-12-15 08:31

Citat:

Ursprungligen postat av Kevmo (Inlägg 20383264)
Tanken är att sätta upp det själv med egna dedikerade servrar. Behöver rätt absurda mängder utrymme, så vi talar om TB och inte GB, möjligheten att addera servrar allt eftersom in i "molnet" är i princip ett måste.

Notera att jag inte söker servrar eller hosting, utan vill ha hjälp med hur man rent teoretiskt sätter upp en sådan här kluster.

För exemplets skull, låt oss säga att jag har 4 servrar á i7-920, 24GB DDR3, 1.5TB SATA II * 2 och oändlig mängd datatrafik. Hur gör jag?

Du skulle kunna Lastbalansera ett gäng mysqler så du sprider läsning och skrivning, dock så har du som redan sagt ett problem med datamängden, det kommer ta stopp i diskarna troligtvis.

Du skulle splitta upp databasen och lagra olika delar på olika maskiner, så att du istället för att ha 1*MASSVISMEDDATA så har du 4*INTELIKAMYCKETDATA..

Clarence 2010-12-15 08:40

Citat:

Ursprungligen postat av emilv (Inlägg 20383283)
Jag skulle nog börjat kika på så kallade NoSQL-databaser, ofta kallade dokumentorienterade databaser. Cassandra och MongoDB är ett par kända fria alternativ. De har inga relationer mellan olika dokument och klarar därför att dela upp dem på olika maskiner utan speciellt krångliga lösningar. Typiskt brukar även vara att sökningar och andra typer av jobb kan skalas ut till dessa maskiner automatiskt av databasmotorn.

Cassandra brukar räknas till kolumn-orienterade databaser. Sen bör man väl tillägga att NoSQL-lägret även omfattar t ex graf-databaser, xml-databaser, key-value-stores, objektorienterade databaser osv.

Speciellt är det värt att nämna att NoSQL ofta verkar användas i tron om att det alltid kommer skala bättre, prestera bättre och allmänt lösa alla databas-problem. Faktum är att de traditionella databaserna klarar de allra flesta applikationer alldeles utmärkt och att man ofta måste strukturera om rätt grundläggande saker för att ha någon större nytta av ett alternativ. Och även då måste man välja rätt alternativ för sin egen situation. Facebook är alltid ett populärt exempel. De använder MySQL, HBase och Cassandra tillsammans (och en mängd andra tekniker, men för databasen). Alla valt utifrån datan som skulle lagras och speciellt hur den används.

Med det sagt tror jag också att emilvs mongodb kan vara intressant om det är expanderingen och klustringen som är ditt stora problem, som det låter på din fråga. Det är väldigt lätt att lägga till nya shards, det finns stöd för auto sharding, maxsize osv.

Men beskriver du inte din användning i mycket större detalj finns det ingen som kan ge dig ett informerat förslag utifrån ditt användningsområde.


Citat:

Ursprungligen postat av abergman (Inlägg 20383285)
Du skulle kunna Lastbalansera ett gäng mysqler så du sprider läsning och skrivning, dock så har du som redan sagt ett problem med datamängden, det kommer ta stopp i diskarna troligtvis.

Du skulle splitta upp databasen och lagra olika delar på olika maskiner, så att du istället för att ha 1*MASSVISMEDDATA så har du 4*INTELIKAMYCKETDATA..

Det abergman beskriver kallas sharding om du vill läsa mer information om det på nätet (det mesta är på engelska givetvis). Använder du MySQL är även MySQL Cluster värt att titta på.

abergman 2010-12-15 08:55

Citat:

Ursprungligen postat av Clarence (Inlägg 20383287)
Cassandra brukar räknas till kolumn-orienterade databaser. Sen bör man väl tillägga att NoSQL-lägret även omfattar t ex graf-databaser, xml-databaser, key-value-stores, objektorienterade databaser osv.

Speciellt är det värt att nämna att NoSQL ofta verkar användas i tron om att det alltid kommer skala bättre, prestera bättre och allmänt lösa alla databas-problem. Faktum är att de traditionella databaserna klarar de allra flesta applikationer alldeles utmärkt och att man ofta måste strukturera om rätt grundläggande saker för att ha någon större nytta av ett alternativ. Och även då måste man välja rätt alternativ för sin egen situation. Facebook är alltid ett populärt exempel. De använder MySQL, HBase och Cassandra tillsammans (och en mängd andra tekniker, men för databasen). Alla valt utifrån datan som skulle lagras och speciellt hur den används.

Med det sagt tror jag också att emilvs mongodb kan vara intressant om det är expanderingen och klustringen som är ditt stora problem, som det låter på din fråga. Det är väldigt lätt att lägga till nya shards, det finns stöd för auto sharding, maxsize osv.

Men beskriver du inte din användning i mycket större detalj finns det ingen som kan ge dig ett informerat förslag utifrån ditt användningsområde.



Det abergman beskriver kallas sharding om du vill läsa mer information om det på nätet (det mesta är på engelska givetvis). Använder du MySQL är även MySQL Cluster värt att titta på.

Har du någon aning om hur prestandan skulle bli med 1 SQL-nod och 2 storagenoder?

Westman 2010-12-15 08:55

Börjar du prata såna mängder frågor och så stor datamängd så är dina maskinexempel väldigt klena. Sen är det också rätt viktigt att veta vilken motor du kommer att använda då det ger möjligheter och även restriktioner i om man kan och bör använda många "små" servrar eller ett fåtal stora.

När det gäller IOPS så finns det exempel på system som klarar rätt stora mängder men då pratar vi servrar med PCI Express SSD:er. Exempel från IBM.

Sludent 2010-12-15 09:00

Reagerade också på den klena hårdvaran som i princip hör hemma på skrivbordet.

Clarence 2010-12-15 09:10

Citat:

Ursprungligen postat av abergman (Inlägg 20383291)
Har du någon aning om hur prestandan skulle bli med 1 SQL-nod och 2 storagenoder?

Mycket sämre än att skapa en egen lösning med sharding/replikering (beroende på syftet för valet av mysql cluster) klassiska MySQL på samma 3 maskiner. På nivån med tre noder kan jag inte se mycket poäng med att använda cluster, förutom att man har den framtida skalbarheten. Tydligt exempel på när skalbarhet (ännu) inte har något med prestanda att göra.

Björklund 2010-12-15 09:15

Citat:

Ursprungligen postat av Kevmo (Inlägg 20383264)
För exemplets skull, låt oss säga att jag har 4 servrar á i7-920, 24GB DDR3, 1.5TB SATA II * 2 och oändlig mängd datatrafik. Hur gör jag?

Om du inte behöva tänka på läs, skrivprestanda eller redundans är det bara att köpa dig ett gäng externa disklådor och ansluta mer och mer disklådor i den takten du växer. Behöver du växa riktigt mycket måste du bygga med FC, iSCSI, AoE eller liknande istället för direktanslutna disklådor.
Kör du Linux växer du du dina volymer med LVM när du ansluter mer disk.

PM:a om du vill ha hjälp.

johan1234 2010-12-15 09:47

Absolut intressant och inte alltid helt lätt. Känner dock att en viktig puck som är väldigt styrande inte får rätt utrymme - och det är lasten som är extremt styrande. En sak är att växa en databas till 50 TB och ha några köra queries mot den. En annan är att ha 25000 samtidiga användare på den databasen och vilja få resultat från en tabell med några miljoner rader - på millisekunder. Vad är det som gäller tror du?

Vi har kunder som kör alla varianter. Klustrat, replikering och olika former av uppdelning för att klara last och storlek. Kan ge ett råd som vi normalt ger... De större kunderna vi har som kör flera TB och har mycket stor last (som snittar tusentals samtidiga användare) - har vi så här långt alltid rekommenderat dedikerade lösningar för. De flesta skalar dock framsidan - dvs webbservrar mm - i en cloud miljö så de kan skala upp och ner med automatik.

KristianE 2010-12-15 11:52

Citat:

Ursprungligen postat av Westman (Inlägg 20383292)
Börjar du prata såna mängder frågor och så stor datamängd så är dina maskinexempel väldigt klena. Sen är det också rätt viktigt att veta vilken motor du kommer att använda då det ger möjligheter och även restriktioner i om man kan och bör använda många "små" servrar eller ett fåtal stora.

När det gäller IOPS så finns det exempel på system som klarar rätt stora mängder men då pratar vi servrar med PCI Express SSD:er. Exempel från IBM.

Jepp. SATA/SAS-controllers har en gräns och roterande skivor har stora begränsningar.
En av våra partners arbetar med Fusion I/O PCIe-kort. Läsprestandan är ca 1.5
Gigabyte per sekund och skrivprestandan ligger på 1.4 Gigabyte per sekund.

PCIe-controllern har såklart också en gräns men bandbredden är bra mycket högre
än 6 Gbit SAS, t.ex.

Skicka gärna PM om nån vill veta mer.

Core i7 är ingen serverprocessor och jag skulle starkt avråda att använda denna.
Ska du ha något motsvarande/bättre så är det Xeon 5600-serien du bör titta på.
24 GB RAM fylls snabbt om du nu ska ha oändligt med databasstorlek. 5600-serien
stöder 144 GB RAM per CPU så det är bara att köpa på. :)

Sludent 2010-12-15 12:27

Citat:

Ursprungligen postat av KristianE (Inlägg 20383334)
Core i7 är ingen serverprocessor och jag skulle starkt avråda att använda denna.
Ska du ha något motsvarande/bättre så är det Xeon 5600-serien du bör titta på.
24 GB RAM fylls snabbt om du nu ska ha oändligt med databasstorlek. 5600-serien
stöder 144 GB RAM per CPU så det är bara att köpa på. :)

5600-serien stödjer 288 GB, 5500-serien stödjer 144 GB.

Westman 2010-12-15 13:16

Om vi ändå pratar Intelproppar och 5600-serien så har den också en extra liten feature och det är inbyggd krypteringsfunktion (AES). Jag var inte alldeles pigg när han från Intel pratade men här vaknade jag till.

EDIT: Hittar inte belägg för att AES-NI skulle vara begränsat till X56xx men ska maila Intelmannen och fråga.

KristianE 2010-12-15 15:26

Sludent:
Du har säkert rätt.

Behövs ännu mer minne funkar säkert 7000-serien. Dell har ju sin R910
som stödjer 1 TB RAM med 4 CPU:er.

Kevmo 2010-12-15 15:59

Tackar för alla svar, vilken raketfart det blev sen imorse haha! :D

Det är PostgreSQL som ska användas (det här systemet MÅSTE användas), Det kommer inte att vara särskilt många användare.e Om man ser som så att det blir 45 användare på peak times per kluster. Det är mest en lösning med dynamisk utrymmesökning som är viktigt för det här.

Behövs fortfarande mycket bättre servrar än de i exemplet? Att jag valt just dessa är bara en kostnadsfråga. Finns det anledning att köra på värre så kan jag göra det.

Sludent 2010-12-15 17:54

Om det är en kostnadsfråga så finns ju Xeon 3400-serien, den är att föredrag framför desktop-versionerna (Core i*) och liknande.

Xeon är Intels processorer för servrar och arbetsstationer.

pelmered 2010-12-16 16:03

Jag är ingen expert på området, men Amazon RDS kanske kan vara en lösning?
De kan man ju i stort sett skala upp mot oändligheten.

aelander 2010-12-17 17:36

Citat:

Ursprungligen postat av Kevmo (Inlägg 20383264)
... oändligt stora databaser. ...
... och oändlig mängd datatrafik. ....

Det går inte överhuvud taget att skapa något som är oändligt.

Allt här i världen som vi känner till är ändligt.
Du måste veta hur mycket !!

Kevmo 2010-12-17 23:39

Citat:

Ursprungligen postat av aelander (Inlägg 20383858)
Det går inte överhuvud taget att skapa något som är oändligt.

Allt här i världen som vi känner till är ändligt.
Du måste veta hur mycket !!

Tycker du det är en omöjlighet att allt eftersom utrymmet tar slut lägga till mer och på så sätt röra sig mot oändligheten?

Datatrafiken, om du hade läst inläggen, är bara oändlig för att förenkla exemplet.

Så vad är det du vill tillföra till tråden? :o

aelander 2010-12-18 02:38

Citat:

Ursprungligen postat av Kevmo (Inlägg 20383896)
Tycker du det är en omöjlighet att allt eftersom utrymmet tar slut lägga till mer och på så sätt röra sig mot oändligheten?


Jag är van att tänka utifrån en kravspecifikation.
Om man gör det så blir hela denna diskussion meninglös.
Det minsta man kan begära är att den som försöker att lösa ett problem
och vill ha hjälp, har någon susning om vilka behoven är.

Om jag hade fått en förfrågan om att sätta upp en databaslösning med
oändligt utrymme och oändligt datatrafik, så är det tveksamt om jag ens
hade svarat.

Att då uttrycka i termer av oändlighet är fullständig nonsens.
Inte ens exempelvis Google är ens i närheten av någon oändlighet för sina resurser.
Man kan heller inte tala om att röra sig mot oändligheten!

Jag kan inte inbilla mig att någon på detta forum planerar tjänster
som är i storlek med ex Google. Rätta mig om jag fel !!

Citat:

Ursprungligen postat av Kevmo (Inlägg 20383896)
Datatrafiken, om du hade läst inläggen, är bara oändlig för att förenkla exemplet.

På vilket sätt förenklar det exemplet? För mig så kompliceras det av detta.

Jag trodde du ville du ha hjälp något konkret ... ?
Jag har kanske fel där också.
Dina frågor var kanske mer av akademisk art.
I så fall kan jag delvis förstå din reaktion.


Citat:

Ursprungligen postat av Kevmo (Inlägg 20383896)
Så vad är det du vill tillföra till tråden?

Jag har jobbat i hyfsat stora miljöer, bl a DB2 på Volvo, så något kanske jag kunnat tillföra.

Kevmo 2010-12-18 06:06

Kravspecifikationen är helt enkelt att det ska kunna gå att skala mängden utrymme mot oändligheten. Sen om man löser det här via ett NFS eller på något annat vis är ju det som är huvudfrågan i problemet.

Vad menar du med att man inte kan prata om att röra sig mot oändligheten? Varför inte? Det finns inget som hindrar en diskussion i ämnet.

Visst att ingen har byggt tjänster i storlek med Googles men det gör inte frågeställningen mindre intressant. Måste man ha gjort det för att kunna tillföra något menar du?

För övrigt så brukar saker bli lättare att lösa ju fler variabler man tar bort, så här måste du förklara varför det blir svårare.

Westman 2010-12-18 07:36

Vilken kurs är det du läser?

Kevmo 2010-12-18 11:13

Kurs?

Det är lite research till en tjänst som jag sa i första inlägget. :)

emilv 2010-12-18 11:21

Nu ska vi se att jag är med här:

Det du vill göra är alltså att skala PostgreSQL mot oändligheten? Inte mot en fast gräns på x TB, utan mot oändligheten?

Då är mina följdfrågor:
* Vad har du hittat i manualen och vad var det för brister med den informationen?
* Vad har du testat själv?

Jag håller med aelander om att en bra kravspecifikation har någon form av gränser med. Fler variabler är ofta bättre när man systemerar en servermiljö. För att skala mot oändligheten måste systemet vara helt fritt från flaskhalsar (något jag tvivlar på att du kan lösa med PostgreSQL), emedan en fast gräns (helst med ett definierat databasschema) gör det lättare att veta vilka flaskhalsar man ska fokusera på att undvika.

Visst kan man bygga ett system som skalar mot oändligheten, men det är mycket dyrare än att bygga ett som skalar upp till en specificerad gräns. Det lättaste och billigaste (och som får dig ut på marknaden snabbast) är att bygga systemet för en gräns och när du slår i taket vet du var flaskhalsen är och kan systemera om efter det. Då får du erfarenhet under tiden, samtidigt som du kan börja tjäna pengar. Om du satsar påa tt skala oändligt innan du ens kommer ut på marknaden så kommer någon annan vara före dig och kunderna borta.

Clarence 2010-12-18 15:40

Ska man skala databaser brukar ju inte problemet vara hur mycket disk man ska komma åt annars. Problemet blir för det mesta hur man ska klara av att ställa frågor mot datan. Då du för varje X TB kommer behöva en ny DBMS nod för att klara denna del. Frågan är isåfall om man inte från början vill bygga på en klusterlösning med PgSQL (finns en mängd redan), så länge man kan partitionera sin data effektivt så skalar det i stort till oändligheten.

Annars låter det mycket som om det är någon typ av data warehousing du vill bedriva. Isåfall finns det gott om databas-system som är till för just det och hanterar dess problematik betydligt bättre än en vanlig relationsdatabas som pgsql.

Kevmo 2010-12-20 19:02

Har läst lite mer om detta och har nu hittat PgPool-II, antar att det är något sådant du talar om Clarence?

Det verkar i princip lösa alla mina problem :D Är det någon som har erfarenhet av att använda det?

Westman 2010-12-20 21:52

Bara en liten oviktig fråga: hur ska du kunna backa en databas som skalar mot oändlighet?

patrikweb 2010-12-20 22:12

Fast då får man väl sätta ett oändligt kostnad och pris med samtidigt för lösningen ;)

Clarence 2010-12-21 00:11

Citat:

Ursprungligen postat av Kevmo (Inlägg 20384337)
Har läst lite mer om detta och har nu hittat PgPool-II, antar att det är något sådant du talar om Clarence?

Det verkar i princip lösa alla mina problem :D Är det någon som har erfarenhet av att använda det?

Ja, något i den stilen var precis vad jag menade. För pgsql finns gott om liknande lösningar som har lite andra attribut, om det är någon specifik detalj som inte passar dina behov. Tyvärr har jag ingen erfarenhet alls av pgsql och därmed inte heller av speciallösningarna, jag känner bara till dom via andra som använder eller använt pg.

Vidare förstår jag inte vad som är så himla svårt med utrymme som går mot oändligheten. Om man läst en endaste universitetskurs i matematik kan väl inte ha undgått att ha skapat bekantskap med det. Det är först om man i datan som skalar mot oändligheten har relationer som inte skalar på samma sätt som man kan råka ut för ett problem.

Dennis Holm 2010-12-21 00:33

alltså
mot oändlighet är högst filosofiskt och det verkar tas på allt för stort allvar även om trådskaparen inte gick in i frågeställningen med en mängd förkunskaper..

går du emot oändligheten går du en liten bit i taget.
hastigheten eller storleken på bitarna spelar ingen roll.

om du har 1byte.. och lägger på 1 byte till.. då har du börjat att röra dig emot oändligheten.

tråden hade kanske kunnat startats med en annan fråga men det bör ju inte krångla till det för jag tror de flesta som slappnar av lite förstår vad han egentligen vill/behöver.

han behöver en lösning som går att utöka enkelt men framförallt går att utöka till att bli större och större med tiden som projektet växer.

facebook är inte ens i närheten av oändlighet.. eller google..
ingen är det.
men de rör sig alla emot oändligheten även om oändligheten inte har något slut...

så kan alla släppa gnället om oändlighet? :P

lycka till med ditt projekt.
Jag hade rekommenderat att du skaffar dig en expert konsult/tekniker på området om din budget tillåter det så du börjar på en kraftig och stabil grund när det gäller skalbarhet.

:)

Kevmo 2010-12-21 01:07

Citat:

Ursprungligen postat av Clarence (Inlägg 20384384)
Ja, något i den stilen var precis vad jag menade. För pgsql finns gott om liknande lösningar som har lite andra attribut, om det är någon specifik detalj som inte passar dina behov. Tyvärr har jag ingen erfarenhet alls av pgsql och därmed inte heller av speciallösningarna, jag känner bara till dom via andra som använder eller använt pg.

Vidare förstår jag inte vad som är så himla svårt med utrymme som går mot oändligheten. Om man läst en endaste universitetskurs i matematik kan väl inte ha undgått att ha skapat bekantskap med det. Det är först om man i datan som skalar mot oändligheten har relationer som inte skalar på samma sätt som man kan råka ut för ett problem.

Tack för att du tar dig tid och svara ändå. Uppskattas!

Dennis: Ja, det är exakt så jag menar, men jag kanske var lite otydlig :) Har fått tag på en expert, det kommer bli kanon det här, tack för hjälpen!


Alla tider är GMT +2. Klockan är nu 12:29.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson