IMDG

distribuované objektové úložiště

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 IMDBEditovat

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.

CharakteristikaEditovat

Ú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říklady použitíEditovat

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 GridEditovat

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í rysyEditovat

  • 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

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

OdkazyEditovat

Externí odkazyEditovat