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.


Alla tider är GMT +2. Klockan är nu 08:00.

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