In memory SQL

M.

Re:In memory SQL
« Odpověď #15 kdy: 21. 10. 2016, 11:00:28 »
A co zkusit do Postgresu strčit modul redis_fdw a napojit ho na Redis?
Pak  mám data v Redisu v RAM a přistupuji k tomu přes SQL skrz Postgres.
Ale zda se tím dá dosáhnout požadovaného nevím.
Já to řeším na aplikční úrovni, že co mé se kešuje v Redisu a co má být persitentní, to strká do PgSQL.


Trupik

Re:In memory SQL
« Odpověď #16 kdy: 21. 10. 2016, 11:38:33 »
Citace od: Paja kdy 21. 10. 2016, 10:08:37
Nejde mi o řešení nějaké aktulní situace. S posgresem žiju už 10 let a tuním ho, optimalizuju ... Trochu opruz je simulovat v něm materializované view.
Ale žiju v představě (možná mi ji někdo vyvrátíte), že postges používá nějakou komplikovanou strategii pro vlastní cache a co nemá u sebe je v cache souborů v RAM linuxu.
Myslím, že toto zodpovedá realite.
Citace od: Paja kdy 21. 10. 2016, 10:08:37
A příjde mi, že pokud by se celé tabulky a indexy načetli do RAM v lineárním adresování, snížila by se režie přístupu k datům v RAM. Nemuselo by se to přepočítávat na bloky atd.
Ono by to bolo lineárne len do prvého UPDATE/INSERT/DELETE. Potom by sa tie dáta museli opäť všetky zoradiť, alebo by sa museli aj tak organizovať do stromových štruktúr, teda indexovať.
Citace od: Paja kdy 21. 10. 2016, 10:08:37
Možná by to mohlo umět používat i SIMD nebo podobné moderní instrukce CPU, mohlo by to být lépe optimalizované pro víceprocesorové zpracování a kdoví co dál.
Neviem ako SIMD, ale viacprocesorové spracovanie jednotlivej query (parallel execution) je vo verzii 9.6, ktorá vyšla pred mesiacom.
Citace od: Paja kdy 21. 10. 2016, 10:08:37
Prostě by stejný dotaz mohl trvat třeba jen polovinu doby. A zrychlit odezvy má smysl vždy.
Veľké zrýchlenie odozvy sa dá dosiahnuť použitím cache (napríklad memcached). Bohužiaľ to vyžaduje zásahy do aplikácie.
Citace od: Paja kdy 21. 10. 2016, 10:08:37
Jde mi o to včas přejít na nové technologie. Ale na to jak dlouho se in-memory databáze používají, jsem nenašel náhradu za postgresql.
To je chvályhodný cieľ, držím palce.

andrej

Re:In memory SQL
« Odpověď #17 kdy: 21. 10. 2016, 12:20:05 »
nema nahodou postgres pri dostatocne velkej pamati v podstate vsetko v RAM?

Kit

Re:In memory SQL
« Odpověď #18 kdy: 21. 10. 2016, 12:39:45 »
Citace od: andrej kdy 21. 10. 2016, 12:20:05
nema nahodou postgres pri dostatocne velkej pamati v podstate vsetko v RAM?

V podstatě ano.

Tazatel se však ptá, zda v takovém případě používá i algoritmy, které jsou vhodnější pro RAM než pro disk, tedy binární vyhledávání místo B-stromu. Ovšem rozdíly budou podle mne spíše marginální.

Pokud tedy PostgreSQL v některých případech výkonově nestačí, je nutné se spíš zaměřit na prováděcí plány dotazů, strukturu triggerů a případně i vnořených procedur. Pokud bude pravidelně selektovat agregáty velkých tabulek, tak ani přesunutí do RAM problém nevyřeší.

dewfw

Re:In memory SQL
« Odpověď #19 kdy: 21. 10. 2016, 22:21:37 »
Mozem odporucit mnesia (erlang). Je to by default in memory a vie sa to sem tam odlozit i na disk. Je to high performance, len to nema moc sql pristup. Co sa tyka toho, tak imho ci uz clovek pise sql, alebo pouzije priamo vhodny programovaci jazyk (funkcionalny ;) je jedno. Dokonca to sql je v mnohych pripadoch len "write once, do not read" stav. Pokial clovek nevyuziva CTE, tak normalizovane tabulky nutia casto k sialenym (neprehladnym) selektom.


podhy

Re:In memory SQL
« Odpověď #20 kdy: 22. 10. 2016, 16:37:34 »
MemSQL

čumil

Re:In memory SQL
« Odpověď #21 kdy: 22. 10. 2016, 17:47:07 »
Máte to blbě

správně je to

In memory of SQL

Pavel Stěhule

  • *****
  • 549
  • Místo: Benešov
Re:In memory SQL
« Odpověď #22 kdy: 28. 10. 2016, 10:32:49 »
Extrémně rychlá paměťová SQL databáze je monetdb https://www.monetdb.org/Home

Dneska je celá kategorie databází označovaná jako NewSQL - která už pracuje s daty úplně jinak než Postgres - Postgres má data ve formátu, který vyhovuje uložení na disk - nové databáze už si data drží primárně v RAMce a na disk udělají občas backup a na disku si drží transakční log. Když máte štěstí, tak tyto databáze mohou být o řád až dva rychlejší než klasická db (data ale musí být 100% v RAM). Na druhou stranu vzhledem k mládí a k výrazně nižšímu počtu uživatelů musí člověk počítat s větší pravděpodobností výskytu chyb a provozních problémů. Klasické databáze jsou ověřené časem a počtem uživatelů. To u nových db samozřejmě neplatí. Hodně záleží na zátěži, typu a objemu dat - někdy bude benefit větší, někdy menší.

M.

Re:In memory SQL
« Odpověď #23 kdy: 28. 10. 2016, 12:16:58 »
MonetDB ale není klasická in RAM DB, ne (při porovnání s memcached/Redis/...)? Jen s trocou štestí mám data v RAM a jede rychle, ale pořád aktivně jede přes disk.
Když má data v RAM, tak je asi rychlejší jak PotgreSQL s podobně obsazenou a využitou RAM.

Pavel Stěhule

  • *****
  • 549
  • Místo: Benešov
Re:In memory SQL
« Odpověď #24 kdy: 28. 10. 2016, 22:40:22 »
Citace od: M. kdy 28. 10. 2016, 12:16:58
MonetDB ale není klasická in RAM DB, ne (při porovnání s memcached/Redis/...)? Jen s trocou štestí mám data v RAM a jede rychle, ale pořád aktivně jede přes disk.
Když má data v RAM, tak je asi rychlejší jak PotgreSQL s podobně obsazenou a využitou RAM.
Memcached/Redis to jsou více/méně sofistikované cache key/value dat - jedná se o jednoduché jednoúčelové databáze. Oprati tomu je Monet obecnější - s velkou většinou funkcí typických pro paměťové databáze - sloupcové uložení dat, efektivní komprimace, optimalizace CPU, diskové operace jsou nahrazeny virtuální pamětí. Paměťové databáze jsou relativní novinkou, těžko se dá označit nějaká technologie jako klasická. V každém případku je MonetDB jednou z nejstarších databází, které rovnou byly navrhovány jako paměťové - cca 20 a více let. O memchaced pravděpodobně nikdo z jejich tvůrců neuvažoval jako o databázi - byl to jednoduchý jednoúčelový nástroj, který umožňoval sdílený přístup do paměti.

ntpt

Re:In memory SQL
« Odpověď #25 kdy: 29. 10. 2016, 19:07:53 »
A co tkahle použít v postgresu TABLESPACES které umožní umístit určité tabulky na jiný disk nebo RAM disk . Podotýkám, že  u jednotlivé tablespace lze nastavit optimalizace jné než v centrálním clusteru

Pavel Stěhule

  • *****
  • 549
  • Místo: Benešov
Re:In memory SQL
« Odpověď #26 kdy: 30. 10. 2016, 05:44:17 »
Citace od: ntpt kdy 29. 10. 2016, 19:07:53
A co tkahle použít v postgresu TABLESPACES které umožní umístit určité tabulky na jiný disk nebo RAM disk . Podotýkám, že  u jednotlivé tablespace lze nastavit optimalizace jné než v centrálním clusteru
Pokud se bavíme o Postgresu, tak to je nesmyl - je úplně jedno jestli jsou data ve file system cachi nebo v Pg cache nebo v ramdisku - pokaždé mají stejný formát.