Redgate Hub

  • Introducere
  • Ce opțiuni există care ar putea fi folosite pentru munca de dezvoltare?
  • Ce doresc dezvoltatorii?
  • Cât de diferite sunt edițiile
  • Afectează alegerea instrumentele care sunt folosite?
  • LocalDB
    • Beneficii ale LocalDb pentru dezvoltare
    • Negative ale LocalDb pentru dezvoltare
  • Ce alte ediții există?
    • Express Edition
    • Developer Edition
    • Web, Standard, and Enterprise Editions
    • Azure SQL Database
  • Versiune containerizată a oricărei ediții
  • Concluzie

Introducere

În calitate de dezvoltator, am nevoie de o bază de date SQL Server pe baza căreia să pot dezvolta și testa codul. Există mai multe opțiuni din care puteți alege și diverse aspecte de care ar trebui să țineți cont. În acest articol vom examina opțiunile și deciziile pe care trebuie să le luați. Ediția LocalDb a SQL Server a fost creată pentru a fi ediția evidentă pentru dezvoltatori; Are această idee un sens practic și ce avantaje alternative prezintă celelalte ediții pentru dezvoltatori?

Lucrările de dezvoltare vor necesita, de obicei, un număr de instanțe de server. Ar trebui ca acestea să fie partajate pe un singur server sau distribuite pe un număr de servere sau mașini virtuale? Ar trebui ca toate serverele de dezvoltare să fie din aceeași ediție? Este înțelept să vă bazați pe o conexiune la internet pentru a vă baza toate serverele de dezvoltare în cloud sau există un loc pentru tradiționalul “SQL Server pe laptop”.

Înainte de SQL Server 2005, nu era greu să alegeți ediția pe care o veți folosi pentru dezvoltare. În afară de produsul în sine, exista doar o ediție gratuită pentru dezvoltatori. Apoi a devenit mai complicat și continuă să o facă, cu unele permutări interesante care vin pentru dezvoltatori odată cu introducerea containerelor în Windows 2016 și SQL Server 2016.

Ce opțiuni există care ar putea fi folosite pentru munca de dezvoltare?

În prezent există:

  • Express Edition
  • Developer Edition
  • Web Edition
  • Standard Edition
  • Enterprise Edition
  • LocalDb
  • Azure database + Amazon RDS
  • Versiune containerizată a oricărei ediții

Există și o ediție numită Compact Edition, care a fost scoasă din uz, dar este încă disponibilă. Aceasta are unele asemănări cu SQL Server, dar are o amprentă foarte mică și rulează în proces. Compact Edition rulează un dialect SQL, dar nu este o ediție a SQL Server. Nu este într-adevăr o instanță de dezvoltare adecvată pentru dezvoltarea și testarea codului care va fi implementat în SQL Server.

Ce își doresc dezvoltatorii?

  1. Productivitate
    Sunt cel mai productiv ca dezvoltator de baze de date atunci când am propria mea instanță pe propria mea mașină pe care o pot opri, porni, abandona și crea în voie. Atunci când baza de date sau instanța se află pe un server partajat, atunci constat că dezvoltarea este mai lentă – fie alte persoane schimbă lucruri la care lucrez, fie fac alte lucruri care întrerup, ceea ce ar trebui să fie, un ciclu rapid de dezvoltare, implementare și testare.
  2. Simplitate
    Un dezvoltator ar trebui să fie liber să își petreacă timpul scriind, testând și depanând codul și orice timp petrecut gestionând resurse cum ar fi bazele de date SQL Server înseamnă că are mai puțin timp pentru a face lucrurile care sunt cu adevărat utile și care oferă valoare afacerii.
  3. Precizie
    Într-o lume ideală, fiecare dezvoltator ar avea o replică rapidă, locală, exactă a producției cu date cât mai apropiate de datele de producție. Cu ajutorul acesteia, ei pot testa dacă modificările lor se vor comporta la fel în producție ca în mediul lor de dezvoltare. Trebuie să existe nenumărate aplicații care funcționează foarte rapid pe o mașină de dezvoltator, dar care sunt mai lente atunci când sunt implementate într-o arhitectură pe trei niveluri, cu multă latență și apeluri de rețea între servicii. De asemenea, este important să verificați dacă codul pe care îl scrieți pentru o bază de date va funcționa efectiv pe o altă bază de date. Dacă ați avea SQL Server 2008 R2 în producție, nu ar avea rost să dezvoltați cu SQL 2016 folosind tabele în memorie.

Cât de diferite sunt edițiile?

Când dezvoltăm și testăm o aplicație de baze de date, este adesea important să știm că, atunci când scriem codul și putem vedea cum se comportă în dezvoltare, vom obține un comportament similar în producție. Edițiile sunt definite de caracteristicile care sunt instalate și activate; codul din motorul de bază este același, indiferent dacă folosiți una dintre edițiile gratuite sau ediția enterprise. Problema apare atunci când folosiți, să zicem, o caracteristică exclusiv pentru întreprinderi în dezvoltare, dar aveți doar o instanță a ediției Standard în producție. Comparația completă a acestor ediții este publicată de Microsoft aici “Features Supported by the Editions of SQL Server 2016”

Afectează alegerea instrumentele utilizate?

Toate instanțele se comportă la fel în ceea ce privește motorul de bază și limbajul; prin urmare, dacă aveți un instrument care poate gestiona ediția Enterprise, atunci poate, în principiu, să gestioneze și orice altă ediție. Nu toate instrumentele din trecut au respectat acest principiu: a existat cândva o versiune a SQL Management studio pentru SQL Express care era limitată la faptul că nu putea gestiona caracteristicile ediției complete. Acum, SQL Server Management Studio este compatibil cu versiunile anterioare și compatibil lateral cu toate edițiile. În prezent, este disponibil ca descărcare gratuită, astfel încât puteți gestiona orice instanță fără a avea nevoie de o licență completă.

A doua limitare este că, pentru a utiliza LocalDb, trebuie să modificați biblioteca clientului SQL și astfel, versiunile mai vechi de SQLOLEDB și .Net nu se pot conecta – dacă aveți o aplicație care a fost scrisă în .net care este anterioară versiunii 4, atunci este posibil să nu se conecteze.

Ce alegere de ediții avem pentru a dezvolta?

LocalDb

Dacă nu aveți o cerință specifică pe care LocalDb nu o poate îndeplini, atunci aceasta trebuie să fie prima alegere pentru dezvoltatori. Să analizăm ce este și apoi ce beneficii oferă.

LocalDb este o versiune redusă a SQL Server care a fost special concepută pentru a fi ușoară și ușor de pornit și oprit rapid. Acest lucru înseamnă un compromis, astfel încât există unele restricții pentru acesta, dar este într-adevăr o alegere excelentă pentru majoritatea dezvoltatorilor, deoarece puteți crea, utiliza și distruge rapid instanțe care sunt specifice unui anumit utilizator.

LocalDb are câteva beneficii suplimentare: Împarte aceleași binare pentru fiecare instanță, astfel încât nu trebuie să folosiți mult spațiu pe disc pentru fiecare instanță de care aveți nevoie. Acest lucru înseamnă că este foarte simplu să porniți una dacă descoperiți că aveți nevoie de o nouă instanță în toiul unei sesiuni de dezvoltare.

Crearea unui nou LocalDb este simplă: Trebuie doar să tastați următoarele în shell-ul de comandă:

1
sqllocaldb create “nume instanță”

Aceasta va crea o nouă instanță pe care o puteți folosi numită “nume instanță”, pe calculatorul meu durează aproximativ 4 secunde pentru a crea o nouă instanță și apoi încă aproximativ 2 secunde pentru a porni instanța. Instalarea unei noi instanțe de oricare dintre celelalte tipuri de SQL Server se măsoară în minute sau ore.

Dacă aveți mai multe versiuni de LocalDb instalate, puteți crea oricare dintre aceste versiuni foarte ușor, doar executând acest cod într-o comandă shell:

Apoi, dacă aveți nevoie de o instanță 2012, veți tasta:

1
sqllocaldb create “instance name” 11.3

Atunci veți obține o nouă instanță SQL Server 2012 la care vă puteți conecta.

Conectarea la LocalDb este puțin diferită de conectarea la o instanță standard: În loc să vă conectați la numele mașinii și să treceți fie un port, fie un nume de instanță, treceți cuvântul “(localdb)” și apoi numele instanței, astfel încât, dacă instanța se numește “test-instanță”, veți trece acest lucru ca nume de server:

1
(localdb)\test-instance

Pentru a afla ce instanțe aveți, puteți folosi:

1
sqllocaldb info

Aceasta va lista instanțele LocalDb, pentru a examina una în plus treceți numele instanței la ultima comandă, cum ar fi::

1
sqllocaldb info “nume instanță”

Lovitura de ieșire va fi fi

  • numele
  • versiunea
  • cu ce utilizator aparține
  • dacă a fost pornită sau nu
  • ultima oră de pornire

Dacă este pornită, oferă, de asemenea, calea de acces la conducta numită pe care rulează. Dacă aveți un client care nu înțelege numele de server (localdb), atunci poate că vă puteți conecta prin intermediul unor țevi numite la instanță.

LocalDb este grozav pentru dezvoltarea împotriva pentru că este atât de rapid să creați și să porniți instanțe, dacă lucrați adesea la diferite proiecte, puteți opri și porni instanțe și puteți avea o mulțime de instanțe diferite disponibile fără a fi nevoiți să le întrețineți și să le stocați pe disc. Evident, acestea au aceleași dezavantaje ca și Express, în sensul că sunt versiuni reduse ale SQL Server. De exemplu, nu există indexare full text, ceea ce le poate împiedica să poată fi utilizate în anumite aplicații.

Beneficii ale LocalDb pentru dezvoltare:

  • Dezvoltare rapidă, este simplu să creați noi instanțe pentru dezvoltare și testare.
  • Împărtășește binarele între toate instanțele aceleiași versiuni, astfel încât nu ocupați mult spațiu pe disc sau nu trebuie să mențineți multe versiuni diferite

Negative ale LocalDb pentru dezvoltare:

  • Nu include unele caracteristici fundamentale, cum ar fi SQL Agent
  • nu suportă FILESTREAM
  • nu poate fi un abonat de replicare fuzionată,
  • permite doar cozi locale pentru Service Broker.
  • se execută întotdeauna în contextul de securitate al utilizatorului;

Ce alte ediții există?

Express Edition

Ediția Express este o versiune gratuită a SQL Server care este destinată bazelor de date mici cu un număr redus de utilizatori. În versiunea 2016, Express este limitată la patru nuclee, 1 GB de RAM per instanță și o dimensiune maximă a bazei de date de 10 GB. Deși este o dimensiune rezonabilă, nu este suficient de mare pentru majoritatea aplicațiilor de baze de date de producție, dar este utilă pentru activitatea de dezvoltare dacă instanța dvs. de dezvoltare nu necesită multe resurse și este mică și dacă nu dezvoltați nicio funcționalitate care depinde de caracteristicile Standard sau Enterprise-only..

Beneficii ale Express pentru dezvoltare:

  • Problemele de performanță vor apărea mai vizibil în dezvoltare
  • Nu există complicații legate de licență pentru munca de dezvoltare
  • Este potrivit atât pentru dezvoltarea individuală, cât și pentru cea partajată.
  • Serviciile de rețea pot fi configurate la fel ca în cazul edițiilor complete, astfel încât vă puteți conecta cu tcp de la mașini la distanță și pot fi folosite de serviciul SQL Browser pentru a permite conexiuni folosind numele instanței
  • Poate fi descărcat și instalat în mod liber

Negative ale Express pentru dezvoltare:

  • Nu include setul complet de caracteristici al uneia dintre versiunile de producție
  • Este nevoie de o instalare standard completă pentru a crea o nouă instanță, acest lucru necesită timp pentru instalare și actualizare și destul de mult spațiu pe disc pentru fiecare instanță
  • Nu ar trebui să fie folosit pentru teste de încărcare sau de performanță

Developer Edition

Developer Edition este o ediție Enterprise complet funcțională a SQL Server care are toate limitările eliminate. Acest lucru este grozav dacă dezvoltați o aplicație care utilizează ediția Enterprise, dar dacă dezvoltați o aplicație care utilizează ediția Standard, atunci este posibil să constatați că obțineți o performanță mai bună decât în producție sau să ajungeți să utilizați o caracteristică care este numai pentru întreprinderi. Poate fi o greșeală costisitoare să dezvoltați cod, doar pentru a descoperi că nu poate fi rulat atunci când îl implementați.

Dacă lucrați la o singură aplicație de baze de date și veți implementa pe un server existent care utilizează ediția Enterprise, atunci nu puteți greși prea mult dacă utilizați ediția de dezvoltare a SQL Server.

Licența pentru SQL Server 2000 însemna că ediția pentru dezvoltatori era gratuită atâta timp cât era utilizată pentru dezvoltare și testare, mai degrabă decât ca bază de date de producție. Dacă ați fi decis să folosiți ediția pentru dezvoltatori pentru producție, atunci aceasta ar fi avut același preț ca și ediția enterprise. Când a fost lansat SQL 2005, o modificare a licențelor a însemnat că pentru a putea utiliza ediția pentru dezvoltatori a fost necesară o mică taxă de 50 de dolari pentru fiecare dezvoltator. Acest lucru a însemnat că o mulțime de oameni nu au putut utiliza versiunea de dezvoltare, în special în echipele în care dezvoltatorii foloseau SQL doar rareori sau în care nu aveau abonamente MSDN care să le ofere dezvoltatorilor o licență pentru ediția pentru dezvoltatori. Acest lucru a fost vizibil în special în echipele non .net care se întâmplau să folosească SQL Server.

Potrivit ghidului de licențiere SQL Server 2016, “SQL Server Developer Edition nu poate fi utilizat într-un mediu de producție sau cu date de produs” – presupunând că “date de produs” înseamnă “date de producție”, atunci se pare că nu este posibil să se facă backup și să se restaureze o bază de date de producție pentru a o testa, cu excepția cazului în care se acordă o licență pentru server ca server de producție. Ghidul precizează, de asemenea, că ediția pentru dezvoltatori poate fi utilizată gratuit dacă vă înscrieți în programul “Dev Essentials” – dacă aveți nevoie de o ediție diferită, cum ar fi Enterprise sau Standard, pentru a dezvolta/testa, atunci le puteți accesa utilizând un abonament “Visual Studio”.

Beneficii ale ediției Developer pentru dezvoltare:

  • Ediția Developer este o ediție Enterprise cu drepturi depline, astfel încât, dacă testați și funcționează pe Developer, atunci codul ar trebui să se comporte la fel ca serverul Enterprise de producție.

Negative ale ediției Developer pentru dezvoltare:

  • Sunt potrivite doar pentru dezvoltarea unei baze de date pentru Enterprise Edition. Deoarece unele dintre caracteristicile și comportamentul ediției Developer Edition lipsesc pe Web sau Standard Edition, Sistemul dvs. de producție va avea mai puține caracteristici decât mediul dvs. de dezvoltare, ceea ce nu este niciodată o idee bună.
  • Utilizează destul de mult spațiu pe disc per instanță
  • Licența nu este clară, deci necesită o verificare cu reprezentantul Microsoft pentru licențe

Edițiile Web, Standard și Enterprise

Toate aceste versiuni necesită o licență pentru a fi utilizate în producție. Puteți cumpăra ediția web numai prin intermediul furnizorilor de găzduire a aplicațiilor. Adesea este cel mai sigur să dezvoltați în funcție de ediția SQL Server pe care o veți implementa, cu siguranță pentru orice teste de performanță sau scalabilitate, dacă nu pentru dezvoltarea de zi cu zi. După cum s-a discutat cu ediția Development, acordarea licențelor este puțin neclară și este posibil să trebuiască să plătiți o licență pentru a utiliza una dintre aceste ediții într-un mediu de dezvoltare sau de testare.

Ediția web nu este disponibilă în general și, în mod normal, trebuie să cumpărați licențe pentru aceasta prin intermediul unui furnizor de găzduire, ceea ce adaugă o anumită complexitate suplimentară.

Beneficii ale edițiilor de producție pentru dezvoltare:

  • Vă veți dezvolta și testa într-un mediu similar cu cel de producție, ceea ce este aproape întotdeauna un lucru bun pentru dezvoltatori.

Negative ale edițiilor de producție pentru dezvoltare:

  • Este necesară o instalare standard completă pentru a crea o nouă instanță: Acest lucru necesită timp pentru instalare și actualizare și destul de mult spațiu pe disc pentru fiecare instanță
  • Licența nu este clară și necesită verificarea cu reprezentantul Microsoft pentru licențe

Azure SQL Database

Utilizarea furnizorilor de cloud pentru a găzdui baze de date pentru dvs. poate avea un sens real atunci când dezvoltați și testați, dar aceștia au unele dezavantaje. În afară de prețul pe care trebuie să îl plătiți pentru a le utiliza, trebuie să înțelegeți că latența dintre mașina dvs. și baza de date va fi de obicei semnificativ mai mare decât o instanță locală sau chiar locală LAN. De asemenea, veți avea nevoie de o conexiune persistentă la baza de date, astfel încât acele navete de seară care finalizează o lucrare în tren sunt puțin probabile.

Utilizarea acestora pentru munca de dezvoltare pură, în care implementați în mod constant modificări și rulați scripturi, probabil că nu este ideală, dar acestea își pot dovedi cu adevărat utilitatea pentru testare, în special ca parte a suitelor de testare automată care rulează în furnizorii găzduiți, cum ar fi Appveyor sau VSTS.

Dispunând de posibilitatea de a crea o nouă instanță, de a implementa codul și de a rula testele este grozav pentru un proces de integrare continuă (IC), astfel încât să puteți rula mai multe compilări concomitent, fără a fi nevoie fie să mențineți o instanță sau o bază de date specifică pentru fiecare compilare – odată ce treceți la a avea o singură compilare ca parte a procesului de IC, această abordare simplă a implementării bazelor de date este cu adevărat utilă.

Beneficii ale Azure SQL Database pentru dezvoltare:

  • Simplicitate în configurarea de noi baze de date, mai ales că acest lucru poate fi automatizat
  • Nici o întreținere a instanțelor dvs. de dezvoltare, deci fără patch-uri, fără backup-uri etc.

Negative ale Azure SQL Database pentru dezvoltare:

  • Mai potrivit pentru testare decât pentru dezvoltare, deoarece este necesară o conexiune persistentă și va fi mai lent decât dezvoltarea la nivel local
  • Trebuie să plătiți pentru fiecare minut de utilizare a bazei de date

Versiunea containerizată a oricărei ediții

Windows 2016 și SQL Server 2016 au amândouă suport pentru rularea SQL Server într-un container. Acest lucru ne oferă toată flexibilitatea pe care o avem cu LocalDb și Azure+AWS pentru pornirea și oprirea rapidă a instanțelor. De asemenea, ar trebui să vedem beneficiile de a nu fi nevoie să patch-uiem fiecare instanță în mod individual, atâta timp cât folosim imagini comune pentru instanțele noastre.

Windows 2016 a fost lansat acum, astfel încât acum putem crea și arunca potențial instanțe de SQL Server (cu siguranță SQL Server 2016) destul de simplu dacă avem Windows 10 sau Windows 2016. Dacă suntem legați de o versiune anterioară de Windows sau de o versiune anterioară de SQL Server, atunci s-ar putea să nu fie la fel de simplu să creăm o imagine care să funcționeze.

După ce vom obține o adoptare pe scară largă a containerelor în Windows, ar trebui să însemne că putem crea noi instanțe și să pornim și să oprim instanțe fără procesul de instalare îndelungat. În acest stadiu, se pare că va fi mai lent să porniți și să opriți instanțe decât în cazul LocalDb.

Dacă vă testați bazele de date într-un mediu de tip cloud, cum ar fi serviciul Microsoft VSTS, s-ar putea, de asemenea, să constatați că pornirea unei instanțe LocalDb este fezabilă, deoarece este deja instalată. În schimb, descărcarea imaginii bazei de date SQL Server 2016 și apoi pornirea acesteia ar putea să vă ocupe prea multe din minutele de construcție.

Concluzie

Când dezvoltăm cod pentru baze de date SQL Server, noi, ca dezvoltatori, avem trei cerințe principale:

  • trebuie să fim productivi cât mai repede posibil;
  • vrem ca mediul nostru să fie cât mai simplu;
  • nu dorim în mod deosebit să ne bazăm pe o bună conectivitate la internet;
  • vrem să folosim o versiune de testare care simulează lumea reală din punct de vedere al funcționalității (nu neapărat al performanței pentru dezvoltarea de zi cu zi)

LocalDb este, de obicei, răspunsul pentru majoritatea dezvoltatorilor SQL Server și, cu excepția cazului în care aveți o cerință specifică care înseamnă că nu o puteți folosi, v-aș recomanda cu căldură.

Lasă un răspuns

Adresa ta de email nu va fi publicată.