Redgate Hub

  • Úvod
  • Jaké jsou možnosti, které lze použít pro vývojovou práci
  • Co chtějí vývojáři
  • Jak se liší jednotlivé edice
  • Má výběr vliv na používané nástroje?
  • LocalDB
    • Výhody LocalDb pro vývoj
    • Negativa LocalDb pro vývoj
  • Jaké další edice existují?
    • Express Edition
    • Developer Edition
    • Web, Standard, a Enterprise Edition
    • Azure SQL Database
  • Kontejnerová verze libovolné edice
  • Závěr

Úvod

Jako vývojář potřebuji databázi SQL Server, proti které mohu vyvíjet a testovat kód. Na výběr je několik možností a různých problémů, které je třeba mít na paměti. V tomto článku se podíváme na možnosti volby a na rozhodnutí, která je třeba učinit. Edice LocalDb serveru SQL Server byla vytvořena jako samozřejmá edice pro vývojáře; Má tato myšlenka praktický smysl a jaké alternativní výhody přinášejí vývojářům ostatní edice?”

Vývojová práce obvykle vyžaduje několik instancí serveru. Měly by být sdílené na jednom serveru, nebo distribuované na několika serverech či virtuálních strojích? Měly by mít všechny vývojové servery stejnou edici? Je rozumné spoléhat se na internetové připojení a založit všechny vývojové servery v cloudu, nebo je zde místo pro tradiční “SQL Server na notebooku”.

Před SQL Serverem 2005 nebylo těžké vybrat edici, kterou budete používat pro vývoj. Kromě samotného produktu existovala jen bezplatná vývojářská edice. Pak se to zkomplikovalo a komplikuje se to i nadále, přičemž se zavedením kontejnerů do Windows 2016 a SQL Serveru 2016 přicházejí pro vývojáře zajímavé permutace.

Jaké jsou možnosti, které by se daly použít pro vývojářskou práci?

V současné době existují:

  • Express Edition
  • Developer Edition
  • Web Edition
  • Standard Edition
  • Enterprise Edition
  • LocalDb
  • Azure databáze + Amazon RDS
  • Kontejnerová verze libovolné edice

Existuje také edice nazvaná Compact Edition, která byla zrušena, ale je stále k dispozici. Má některé podobnosti s SQL Serverem, ale má velmi malé rozměry a běží v procesu. Compact Edition používá dialekt SQL, ale není to edice SQL Serveru. Opravdu se nejedná o vhodnou vývojovou instanci pro vývoj a testování kódu, který bude nasazen na server SQL Server.

Co chtějí vývojáři

  1. Produktivita
    Jako databázový vývojář jsem nejproduktivnější, když mám vlastní instanci na vlastním počítači, kterou mohu zastavit, spustit, vypustit a vytvořit podle libosti. Když je databáze nebo instance na sdíleném serveru, pak zjišťuji, že vývoj je pomalejší – buď ostatní lidé mění věci, na kterých pracuji, nebo dělají jiné věci, které přeruší to, co by mělo být rychlým cyklem vývoje, nasazení a testování.
  2. Jednoduchost
    Vývojář by měl mít možnost trávit svůj čas psaním, testováním a laděním kódu a veškerý čas strávený správou zdrojů, jako jsou databáze SQL Serveru, znamená, že má méně času na věci, které jsou skutečně užitečné a přinášejí hodnotu pro firmu.
  3. Přesnost
    V ideálním světě by měl každý vývojář k dispozici rychlou, lokální a přesnou repliku produkčních dat s daty, která jsou co nejblíže produkčním datům. Díky tomu mohou testovat, zda se jejich změny budou v produkci chovat stejně jako ve vývojovém prostředí. Určitě existuje nespočet aplikací, které na vývojářském stroji fungují superrychle, ale při nasazení v třívrstvé architektuře s velkou latencí a síťovými voláními mezi službami jsou pomalejší. Důležité je také ověřit, zda kód napsaný pro jednu databázi skutečně poběží v jiné databázi. Pokud byste měli ve výrobě SQL Server 2008 R2, nemělo by smysl vyvíjet s SQL 2016 pomocí tabulek v paměti.

Jak moc se liší jednotlivé edice?

Při vývoji a testování databázové aplikace je často důležité vědět, že když píšeme kód a vidíme, jak se chová ve vývoji, dostaneme podobné chování i ve výrobě. Edice jsou definovány funkcemi, které jsou nainstalovány a povoleny; kód v jádře enginu je stejný, ať už používáte některou z bezplatných edic nebo edici enterprise. Problém nastane, když ve vývoji používáte například funkci pouze pro podnikovou edici, ale ve výrobě máte pouze instanci edice Standard. Úplné srovnání těchto edic zveřejnila společnost Microsoft zde: “Features Supported by the Editions of SQL Server 2016”

Má volba vliv na používané nástroje?

Všechny instance se chovají z hlediska jádra enginu a jazyka stejně; pokud tedy máte nástroj, který umí spravovat edici Enterprise, pak v zásadě umí spravovat i všechny ostatní edice. Ne všechny nástroje v minulosti tuto zásadu dodržovaly: Kdysi existovala verze nástroje SQL Management studio pro SQL Express, která byla omezena tím, že neuměla spravovat funkce plné edice. Nyní je SQL Server Management Studio zpětně kompatibilní s předchozími verzemi a stranově kompatibilní se všemi edicemi. V současné době je k dispozici ke stažení zdarma, takže můžete spravovat libovolnou instanci, aniž byste potřebovali plnou licenci.

Druhé omezení spočívá v tom, že abyste mohli používat LocalDb, musíte změnit knihovnu klienta SQL, a proto se starší verze SQLOLEDB a .Net nedokážou připojit – pokud máte aplikaci, která byla napsána v .net, která je starší než verze 4, pak se nemusí připojit.

Jakou máme na výběr edici pro vývoj?

LocalDb

Pokud nemáte specifický požadavek, který LocalDb nemůže splnit, pak musí být pro vývojáře první volbou. Podívejme se, co to je a jaké výhody pak nabízí.

LocalDb je ořezaná verze SQL Serveru, která byla speciálně navržena tak, aby byla lehká a snadno se rychle spouštěla a zastavovala. To znamená určitý kompromis, takže pro něj platí určitá omezení, ale pro většinu vývojářů je to opravdu skvělá volba, protože můžete rychle vytvářet, používat a ničit instance, které jsou specifické pro jednoho konkrétního uživatele.

LocalDb má některé další výhody: Pro každou instanci sdílí stejné binární soubory, takže nemusíte využívat spoustu místa na disku pro každou instanci, kterou potřebujete. To znamená, že je opravdu jednoduché ji spustit, pokud zjistíte, že v zápalu vývoje potřebujete novou instanci.

Vytvoření nové LocalDb je jednoduché: Stačí v příkazovém řádku zadat následující příkaz:

1
sqllocaldb create “instance name”

Tím se vytvoří nová instance, kterou můžete používat pod názvem “instance name”, na mém počítači trvá vytvoření nové instance asi 4 sekundy a pak asi další 2 sekundy, než se instance spustí. Instalace nové instance některého z ostatních typů SQL Serveru se měří na minuty až hodiny.

Pokud máte nainstalováno více verzí LocalDb, můžete vytvořit kteroukoli z těchto verzí opravdu snadno, stačí spustit tento kód v příkazovém řádku:

1
Verze Sqllocaldb

Získáte takovýto seznam:

Pakliže potřebujete instanci 2012, zadáte:

1
sqllocaldb create “instance name” 11. V případě, že budete potřebovat instanci 2012, zadáte:

.3

Tak byste získali novou instanci SQL Serveru 2012, ke které byste se mohli připojit.

Připojení k LocalDb je trochu jiné než připojení ke standardní instanci: Místo připojení k názvu stroje a předání portu nebo názvu instance předáte slovo “(localdb)” a pak název instance, takže pokud se instance jmenuje “test-instance”, předáte ji jako název serveru:

1
(localdb)\test-instance

Pro zjištění, které instance máte, můžete použít:

1
sqllocaldb info

Tento příkaz vypíše instance LocalDb, pro další zkoumání zadejte název instance do posledního příkazu, např:

1
sqllocaldb info “instance name”

Výstupem bude např. bude

  • jméno
  • verze
  • kterému uživateli patří
  • zda byla spuštěna nebo ne
  • čas posledního spuštění

Jestliže je spuštěna, uvede také cestu k pojmenovanému potrubí, na kterém je spuštěn. Pokud máte klienta, který nerozumí názvu serveru (localdb), pak se možná můžete k instanci připojit přes pojmenované roury.

LocalDb je skvělý pro vývoj proti, protože je velmi rychlý při vytváření a spouštění instancí, pokud často pracujete na různých projektech, můžete zastavovat a spouštět instance a mít k dispozici mnoho různých instancí bez režijních nákladů na jejich údržbu a ukládání na disk. Mají samozřejmě stejné nevýhody jako Express, protože se jedná o ořezané verze SQL Serveru. Neexistuje například fulltextové indexování, což může bránit jejich použití v některých aplikacích.

Výhody LocalDb pro vývoj:

  • Rychlý vývoj, je jednoduché vytvářet nové instance pro vývoj a testování.
  • Sdílí binární soubory mezi všemi instancemi stejné verze, takže nezabírá spoustu místa na disku a nemusíte udržovat mnoho různých verzí

Negativa LocalDb pro vývoj:

  • Neobsahuje některé základní funkce, jako je SQL Agent
  • nepodporuje FILESTREAM
  • nemůže být účastníkem slučovací replikace,
  • umožňuje pouze místní fronty pro Service Broker.
  • vždy běží v kontextu zabezpečení uživatele;

Jaké jsou další edice

Express Edition

Express Edition je bezplatná verze SQL Serveru, která je určena pro malé databáze s malým počtem uživatelů. Ve verzi 2016 je edice Express omezena na čtyři jádra, 1 GB ram na instanci a maximální velikost databáze 10 GB. Přestože jde o rozumnou velikost, není dostatečně velká pro většinu produkčních databázových aplikací, ale je užitečná pro vývojovou práci, pokud vaše vývojová instance nevyžaduje mnoho prostředků a je malá a pokud nevyvíjíte žádnou funkci závislou na funkcích Standard nebo Enterprise-only..5427>

Výhody Express pro vývoj:

  • Problémy s výkonem se při vývoji projeví nápadněji
  • Pro vývojové práce nejsou žádné licenční komplikace
  • Je vhodný pro individuální i sdílený vývoj.
  • Síťové služby lze konfigurovat stejně jako u plných edic, takže se můžete připojovat pomocí tcp ze vzdálených počítačů a lze použít službu SQL Browser pro povolení připojení pomocí názvu instance
  • Lze jej volně stáhnout a nainstalovat

Negativa Express pro vývoj:

  • Neobsahuje úplnou sadu funkcí jedné z produkčních verzí
  • Vyžaduje úplnou standardní instalaci pro vytvoření nové instance, což vyžaduje čas na instalaci a aktualizaci a poměrně hodně místa na disku pro jednu instanci
  • Neměla by se používat pro testování zátěže nebo výkonu

Vývojová edice

Vývojová edice je plně funkční Enterprise edice SQL Serveru, která má odstraněna všechna omezení. To je skvělé, pokud vyvíjíte aplikaci, která používá edici Enterprise, ale pokud vyvíjíte aplikaci, která používá edici Standard, pak můžete zjistit, že dosáhnete lepšího výkonu než v produkčním prostředí nebo nakonec použijete funkci, která je pouze pro podnikové prostředí. Může být nákladnou chybou vyvíjet kód, abyste při nasazení zjistili, že jej nelze spustit.

Pokud pracujete na jedné databázové aplikaci a budete ji nasazovat na existující server, který používá edici Enterprise, pak nemůžete udělat chybu, pokud použijete vývojovou edici SQL Serveru.

Licence pro SQL Server 2000 znamenala, že vývojářská edice byla zdarma, pokud se používala pro vývoj a testování, nikoli jako produkční databáze. Pokud byste se rozhodli používat vývojářskou edici pro produkční účely, pak by její cena byla stejná jako cena podnikové edice. Když byl vydán SQL 2005, změna v licencování znamenala, že za možnost používat vývojářskou edici se platil malý poplatek 50 USD. To znamenalo, že poměrně hodně lidí nemohlo používat vývojářskou verzi, zejména v týmech, kde vývojáři používali SQL jen zřídka nebo kde neměli předplatné MSDN, které vývojářům dodávalo licenci na vývojářskou edici. To bylo patrné zejména v týmech, které nepoužívají .net a které náhodou používaly SQL Server.

Podle licenční příručky SQL Server 2016 “SQL Server Developer Edition nesmí být používán v produkčním prostředí nebo s produktovými daty” – za předpokladu, že “produktovými daty” se rozumí “produkční data”, pak se zdá, že není možné zálohovat a obnovit produkční databázi pro testování, pokud server nelicencujete jako produkční. V příručce se také uvádí, že vývojářskou edici lze používat zdarma, pokud se zapojíte do programu “Dev Essentials” – pokud k vývoji/testování potřebujete jinou edici, například Enterprise nebo Standard, pak k nim máte přístup pomocí předplatného “Visual Studio”.

Výhody edice Developer pro vývoj:

  • Edice Developer je plnohodnotná edice Enterprise, takže pokud testujete a funguje na Developeru, pak by se kód měl chovat stejně jako na produkčním serveru Enterprise.

Nevýhody edice Developer pro vývoj:

  • Vhodné pouze pro vývoj databáze pro edici Enterprise. Protože některé funkce a chování edice Developer v edici Web nebo Standard chybí, Váš produkční systém bude mít méně funkcí než vývojové prostředí, což nikdy není dobrý nápad.
  • Používá poměrně hodně místa na disku na jednu instanci
  • Licencování není jasné, takže je třeba se poradit se zástupcem společnosti Microsoft pro licencování

Web, Standard a Enterprise edice

Všechny tyto verze vyžadují licenci pro použití ve výrobě. Webovou edici lze zakoupit pouze prostřednictvím poskytovatelů hostingu aplikací. Často je nejbezpečnější vyvíjet proti edici SQL Serveru, kterou budete nasazovat, určitě pro případné testy výkonu nebo škálovatelnosti, ne-li pro každodenní vývoj. Jak již bylo řečeno u edice Development, licencování je poněkud nejasné a případně budete muset zaplatit za licenci, abyste mohli některou z těchto edic používat v dev nebo testovacím prostředí.

Webová edice není běžně dostupná a obvykle si k ní musíte koupit licence prostřednictvím poskytovatele hostingu, což přidává další složitosti.

Výhody produkčních edic pro vývoj:

  • Budete vyvíjet a testovat v prostředí, které je podobné produkčnímu, což je pro vývojáře téměř vždy výhodné.

Nevýhody produkčních edic pro vývoj:

  • Vyžaduje úplnou standardní instalaci pro vytvoření nové instance:
  • Licencování není jednoznačné a vyžaduje konzultaci se zástupcem společnosti Microsoft pro licencování

Azure SQL Database

Používání cloudových poskytovatelů, kteří pro vás hostují databáze, může mít při vývoji a testování skutečný smysl, ale má i některé nevýhody. Kromě ceny, kterou musíte za jejich používání zaplatit, si musíte také uvědomit, že latence mezi vaším počítačem a databází bude obvykle výrazně vyšší než u místní nebo dokonce lokální instance LAN. Budete také potřebovat trvalé připojení k databázi, takže večerní dojíždění do práce a dokončování práce ve vlaku je nepravděpodobné.

Používání pro čistě vývojovou práci, kdy neustále nasazujete změny a spouštíte skripty, asi není ideální, ale pro testování se mohou opravdu hodit, zejména jako součást automatizovaných testovacích sad, které běží u hostovaných poskytovatelů, jako je Appveyor nebo VSTS.

Mít možnost vytvořit novou instanci, nasadit kód a spustit testy je skvělé pro proces kontinuální integrace (ci), takže můžete spustit více sestavení současně, aniž byste museli udržovat konkrétní instanci nebo databázi pro každé sestavení – jakmile přejdete na to, že máte jediné sestavení jako součást procesu ci, tento jednoduchý přístup k nasazování databází opravdu pomůže.

Výhody Azure SQL Database pro vývoj:

  • Jednoduchost při nastavování nových databází, zejména proto, že to lze automatizovat
  • Žádná údržba vývojových instancí, takže žádné záplatování, žádné zálohování atd.

Nevýhody Azure SQL Database pro vývoj:

  • Vhodnější pro testování než pro vývoj, protože je nutné trvalé připojení a bude pomalejší než vývoj lokálně
  • Musíte platit za minutu používání databáze

Kontejnerová verze libovolné edice

Systémy Windows 2016 i SQL Server 2016 mají podporu pro provoz SQL Serveru v kontejneru. Th-s nám dává veškerou flexibilitu, kterou máme s LocalDb a Azure+AWS pro rychlé spouštění a zastavování instancí. Měli bychom také vidět výhody v tom, že nebudeme muset záplatovat každou instanci zvlášť, pokud budeme používat společné obrazy pro naše instance.

Vydání systému Windows 2016 bylo nyní dokončeno, takže nyní můžeme potenciálně vytvářet a vyhazovat instance SQL Serveru (určitě SQL Server 2016) docela jednoduše, pokud máme Windows 10 nebo Windows 2016. Pokud jsme vázáni na starší verzi systému Windows nebo verzi SQL Serveru, nemusí být vytvoření funkční bitové kopie tak jednoduché.

Pokud se v systému Windows rozšíří kontejnery, mělo by to znamenat, že budeme moci vytvářet nové instance a spouštět a zastavovat instance bez zdlouhavého procesu instalace. V této fázi se zdá, že spouštění a zastavování instancí bude pomalejší, než je tomu v případě LocalDb.

Pokud testujete své databáze v prostředí podobném cloudu, jako je služba Microsoft VSTS, můžete také zjistit, že spuštění instance LocalDb je proveditelné, protože je již nainstalována. Naopak stažení obrazu databáze SQL Server 2016 a její následné spuštění by mohlo zabrat příliš mnoho minut sestavení.

Závěr

Při vývoji kódu pro databáze SQL Server máme jako vývojáři tři hlavní požadavky:

  • chceme být produktivní co nejrychleji;
  • chceme, aby naše prostředí bylo co nejjednodušší;
  • nechceme se nijak zvlášť spoléhat na dobré připojení k internetu;
  • chceme používat testovací verzi, která simuluje reálný svět z hlediska funkčnosti (ne nutně výkonu pro každodenní vývoj)

LocalDb je obvykle řešením pro většinu vývojářů SQL Serveru a pokud nemáte specifický požadavek, kvůli kterému jej nemůžete použít, vřele jej doporučuji.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.