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