Materializovaná zobrazení ve službě Azure Cosmos DB for Apache Cassandra (Preview)
PLATÍ PRO: Cassandra
Důležité
Materializovaná zobrazení ve službě Azure Cosmos DB for Cassandra jsou aktuálně ve verzi Preview. Tuto funkci můžete povolit pomocí Azure Portal. Tato verze Preview materializovaných zobrazení se poskytuje bez smlouvy o úrovni služeb. V tuto chvíli se materializovaná zobrazení pro produkční úlohy nedoporučují. Některé funkce této verze Preview nemusí být podporované nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview Microsoft Azure.
Materializovaná zobrazení, pokud jsou definovaná, poskytují prostředky k efektivnímu dotazování základní tabulky (nebo kontejneru ve službě Azure Cosmos DB) s filtry, které nejsou primárními klíči. Když uživatelé zapisuje do základní tabulky, materializované zobrazení se vytvoří automaticky na pozadí. Toto zobrazení může mít jiný primární klíč pro efektivní vyhledávání. Zobrazení bude také obsahovat pouze sloupce explicitně promítané ze základní tabulky. Toto zobrazení bude tabulka jen pro čtení.
Úložiště sloupců můžete dotazovat bez zadání klíče oddílu pomocí sekundárních indexů. Dotaz ale nebude efektivní pro sloupce s vysokou nebo nízkou kardinalitou. Dotaz by mohl prohledat všechna data a vyhledat malou sadu výsledků. Tyto dotazy jsou nakonec nákladné, protože se nechtěně spouští jako dotaz napříč oddíly.
V materializovaném zobrazení můžete:
- Jako vyhledávací nebo mapovací tabulku můžete použít k zachování kontrol napříč oddíly, které by jinak byly nákladné dotazy.
- Zadejte podmíněný predikát založený na SQL pro naplnění pouze určitých sloupců a dat, které splňují předběžnou podmínku.
- Vytvářejte zobrazení v reálném čase, která zjednodušují scénáře založené na událostech, které se běžně ukládají jako samostatné kolekce pomocí triggerů kanálu změn.
Výhody materializovaných zobrazení
Materializovaná zobrazení mají mnoho výhod, mezi které patří mimo jiné:
- Denormalizaci na straně serveru můžete implementovat pomocí materializovaných zobrazení. Díky denormalizaci na straně serveru se můžete vyhnout více nezávislým tabulkám a výpočetně složité denormalizaci v klientských aplikacích.
- Materializovaná zobrazení se automaticky aktualizují, aby byla konzistentní se základní tabulkou. Tato automatická aktualizace abstrahuje odpovědnosti vašich klientských aplikací s tím, že obvykle implementuje vlastní logiku pro provádění duálních zápisů do základní tabulky a zobrazení.
- Materializovaná zobrazení optimalizují výkon čtení čtením z jednoho zobrazení.
- Propustnost materializovaného zobrazení můžete zadat nezávisle.
- Můžete nakonfigurovat vrstvu materializovaného tvůrce zobrazení, která se mapuje na vaše požadavky a hydratuje zobrazení.
- Materializovaná zobrazení zlepšují výkon zápisu, protože operace zápisu je potřeba zapisovat pouze do základní tabulky.
- Implementace materializovaných zobrazení ve službě Azure Cosmos DB je navíc založená na modelu vyžádání. Tato implementace nemá vliv na výkon zápisu.
Začínáme s materializovanými zobrazeními
Vytvořte nové účty rozhraní API pro Cassandra pomocí Azure CLI a povolte funkci materializovaných zobrazení pomocí nativního příkazu nebo operace rozhraní REST API.
Přihlaste se k webu Azure Portal.
Přejděte k účtu rozhraní API pro Cassandra.
V nabídce prostředků vyberte Nastavení.
V části Nastavení vyberte Materializované zobrazení pro rozhraní API Cassandra (Preview).
V novém dialogovém okně vyberte Povolit a povolte tuto funkci pro tento účet.
Pod pokličkou
Rozhraní API pro Cassandra používá k údržbě zobrazení materializovanou výpočetní vrstvu tvůrce zobrazení.
Získáte flexibilitu při konfiguraci výpočetních instancí tvůrce zobrazení na základě požadavků na latenci a prodlevu, abyste mohli zobrazení hydratovat. Z technického hlediska tato výpočetní vrstva pomáhá efektivněji spravovat připojení mezi oddíly i v případě, že je velikost dat velká a počet oddílů je vysoký.
Výpočetní kontejnery se sdílejí mezi všemi materializovanými zobrazeními v rámci účtu služby Azure Cosmos DB. Každý zřízený výpočetní kontejner vytváří několik úloh, které čtou kanál změn ze základních oddílů tabulky a zapisují data do cílového materializovaného zobrazení. Výpočetní kontejner transformuje data podle definice materializovaného zobrazení pro každé materializované zobrazení v účtu.
Vytvoření tvůrce materializovaných zobrazení
Vytvořte tvůrce materializovaných zobrazení pro automatickou transformaci dat a zápis do materializovaného zobrazení.
Přihlaste se k webu Azure Portal.
Přejděte k účtu rozhraní API pro Cassandra.
V nabídce prostředků vyberte Tvůrce materializovaných zobrazení.
Na stránce Tvůrce materializovaných zobrazení nakonfigurujte skladovou položku a počet instancí pro tvůrce.
Poznámka
Tato možnost a stránka nabídky prostředků se zobrazí pouze v případě, že je pro účet povolená funkce Materializovaná zobrazení.
Vyberte Uložit.
Vytvoření materializovaného zobrazení
Po nastavení účtu a Tvůrce materializovaných zobrazení byste měli být schopni vytvářet materializovaná zobrazení pomocí CQLSH.
Poznámka
Pokud ještě nemáte nainstalovaný samostatný nástroj CQLSH, přečtěte si téma instalace nástroje CQLSH. Měli byste také aktualizovat připojovací řetězec v nástroji.
Tady je několik ukázkových příkazů pro vytvoření materializovaného zobrazení:
Nejprve vytvořte název
uprofile
prostoru klíčů .CREATE KEYSPACE IF NOT EXISTS uprofile WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 };
Dále vytvořte tabulku s názvem
user
v prostoru klíčů.CREATE TABLE IF NOT EXISTS uprofile.USER (user_id INT PRIMARY KEY, user_name text, user_bcity text);
Teď vytvořte materializované zobrazení s názvem
user_by_bcity
ve stejném prostoru klíčů. Pomocí dotazu určete, jak se data promítnou do zobrazení ze základní tabulky.CREATE MATERIALIZED VIEW uprofile.user_by_bcity AS SELECT user_id, user_name, user_bcity FROM uprofile.USER WHERE user_id IS NOT NULL AND user_bcity IS NOT NULL PRIMARY KEY (user_bcity, user_id);
Vložte řádky do základní tabulky.
INSERT INTO uprofile.USER (user_id, user_name, user_bcity) VALUES ( 101, 'johnjoe', 'New York' ); INSERT INTO uprofile.USER (user_id, user_name, user_bcity) VALUES ( 102, 'james', 'New York' );
Dotaz na materializované zobrazení
SELECT * FROM user_by_bcity;
Sledujte výstup z materializovaného zobrazení.
user_bcity | user_id | user_name ------------+---------+----------- New York | 101 | johnjoe New York | 102 | james (2 rows)
Volitelně můžete k vytvoření nebo aktualizaci materializovaného zobrazení použít také poskytovatele prostředků.
- Vytvoření nebo aktualizace zobrazení v rozhraní API pro Cassandra
- Získání zobrazení v rozhraní API pro Cassandra
- Zobrazení seznamu v rozhraní API pro Cassandra
- Odstranění zobrazení v rozhraní API pro Cassandra
- Aktualizace propustnosti zobrazení v rozhraní API pro Cassandra
Aktuální omezení
Rozhraní API pro implementaci materializovaných zobrazení ve verzi Preview cassandry má několik omezení:
- Materializovaná zobrazení nelze vytvořit v tabulce, která existovala před povolením podpory materializovaných zobrazení na účtu. Pokud chcete použít materializovaná zobrazení, vytvořte novou tabulku po povolení funkce.
- Pro klauzuli definice materializovaného
WHERE
zobrazení jsou aktuálně povoleny pouzeIS NOT NULL
filtry. - Po vytvoření materializovaného zobrazení pro základní tabulku
ALTER TABLE ADD
nejsou ve schématu základní tabulky povoleny operace.ALTER TABLE APP
je povolen pouze v případě, že žádné z materializovaných zobrazení není vybráno*
ve své definici. - Platí omezení pro velikost klíče oddílu (2 kB) a celkovou délku klíče clusteringu (1 kB). Pokud je tento limit velikosti překročen, odpovědná zpráva skončí ve frontě zpráv s jedem.
- Pokud základní tabulka obsahuje uživatelem definované typy (UDT) a definice materializovaného zobrazení obsahuje nebo
SELECT * FROM
obsahuje UDT v jednom z předpokládaných sloupců, aktualizace UDT nejsou pro účet povolené. - Materializovaná zobrazení můžou být nekonzistentní se základní tabulkou na několik řádků po automatickém převzetí služeb při selhání v oblasti. Chcete-li se vyhnout této nekonzistence, znovu vytvořte materializované zobrazení po převzetí služeb při selhání.
- Vytváření instancí materializovaného tvůrce zobrazení s 32 jádry se nepodporuje. V případě potřeby můžete vytvořit více instancí tvůrce s menším počtem jader.
Kromě výše uvedených omezení zvažte následující další omezení:
- Zóny dostupnosti
- Materializovaná zobrazení se nedají povolit u účtu, který má povolené oblasti zóny dostupnosti.
- Přidání nové oblasti se zónou dostupnosti se nepodporuje, jakmile
enableMaterializedViews
je u účtu nastavená hodnota true.
- Pravidelné zálohování a obnovení
- Materializovaná zobrazení se s procesem obnovení automaticky neobnoví. Po dokončení procesu obnovení budete muset materializovaná zobrazení znovu vytvořit. Potom byste měli před opětovným vytvořením materializovaných zobrazení a tvůrce nakonfigurovat
enableMaterializedViews
jejich obnovený účet.
- Materializovaná zobrazení se s procesem obnovení automaticky neobnoví. Po dokončení procesu obnovení budete muset materializovaná zobrazení znovu vytvořit. Potom byste měli před opětovným vytvořením materializovaných zobrazení a tvůrce nakonfigurovat
- Apache Cassandra
- Definování zásad řešení konfliktů pro materializovaná zobrazení není povolené.
- Operace zápisu nejsou v materializovaných zobrazeních povolené.
- Dotazy mezi dokumenty a použití agregačních funkcí se v materializovaných zobrazeních nepodporují.
- Schéma materializovaného zobrazení nelze po vytvoření změnit.
- Odstranění základní tabulky není povoleno, pokud je v ní definováno alespoň jedno materializované zobrazení. Nejprve je potřeba odstranit všechna zobrazení a pak je možné odstranit základní tabulku.
- Definování materializovaných zobrazení u kontejnerů se statickými sloupci není povolené.