Wirtualna baza SQL zgodna z SQL Server SQL as a Service SQL Azure Wirtualna baza SQL zgodna z SQL Server SQL as a Service
60% rozwiązanie MS 40% działanie w praktyce (napisanie prostej aplikacji typu „Hello World” Kilka słów o podobnych rozwiązaniach
Wybór bazy danych - opcje On-premise SQL Server on-premise Zarządzanie zasobami @ serwerze Bezpieczeństwo @ DB Server/OS Cechy: Pełna kontrola h/w 100% kompatybilności Własne HA/DR/skala Cechy: 100% API Dedykowany Hosted Hostowany SQL Server Zarządzanie zasobami @ VM Bezpieczeństwo @ DB Server/OS SQL Azure (RDBMS) Cechy: Auto HA, Fault-Tolerance Bezproblemowe skalowanie Self-provisioning Wysoka zgodność Wirtualny serwer DB Zarządzanie zasobami @ LDB Bezpieczeństwo @ LDB Zasoby Współdzielone Niska Kontrola Wysoka SQL Azure V1 to scenariusz w lewym dolnym rogu!
Microsoft SharePoint Conference 2009 3/28/2017 Typy Blob Block Blob składa się z indywidualnych „bloków” Zoptymalizowany pod steaming Każdy blok może mieć rozmiar 4MB Całkowita wielkość Blob może być 200 GB Strona Blob jest kolekcją indywidualnych „stron” Zoptymalizowany dla losowych operacji read/write operations Strona jest zakresem danych podobnym do bufora Całkowita wielkość Blob może być 1 TB Block blobs are optimized for streaming. Page blobs, which are optimized for random read/write operations and provide the ability to write to a range of bytes in a blob. You specify which type of blob you wish to create when you call the Put Blob operation. Once the blob has been created, its type cannot be changed, and it can be updated only by using the operation appropriate for that blob type, i.e., Put Block and Put Block List for a block blob, and Put Page for a page blob. Block blobs are comprised of blocks, each of which is identified by a block ID. You create or modify a block blob by uploading a set of blocks and committing them by their block IDs. If you are uploading a block blob that is no more than 64 MB in size, you can also upload it in its entirety with a single Put Blob operation. When you upload a block to Windows Azure using the Put Block operation, it is associated with the specified block blob, but it does not become part of the blob until you call the Put Block List operation and include the block's ID. The block remains in an uncommitted state until it is specifically committed. Writing to a block blob is thus always a two-step process. Each block can be a maximum of 4 MB in size. The maximum size for a block blob in version 2009-09-19 is 200 GB, or up to 50,000 blocks. Page blobs are a collection of pages. A page is a range of data that is identified by its offset from the start of the blob. To create a page blob, you initialize the page blob by calling Put Blob and specifying its maximum size. To add content to or update a page blob, you call the Put Page operation to modify a page or range of pages by specifying an offset and range. All pages must align 512-byte page boundaries. Unlike writes to block blobs, writes to page blobs happen in-place and are immediately committed to the blob. The maximum size for a page blob is 1 TB. A page written to a page blob may be up to 1 TB in size. © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Scenariusze dla SQL Azure Aplikacje departamentowe Proste aplikacje budowane indywidualnie lub na potrzeby departamentu Potrzebne proste, samozarządzalne IT Trochę „poza” klasycznym IT Klientem może być Access Lub hostowana lokalnie aplikacja ASP.NET / PHP / … Aplikacje Web Skalowanie na życzenie, łatwe instalowanie itp.. ISV ISV hostujący oprogramowanie dla klientów Łatwe wsparcie systemów multitenant (w różnych scenariuszach) Data Hub Współdzielenie i agregacja danych pomiędzy warstwami i pomiędzy enterprise Zcentralizowane miejsce dla danych, skalowalne, synchronizacja z istniejącymi źródłami danych Ładne połączenie z innymi pojemnikami! (np. BLOB)
Przykładowe topologie SQL Azure używane wewnątrz DC (Azure compute – gł. ADO.NET / EF) SQL Azure dostępne z poza DC (On-premises – ADO.NET / ODBC / …) Aplikacja / przeglądarka Aplikacja / Narzędzia SOAP/REST HTTP/S ADO.NET Data Svcs/REST - EF HTTP/S App Code (ASP.NET) Windows Azure T-SQL (TDS) T-SQL (TDS) SQL Data Services SQL Data Services MS Datacenter MS Datacenter Kod blisko Kod daleko
Model provisioningu Każda subskrypcja ma zero lub więcej serwerów W ramach Azure Określa element opłat Każdy serwer ma Nazwę (DNS) i domenę autoryzacji Bazę master Jedną lub więcej baz użytkowych Każda baza ma standardowe obiekty SQL Użytkowników, tabele, widoki itp Jednostka spójności (transakcji) Server Baza
Zakładanie konta Tworzenie bazy danych Konfiguracja firewalla
SDS Provisioning (bazy, konta, role, …, pomiar, i billing Architektura Współdzielona infrastruktura na poziomie SQL Wymaga routingu, odpowiedniego bezpieczeństwa i izolacji Technologia „skalowalnego HA” zapewnia odpowiednie narzędzia do replikacji i failover Połączony z Resource Governor Provisioning, pomiar użycia i infrastruktura bilingowa SDS Provisioning (bazy, konta, role, …, pomiar, i billing Machine 4 SQL Instance SQL DB User DB1 User DB2 User DB3 User DB4 Machine 5 SQL Instance SQL DB User DB1 User DB2 User DB3 User DB4 Machine 6 SQL Instance SQL DB User DB1 User DB2 User DB3 User DB4 Scalability and Availability: Fabric, Failover, Replication, and Load balancing Scalability and Availability: Fabric, Failover, Replication, and Load balancing
! Repliki baz danych Single Primary DB Pojedyncza DB Wiele replik Replica 1 Single Primary Replica 2 DB Replica 3 Replica 4
SQL Azure Wdrożenie skryptu Skrypt DB SQL Azure TDS Gateway
SQL Azure Dostęp do bazy Change Connection String Aplikacja SQL Azure TDS Gateway
Model programowania Mały zestaw danych (<50 GB) Wykorzystać pojedynczą bazę (jak w przypadku on premise SQL Server) Duże zbiory danych i/lub olbrzymia przepustowość Database Sharding (będzie później) Partycjonować pomiędzy wiele baz danych Wykorzystać PLINQ / TPL Kod aplikacji musi to uwzględniać
AzureScope – SQL Read - 93362
AzureScope – SQL Write - 5761
SQL Azure SQL „Express” w chmurze ADO.NET – działa Limit 1GB / 10GB / 50G / …. Bo: sensowny czas replikacji; „tani” hardware Partycjonowanie poziome (klient 100TB) Dzięki partycjonowaniu kwerenda z 100 minut zeszła do 10 sekund (patrz niżej) Dokładniej – kwerenda + masywny merge ADO.NET – działa Enterprise Library Data Access – działa Entity Framework – działa Zapytanie/połączenie ma 5 minut nim zostanie ubite Po 30 minutach połączenie jest zamykane Narzędzia: OSQL, SSMS (SQL 2008 R2), Access Migration Kit
Database Editions Dwa SKU dla SQL Azure: Web & Business Web Edition: 1 GB @ $9.99/miesiąc | 5 GB @ $49.95/miesiąc Business Edition: do 50 GB @ $99.99/10 GB/miesiąc 10 GB @ $99.99 | 20 GB @ $199.98 | 30 GB @ $299.97 | 40 GB @ $399.96 | 50 GB @ $499.95 Należy określić Web lub Business Edition Web: EDITION = Web Business: EDITION = Business Należy określić MAXSIZE Web: MAXSIZE = 1GB| 5GB Business: MAXSIZE = 10GB | 20GB | 30GB | 40GB | 50GB Jest to rozmiar poza który baza NIE UROŚNIE Opłata jest za realne użycie (uśredniane dziennie) CREATE DATABASE foo1 (EDITION='business', MAXSIZE=50GB); Rośnie dowolnie, do 50 GB CREATE DATABASE foo2 (EDITION='business', MAXSIZE=30GB); CREATE DATABASE bar1 (EDITION='web', MAXSIZE=5GB); CREATE DATABASE bar2 (EDITION='web'); -- Domyślnie 1GB Business Edition Do 50 GB 10 GB przyrostu Web Edition Do 5 GB Albo 1 GB albo 5 GB
Skąd ograniczenie? SLA DataCenter ma 5 minut na podniesienie nowej instancji. Obecne algorytmy dają rade podnieść bazę do 50GB Stąd limit
SQL Azure – topologia Aplikacje Gateway Data Node Data Node Data Node Aplikacja używa normalnych bibliotek : ODBC, ADO.Net, … Ale też Microsoft Access działa Aplikacje TDS (tcp:1433) Load balancer przesyła sesję do warstwy TDS Load Balancer TDS (tcp: 1433) Gateway Application could use unlimited number of SQL instance Application could use „classic” programming model ADO.NET, ACID transaction, etc. Designed for cloud: 3 replicas, Load balancing TDS (tcp: 1433) Data Node Data Node Data Node Data Node Data Node Data Node Skalowalność i dostępność : Fabric, Failover, Replikacja i Load balancing
Kompatybilność (skrót) Wspierane Nie wspierane Tables, indexes and views Stored Procedures Triggers Constraints Table variables, session temp tables (#t) Spatial … Distributed Transactions Distributed Query CLR Service Broker Physical server or catalog DDL and views
T-SQL – elementy które działają Stałe Więzy Kursory Zarzadzanie indeksami Lokalne tymczasowe tabele Procedury składowane Zarządzanie statystykami Transakcje Triggery (ale po co…) Tabele, join, zmienne tabelaryczne DDL: Create/drop databases Create/alter/drop tables Create/alter/drop users Create/alter/drop logins … Funkcje użytkownika Nie CLR! Widoki Synonimy
Co nie działa… Common Language Runtime (CLR) Zmiany lokalizacji plików i zarządzanie FileGroup Database mirroring Rozproszone kwerendy Rozproszone transakcje Globalne tabele tymczasowe W SP - można Typy Spatial i indeksy Zmiany opcji w SQL Server SQL Server Service Broker Tabele systemowe Trace Flags Resource Governor BACKUP / RESTORE Full Text Search Service Broker BULK INSERT Ale BCP z klienta działa! CDC CHANGETABLE (CT) Indeksy XML DBCC i sprawdzanie spójności FILESTREAM KILL OPENQUERY / OPENROWSET USE do zmiany kontekstu SQL Agent Ale mamy Worker Role
Pomoc (1)
Pomoc (2)
Model połączenia Dowolne API ADO.NET, ODBC, PHP Biblioteki klienckie preinstalowane w rolach Azure Wsparcie kontrolek ASP.NET Wsparcie designera EF Klient podłącza się BEZPOŚREDNIO do bazy Nie ma USE – patrz SQL Azure - topologia
Logiczna a fizyczna administracja SQL Azure pozwala skupić się na logicznej administracji Schematy Optymalizacja kwerend Bezpieczeństwo Usługa zajmuje się elementami fizycznymi Lokalizacja plików Replikacje, HA Przeźroczysty failover Load Balancing
Model bezpieczeństwa jest w 100% zgodny z on-premise SQL Standardowy model SQL Login Użytkownik Rola Ograniczone do autoryzacji SQL Username + password !!!! Przyszłość, AD, Windows Live ID itp. Technicznie: Service Bus + ACS z kodem który pracuje z SQL Model bezpieczeństwa jest w 100% zgodny z on-premise SQL
Wracamy do przykładu
Tworzenie schematu lokalnie Migracja na SQL Azure