IMDG

Z Wikipedie, otevřené encyklopedie

IMDG (anglicky In-Memory Data Grid) je zkratka pro distribuované objektové úložiště. Data jsou uložena v operační paměti ve tvaru klíč - hodnota. Oproti tradičním systémům, ve kterých jsou typy klíčů a hodnot omezeny polem bajtů (byte array) nebo řetězcem (String), v IMDG žádné omezení není: lze použít jakýkoliv objekt. Tato vlastnost významně zvyšuje agilitu tím, že umožňuje ukládat jakékoliv objekty bez serializace/deserializace navíc.

Rozdil od IMDB[editovat | editovat zdroj]

Na rozdíl od IMDB, In-Memory Data Grid osvobozuje uživatele od nutnosti používání ORM a umožňuje přistupovat v datům jako k obecné hash-tabulce. To se hodí pro snadné využití v nejpopulárnějších programovacích jazycích, jako Java, C#/.Net, Python, C++ atd.

Charakteristika[editovat | editovat zdroj]

Úkolem, který řeší IMDG je zajištění rychlého přístupu k datům prostřednictvím jejich uložení do operační paměti (RAM) v distribuovaném stavu.

Moderní in-memory technologie umožňují spojení s existujícími úložišti dat jako například Hadoop nebo Postgresql. V takovém případě bude IMDG systém splňovat funkci cache.

Různé systémy mají různé mechanismy zamykání přístupu k datům, nejmodernější poskytují konkurenční zamykací mechanismus (jako například MVCC - Multi-Version Concurrency Control) a zároveň splňují ACID vlastnosti s největším výkonem.

Příklad použití IMDG
Příklad použití IMDG

Příklady použití[editovat | editovat zdroj]

IMDG se dá použít buď jako datové úložiště, nebo jako cache vrstvu pro již existující databázi. Na obrázku je uvedena schema klasického použití IMDG.

V takovém konkrétním případě každý klíč s množinou hodnot patří do jednotlivého uzlu. Vnější databáze není povinná, ale pokud se vyskytuje, tak, zpravidla, IMDG bude automatické načítat a zapisovat data do databáze.

Použití IMDG a Compute Grid[editovat | editovat zdroj]

Typická in-memory architektura rozděluje data v klasteru pomocí IMDG, pak se spustitelný kód posílá do těch serverů, ve kterých jsou potřebná data. Integrace mezi IMDG a Computer Grid je velmi důležitá, protože získaný spustitelný kód (výpočetní úkol), obvykle je součástí gridových výpočtů (Grid computing) a musí být správně nasazen (deploy), sbalancován (load-balancing), mít vysokou stupeň odolnosti proti selhání (fail-over) a mít možnost být spustitelný podle předem daného rozvrhu.

Specifické funkcionální rysy[editovat | editovat zdroj]

  • Neomezený typ uložených klíčů a hodnot.
  • Podpora distribuovaných ACID transakcí. Obecně řečeno 2-phase-commit (2PC) protokol zajišťuje konzistenci dat uvnitř klasteru. Systémy IMDG splňují ACID (atomicita (atomicity), konzistence (consistency), izolovanost (isolation), trvalost (durability)).
  • Podpora stovek tisíc změn in-memory dat.
  • Snadná horizontální škálovatelnost bez rozložení.
  • Rychlejší přístup k datům díky uložení v RAM paměti.

Existující IMDG řešení[editovat | editovat zdroj]

  • Hazelcast IMDG
  • GridGain (Apache Ignite)
  • Redis
  • Apache Geode
  • Infispan
  • Ehcache

Odkazy[editovat | editovat zdroj]

Externí odkazy[editovat | editovat zdroj]