Data v cloudu - jakou službu zvolit?

o

Data v cloudu - jakou službu zvolit?
« kdy: 13. 07. 2017, 23:08:59 »
Resim problem, kdy potrebuji zapisovat radove desitky milionu zaznamu denne do DB do v podstate jedine tabulky o cca 15ti sloupcich. Jednotlive zaznamy tam ovsem budou mit zivotnost jen par dnu, tydnu, nektere mesice = rychle budou pribyvat nove a stare mazat.

Ta data potrebuji filtrovat a agregovat a to velmi casto (roboti, kteri budou pokladat dotazy kazdou sekundu).

Nejvic pokukuju po MySQL (protoze je mi blizke) u GoogleCloud nebo AWS.

Jakou sluzbu u jakoho poskytovatele byste pro podobny ucel volili (i z hlediska ceny)? Dekuji za kazdy tip :-)


.

Re:Data v cloudu - jakou službu zvolit?
« Odpověď #1 kdy: 14. 07. 2017, 01:07:21 »
Nechci ti brát iluze, ale evidentně sis ukousl výrazně větší krajíc, než jsi schopen sníst.

Jestli to máš na hraní, tak začni s tím co znáš a až narazíš na limity, tak to prostě několikrát předěláš. Ty limity ale budou nejméně o řád (spíše dva) níže, než požaduješ, protože sustain zápis 600 insertů/sec a přitom ještě provádět agregace a čtení a filtrace v řádech několik operací/sec je požadavek na poměrně složitou lokální infrastrukturu (v závislosti na požadované HA) a rozhodně ne na cloud. Navíc v cloudu by ses nedoplatil.

Milfaus

Re:Data v cloudu - jakou službu zvolit?
« Odpověď #2 kdy: 14. 07. 2017, 01:55:06 »
= rychle budou pribyvat nove a stare mazat.

Záznamy se (řekl bych) obvykle nemažou, ale označí se jako neplatné.
K odstranění záznamu dojde buď mimochodem, protože databáze se tak rozhodla nebo naplánovanou úlohou nebo tvým přičiněním. Rozdíl je PostgreSQL/MSSQL/MySQL. Někdy je to opruz, kdy je potřeba tabulky zazálohovat, dropnout indexy, truncate, vytvořit indexy a to v době, kdy je databáze offline. Prostě to není jen tak.

Mluvíš tu o desítkách milionů záznamů za den, tj. řekněme o dvou desítkách milionů záznamů za den, tj. milion záznamů za hodinu, 16 tisíc záznamů za minutu a 277 záznamů za vteřinu (třeba ve špičce). Píšeš do 15-ti tabulek, takže plácnu 15*40 znaků = 277 zázn/sec *15tabulek *40 znaků = 166 200 znaků za vteřinu = 166KB za vteřinu (podle toho, jaké kódování použiješ), což NENÍ MOC. Jenže tu databázi nejspíš uvláčíš. Ale dá se z toho utéct třeba přes CREATE TABLE t (i INT) ENGINE = MEMORY; Což může a nemusí být dobré řešení, rozhodně když budeš mít hodně ramky, neutaháš disky a s rozumnou koncepcí to třeba rozlouskneš i při tomhle objemu dat. Obráceně, když budeme počítat 24 000 000 záznamů za den * 15 * 40 = dvacet až padesát giga ramky za den, to není drahé, sám tu mám v jedné mašině 64 GB ram, ramky stály litr 16GB (jsou tam čtyři moduly).

Nechci ti brát iluze, ale evidentně sis ukousl výrazně větší krajíc, než jsi schopen sníst.
...
Navíc v cloudu by ses nedoplatil.

Má pravdu předseda! Nejprve bych to rozjel lokálně a zjistil limity, zlepšil to, ořezal, vyčistil, zlepšil, optimalizoval a spočítal si, kolik mě bude provoz stát.

karel

Re:Data v cloudu - jakou službu zvolit?
« Odpověď #3 kdy: 14. 07. 2017, 06:29:09 »
Nelze než souhlasit s těmi nademnou, to co zaplatíš za server je prd proti tumu co bys za todle zaplatil v cloudu,
Pokud nechceš hned kupovat mašinu lze si pronajmou dedik server.

Také záleží co to je za data a jak vypadají ty agregace, možná mysql není nejlepší volba a spíš by to chtělo nějakou time series database. 

Kit

Re:Data v cloudu - jakou službu zvolit?
« Odpověď #4 kdy: 14. 07. 2017, 07:33:27 »
Tohle bych viděl jako práci pro Redis na relativně pomalé lokální mašině.


abc

Re:Data v cloudu - jakou službu zvolit?
« Odpověď #5 kdy: 14. 07. 2017, 09:08:41 »
Mozna by stalo za uvahu nove data hromadit bokem a pak je nejaky bulkem insertem kazdou hodinu vlozit do stage tabulky a dal poslat do hlavni tabulky...


k

Re:Data v cloudu - jakou službu zvolit?
« Odpověď #6 kdy: 14. 07. 2017, 09:22:01 »
Pokud se mají data i mazat, tak bych spíše pokukoval po nějaký db, která umí partitioning. Pro promazání pak může být výhodné dropovat jednotlivé partitions, musíš tedy pak data vkládat do partitions podle platnosti. Správný partitioning ti může také pomoci k rychlejším dotazům. 

Dále pro selekty a agregace mohou být výhodné materializované pohledy, které se jednou za čas přepočítají. Pokud tedy data nepotřebuješ úplně online.

wsh

Re:Data v cloudu - jakou službu zvolit?
« Odpověď #7 kdy: 14. 07. 2017, 10:43:36 »
Máme trochu podobné řešení na Postgresu u AWS. Řádově milióny řádků, které se denně vytváří a mají životnost v řádu dnů. Narozdíl od tebe nad nimi neděláme žádné složité dotazy, v podstatě jen podle pár integer id najít potřebné řádky a vypsat je. Navíc těch čtení je hodně málo.

I tak se s tím kolega docela natrápil. Největší problém byl s mazáním expirovaných záznamů - naivní přístup "budeme pravidelně volat DELETE" nefungoval. Nakonec to vyřešil partitioningem záznamů do samostatných tabulek podle data expirace (triggerem při INSERT) a dropováním celých těchto tabulek.

Tohle řešení běží bez větších problémů na db.m4.large. Limitem jsou IOPS kolem 100/s. Vzhled k pricingu RDS je levnější řešit dostatek IOPS nákupem většího storage než přikoupením přímo IOPS.


.

Re:Data v cloudu - jakou službu zvolit?
« Odpověď #8 kdy: 14. 07. 2017, 14:37:54 »
Máme trochu podobné řešení na Postgresu u AWS. Řádově milióny řádků, které se denně vytváří a mají životnost v řádu dnů. Narozdíl od tebe nad nimi neděláme žádné složité dotazy, v podstatě jen podle pár integer id najít potřebné řádky a vypsat je. Navíc těch čtení je hodně málo.

I tak se s tím kolega docela natrápil. Největší problém byl s mazáním expirovaných záznamů - naivní přístup "budeme pravidelně volat DELETE" nefungoval. Nakonec to vyřešil partitioningem záznamů do samostatných tabulek podle data expirace (triggerem při INSERT) a dropováním celých těchto tabulek.

Tohle řešení běží bez větších problémů na db.m4.large. Limitem jsou IOPS kolem 100/s. Vzhled k pricingu RDS je levnější řešit dostatek IOPS nákupem většího storage než přikoupením přímo IOPS.
Partitioning v takovémto případě je nutnost, nejen kvůli mazání, ale i kvůli indexům (většinou nejlépe na denní bázi). Indexy (v závislosti na požadavcích) jsou často větší než samotná db. Požadované agregace je jednoznačně potřeba řešit v paměti, otázkou je jak ošetřit případné výpadky.

Vaše řešení je ale přesto o řád menší, než co bylo požadováno. I tak by mne zajímalo (pokud to není tajné), jak vám vychází náklady na datové objemy (příchozí provoz, databáze) ve vztahu k celkovým nákladům na AWS.

wsh

Re:Data v cloudu - jakou službu zvolit?
« Odpověď #9 kdy: 14. 07. 2017, 16:18:23 »
Měsíčně:
RDS db.m4.large Multi-AZ instance hour (or partial hour) running PostgreSQL $262.08 + cca $50 za extra storage.

V poměru k nákladům na celou službu to není moc podstatné (máme celkem velký S3 storage + dost EC2 instancí).

U nás je výhoda, že v případě potřeby můžeme použít celou db rozdělit na více díky tomu, že nad daty nepotřebujeme řešit agregace. Pro větší řešení, kde by to bylo třeba, bych asi zvažoval jinou architekturu, možná nad DynamoDB (ale to už není moje doména).

Homeatcloud

Re:Data v cloudu - jakou službu zvolit?
« Odpověď #10 kdy: 01. 08. 2017, 10:50:17 »
Fujky, to nejsou vůbec dobré ceny. U nás na Homeatcloud https://www.homeatcloud.cz/ jsem se ve VPS konfigurátoru doklikal nanejvýš na 50 EUR. A to jsem ještě přihodil jednu nebo dvě položky z kategorie správa, čímž vznikla DBaaS :-). Naše storage HPE se těší na nějaký pořádný workload a pár set IOPS s ní ani nehne. Pojďte k nám.

Aoidhghean

Re:Data v cloudu - jakou službu zvolit?
« Odpověď #11 kdy: 01. 08. 2017, 11:40:15 »
Resim problem, kdy potrebuji zapisovat radove desitky milionu zaznamu denne do DB do v podstate jedine tabulky o cca 15ti sloupcich. Jednotlive zaznamy tam ovsem budou mit zivotnost jen par dnu, tydnu, nektere mesice = rychle budou pribyvat nove a stare mazat.

Ta data potrebuji filtrovat a agregovat a to velmi casto (roboti, kteri budou pokladat dotazy kazdou sekundu).

Nejvic pokukuju po MySQL (protoze je mi blizke) u GoogleCloud nebo AWS.

Jakou sluzbu u jakoho poskytovatele byste pro podobny ucel volili (i z hlediska ceny)? Dekuji za kazdy tip :-)
Nejlevnější bude vlastní server a na něm nějaká vhodná databáze, podle dotazů SQL nebo KV, to by chtělo rozvést.

Tomas2

  • ****
  • 310
    • Zobrazit profil
    • E-mail
Re:Data v cloudu - jakou službu zvolit?
« Odpověď #12 kdy: 02. 08. 2017, 00:51:34 »
MySQL/Mariadb takovéhle množství zvládne bez problémů, stejně jako řada jiných technologií, spam od Homeatcloud ignorují, už mají prsty všude. Redis je zbytečné sesložitění. Pokud se jedná o vyloženě časová data (IoT rocks!), elastic, influxdb a další budou lepší volbou.

A kolik peněz v tom máš? Spíš si sežeň člověka, který ti to navrhne a pohlídá návrh, nemá smysl po diskuzích shánět technologie, pokud nemáš zkušenosti, stejně se ti to někde rozbije a promrháš s tím moc času. Tohle není pro databázistu či architekta žádná velká výzva a podobné věci dělal už stokrát, riziko je malé a ty tím ušetříš, teda pokud si nechceš sám hrát a udělat si to jako koníček...