Ve čtvrtek 8.12. se uskutečnil LiveMeeting na téma novinek v Azure platformě za rok 2011. Zde jsou kompletní materiály a odpovědi na položené otázky.

Otázky

Otázky, stejně jako svoje odpovědi, jsem si dovolil jazykově a stylisticky upravit, případně spojit dohromady.

Data-tier aplication je nějaký nový způsop nahrazující “generate SQL scripts”?
Do určité míry ano. Pokud nasazujete novou aplikaci, tak je funkce velmi podobná. Podstatný rozdíl ovšem je, pokud nasazujete novou verzi aplikace. Řekněme, že máte schéma verze 1.0 v produkci a potřebujete nasadit nové schéma verze 1.1. V tu chvíli nemusíte generovat žádný rozdílový skript – zkrátka nasadíte schéma verze 1.1 a nástroje si rozdílový skript vygenerují a aplikují samy.

Umí data-tier application (.dacpac) i indexy a triggery?
Seznam podporovaných objektů pro tento způsob nasazení databázové vrstvy najdete na http://msdn.microsoft.com/en-us/library/ee210549.aspx. Indexy i triggery jsou podporovány.

Lze synchronizovat i změny tabulek (přidání sloupce, indexu, ...) nebo jde čistě o synchronizaci dat?
Udělal jsem malý experiment. Na začátku musí synchronizovaná tabulka existovat alespoň v jedné databázi, pak se v ostatních vytvoří ekvivalentní tabulky a sloupce, plus index primárního klíče. Případně musí tyto tabulky již existovat v ostatních databázích a mít kompatibilní tabulky,sloupce a typy k těm v první databázi. Jakmile je jednou nastavena synchronizace (definován tzv. sync dataset v podobě tabulek a sloupců), není již možné toto synchronizační schéma měnit. Do tabulek v jednotlivých databázích můžete přidávat sloupce, ale tyto budou vytvořeny pouze lokálně a nebudou synchronizovány.

Můžu provádět upgrade přes .dacpac soubor za běhu?
Při provádění upgradu se databáze přepíná do single-user režimu, tudíž bude ostatním uživatelům nedostupná.

Jak to je s transakčnostní při upgradu?
Pokud si tuto možnost v průvodci zvolíte, máte garantováno, že upgrade buď dopadne úspěšně anebo že databáze zůstane v původním stavu.

Pokud se provádí upgrade, nevznikne během té doby pomocná databáze, která by mi byla naúčtována?
Interní podrobnosti procesu nejsou známy, v každé případě se vám neúčtuje nic navíc.

Když si třeba přidám sloupec do databáze, nemůže mi upgrade schématu smazat nějaká data? Je to bezpečné anebo doporučujete před každým updatem schématu zálohovat?
Přidání sloupce do databáze je zcela bezpečné. Zkoušel jsem opačný postup, vymazání sloupce. V tom případě jste varováni, že upgrade způsobí ztrátu dat (pouze toho konkrétního sloupce) a musíte explicitně potvrdit pokračování v procesu. Každopádně vždycky si můžete nechat vygenerovat rozdílový skript a neprovádět upgrade. Obecně ovšem je záloha před jakoukoliv významnější změnou v produkční databázi dobrý nápad a lze ji jenom doporučit.

Pokud by ukládání/aktualizaci dat (např.faktura hlavičky i s položkami) klient prováděl v transakci, tak by nemohlo dojít k porušení konzistence při zálohování exportem. Nebo ano?
Samozřejmě nikdy nedojde k porušení konzistence databáze exportem, to je vyloučeno. Nicméně transakčně konzistentní nemusí být ona vyexportovaná data – například pokud časová posloupnost je: 1.vyexportování hlaviček faktur, 2. vložení nové faktury, 3. vyexportování řádků faktur.

Plánuje se nějaká možnost enumerace dat v cachi? Dnes není možné zjistit co je v cachi. Moje zkušenost s cache je, že není moc spolehlivá – příležitostně se resetuje, vrací chyby o momentální nedostupnosti. Plánuje se třeba i monitoring aktuálních připojení do cache pro sledování kvót připojení?
V on-premises verzi tato možnost je při používání regionů (viz http://msdn.microsoft.com/en-us/library/microsoft.applicationserver.caching.datacache.getobjectsinregion.aspx). Regiony nejsou zatím v cloudu podporovány, ale časem budou, takže se dá přepokládat, že tato možnost bude. Slyšel jsem, že se chystají velké změny v implementaci cache služby, takže snad se dočkáte.

Ještě by mě zajímalo to zálohování Azure Storage Když potřebuji někam uložit např. celý Storage account se všemi bloby atd. Pak je problém s tím, že když si každý den udělám zálohu storage, tak zaplatím milióny transakcí.
Nativní způsob zálohy Azure Storage není, musíte se o to postarat sám nebo mít např. repliku dat u sebe lokálně a používat nástroje pro přenos např. od Cerebrata anebo něco vlastního. V případě blobů se ovšem domnívám, že cena za transakce bude zanedbatelná ve srovnání s cenou za šířku pásma (pokud se provádí download dat, pokud replikujete směrem do cloudu, upload je zdarma).

Při deploymentu přes VS2010 se používá Azure Storage, ale nikde jsem tam svůj balíček nenašel (jde mi o uchování verzí deploymentu) – maže se to automaticky po nasazení, případně kde to můžu najít?
Balíček se uloží do vašeho storage accountu jako BLOB v kontejneru vsdeploy. Po nasazení je vymazán a toto chování zřemě nelze snadno modifikovat. Nicméně je třeba vzít v úvahu, že tento postup je určen pro vývojové prostředí, kde se nasazení provádí několikrát denně a jednotlivé verze nemají žádnou hodnotu. Pro produkční prostředí by bylo uchování jistě vhodné, ale zde určitě doporučuji spíše vytvoření vlastního skriptu pro upload a nasazení, např. pomocí PowerShellu.

Michael