Dette indlæg er alene udtryk for skribentens egen holdning.

SQL som service

Af René Løhde19. august 2009 kl. 23:0025
Artiklen er ældre end 30 dage

For nogen tid siden skrev jeg en introduktion til Windows Azure Services Platforms Database.

Jeg fik også senere fortalt at det var ikke hvad folket ville have. Joe the Plummer ville have RDBMS med SQL i skyen.

Vi lyttede og i går gik den så live i et Community Technology Preview (CTP).

Nu kan man så prøve den hvis man er så heldig at have adgang til et token. I den forbindelse har jeg fået en kollega til at skrive en lille blogpost. Her forklarer Zach at de som allerede har skrevet sig op vil få deres token snarest, mens vi andre må væbne os med tålmodighed. Pt er der en 14 dages behandlingstid på udstedelse.

Artiklen fortsætter efter annoncen

For at komme i gang skal man have registreret sig og fået en invitationskode som kan bruges på web management delen af SQL Azure

Herefter vil man få identificeret en server hvor man skal oprette den administrative bruger:


 
Her kan man så efterfølgende få adgang til at se hvilke connections der er til databaseservicen:

...og vigtigst af alt kan få adgang til sine connectionstrings i 3 afskygninger (ADO.Net, ODBC og OLE DB):

Med connection strings i hånden (eller i memory clipboard) kan vi starte vores favorit database admin værktøj (to be quite honest - så ved jeg ikke hvad der virker og hvad der ikke virker. Jeg bruger SQLCMD, et commandline værktøj til Windows som shipper med SQL Server.)

Adgang til serveren etableres  og jeg laver min første database på SQL Azure.

Efterfølgende afbryder jeg forbindelsen til basen og hele serveren for at lave en ny forbindelse til serveren og den netop oprettede database:

 
Dette gøres fordi jeg endnu ikke fra SQLCMD kan skifte base på samme connection (Mao brugen af 'Use' er ikke mulig)

That's it. Herfra er det SQL som man kender (og elsker det!?). Så er det bare om at prøve løs, hvis man kan se igennem fingre med at database serveren står et sted på den amerikanske vestkyst.

SQL Azure er ikke en full fledged MS SQL Server, men skal mere opfattes som en (meget) stor version af Microsofts gratis RDBMS, SQL Express, når det kommer til omfanget af funktionalitet.

Meget mere info på denne blog: http://blogs.msdn.com/ssds/

25 kommentarer.  Hop til debatten
Denne artikel er gratis...

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.

Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.

Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.

Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.

Debatten
Log ind eller opret en bruger for at deltage i debatten.
settingsDebatindstillinger
1
20. august 2009 kl. 01:05

RDBMS er bare 'so last year'!

15
20. august 2009 kl. 14:54

Tak for linket René - havde hørt om bevægelsen men viste ikke at der lå video og slides på nettet :-)

PS. Sig til din boss at I skal lægge et triple store ud i stedet - så kan det ende med at I får mig som kunde ;-)

3
20. august 2009 kl. 09:18

Det er fløjet helt hen over hovedet på mig hvorfor det her er smart.

Du connecter til en database, og kan lave sql-forespørgsler og kommandoer op mod den. Men der må være en ingrediens mere i gryden, som jeg bare ikke kan smage, for jeg kan ikke få armene i vejret over det.

Hvad er det jeg har misset?

5
20. august 2009 kl. 09:52

Tror ikke du har misset noget. Hvis du accepterer at Cloud computing databaseer eksisterer og tilsyneladende har et marked, så kan jeg fortælle dig hvorfor det her er lavet:

Aktører på området f.eks Amazon SimpleDB, Google App Engine Storage og Microsofts egen Azure Storage (ikke det samme som SQL Azure!!!) er ikke RDBMS. Det er et tilnærmelsesvis velstruktureret datalager med propreitære query sprog og webservice API'er.

Indtil i går var det også tilfældet med SQL Azure (den gamle model kan du i en gennemgang her: http://www.version2.dk/artikel/8163-laeg-data-i-skyen)

Feedback fra de personer og organisationer som har testet den gamle version sagde entydigt, at de ville have det de var vandt til; en TDS protokol til basen og SQL til query.

Derfor denne nyhed. Jeg ved ikke om det er lavet andre steder - jeg har ikke set det før.

6
20. august 2009 kl. 10:18

Tror ikke du har misset noget. Hvis du accepterer at Cloud computing databaseer eksisterer og tilsyneladende har et marked, så kan jeg fortælle dig hvorfor det her er lavet:

Jeg vil bare vide hvad der reelt er længst oppe i skyerne: Sælgerne eller produktet.

Internet-kartofler lød også "hipt" da internet var nyt og moderne. Nu er det skyen ("cloud") der er hipt, og minsandten om ikke man så kan få "cloud computing databaser"

Aktører på området f.eks Amazon SimpleDB, Google App Engine Storage og Microsofts egen Azure Storage (ikke det samme som SQL Azure!!!) er ikke RDBMS. Det er et tilnærmelsesvis velstruktureret datalager med propreitære query sprog og webservice API'er.

Et RDBMS er velsagtens

  • et velstruktureret datalager
  • som kan tilgås med et åbent og standardiseret query sprog
  • hvortil der er et hav af muligheder for at anvende webservice API'er

Måske ved du at "proprietært" ikke opfattes som et plus-ord hos alle... Jeg opfatter det som "gift dig med én leverandør, og betal en overpris fordi ægteskabet er uendeligt bøvlet at slippe ud af."

Så jeg vil bare gerne vide: Er du ved at sælge en internet-kartoffel?

10
20. august 2009 kl. 11:09

att Martin,

Med de egenskaber du lister og den opfattelse du lufter så er du vel potentiel køber til dette?

Det er en af de mindst - hvis ikke den mindst - propreitære CC DB på markedet. Det vil, ergo, være den mindst bøvlede at "slippe ud af"!?

12
20. august 2009 kl. 11:43

Med de egenskaber du lister og den opfattelse du lufter så er du vel potentiel køber til dette?

Det er jo det jeg undersøger. Men med de værktøjer vi har idag, kan vi sagtens trække struktureret information ud, eller lægge struktureret information ud til brug for andre.

Får jeg noget mere med denne løsning, eller får jeg en Internet-kartoffel?

Og mht. proprietær, så skelner jeg ikke mellem mere eller mindre proprietær, men kun mellem "proprietær" og "fri".

8
20. august 2009 kl. 10:54

@Martin,

Version2's ordbog giver ingen forklaring på "internet kartoffel". Jeg er lidt nysgerrig, er det ligesom en couch potato. Eller er det bare varm luft fra skyerne?

Jeg forstår heller ikke hvad der gør dette produkt så specielt. Men jeg kan sagtens forestille mig at der vil være et marked i det for Microsoft.

11
20. august 2009 kl. 11:34

Version2's ordbog giver ingen forklaring på "internet kartoffel". Jeg er lidt nysgerrig, er det ligesom en couch potato. Eller er det bare varm luft fra skyerne?

Det er [b]helligbrøde[/b] at et medie som v2 ikke har internet-kartofler i sin ordbog!

Frit efter hukommelsen - kom gerne med rettelser: Begrebet opstod da WWW var ungt og uskyldigt, og "Internet" var det nye hippe ord som alle brugte (selvom internet var en ældre sag.

Politiken (avisen altså) havde et computernetværk som vist hed "polnet" eller noget lignende, og som lanceredes som "læsernes indgang til internettet", selvom der egentlig ikke rigtigt var internetadgang fra polnet. Det var der en IT-kendis, på Jyllandsposten vistnok, der skrev en vrissen artikel om, der hed "Internet-kartofler", som handlede om det bedrageriske i at tage et gammelkendt produkt (kartofler), og så markedsføre det med et smart og hipt begreb klistret foran på navnet (internet-), og så gøre det samme gamle produkt populært i kraft af det nye navn alene. Snyd!

Så internet-kartofler er faktisk bare "gammel vin på nye flasker" i ét ord - og dermed selv lidt af en internet-kartoffel!

14
20. august 2009 kl. 11:47

Det er helligbrøde at et medie som v2 ikke har internet-kartofler i sin ordbog!

Tjah, det er der heller ingen andre der har. En googlesøgning giver ét dansk hit - denne tråd. Og som vi alle ved: Hvis det ikke er på nettet, findes det ikke.

16
21. august 2009 kl. 10:41

Tjah, det er der heller ingen andre der har. En googlesøgning giver ét dansk hit - denne tråd. Og som vi alle ved: Hvis det ikke er på nettet, findes det ikke.

Det gør det så nu, som du også selv konstaterer.

17
21. august 2009 kl. 11:10

Det gør det så nu, som du også selv konstaterer.

Ja, og på den måde er det jo ingen sag at bedrive kontrafaktisk historieformidling.

18
21. august 2009 kl. 12:44

Ja, og på den måde er det jo ingen sag at bedrive kontrafaktisk historieformidling.

Hvis du mener det er det jeg gør, må du gerne komme med den version [i]du[/i] mener er den rigtige...

19
23. august 2009 kl. 15:02

For at vende tilbage til emnet, er jeg ved at lægge en eksisterende database op på SQL Azure.

Det går fint med at oprette tabeller, men jeg er stødt på fejl når jeg skal indsætte data i dem.

Eks:

Jeg har oprettet følgende tabel med sqlcmd:

CREATE TABLE [dbo].[Profiles] ( [Id] uniqueidentifier NOT NULL , [SiteId] [uniqueidentifier] NOT NULL, [UserId] [uniqueidentifier] NOT NULL, [Firstname] [varchar] (50) NULL, [Lastname] [varchar] (50) NULL )

Når jeg prøver at indsætte en record får jeg følgende fejl:

"Heaps can not be replicated tables. Please create a clustered index for the table."

En heap er så vidt jeg husker en tabel uden et index, og ved at oprette et clusteret index som fejlmedelelsen foreslår løser da også problemet:

CREATE UNIQUE CLUSTERED INDEX Profiles_Index ON Profiles (Id)

Det er ikke ved alle tabeller jeg får denne fejl, så jeg er bare lidt nysgerrig efter at vide hvad der forårsager fejlen.

Vender snart tilbage med flere erfaringer...

21
24. august 2009 kl. 11:23

Hej Nicolai,

Som du sikkert har fundet ud af nu, så er det "by design".

Fra http://msdn.microsoft.com/en-us/library/ee336245.aspx :

"Because SQL Azure does not support heap tables, a table must have a clustered index. If a table is created without a clustered constraint, a clustered index must be created before an insert operation is allowed on the table."

-René

22
30. august 2009 kl. 21:22

Lige et par ting...

Hvis man hoster sin løsning skal man jo som regel også have et storage af en eller anden slags. Hvis man skriver en løsning fra scratch så kan man jo overveje om RMDBS modellen nu også er den rigtige, men i mit tilfælde skal jeg flytte et par applikationer fra self-host til Azure og så jeg er MEGET glad for at det nu er en ganske almindelig SQL (ok, begrænset featureset, men dog en SQL server) tilgængelig over TDS som vi kender det, så den er lige (næsten) til at gå til.

Der er to modeller man kan arbejde med ”code near” og ”code far”. I den første har du din applikation og din database i samme datacenter i skyen, dvs. både IIS og SQL som Azure services fra MS. Uden relationel SQL Azure og ”code near” ville det nok være svært at flytte de fleste eksisterende applikationer til Azure. Med ”code far” kan du køre din applikation ”on premise” og bruge SQL Azure in the cloud. Det er nemt at (bare ændre connection string) og meget langsomt (da det som regel er en hel del latency mellem applikation og database). Code far giver mening med ”remote tools” (SQLCMD, Management studio på din PC mod en SQL instans i skyen), men jeg har ikke set lyset endnu ved at køre en applikation on premise mod SQL i skyen. RedGate’s tools virker ikke endnu (http://www.red-gate.com/messageboard/viewtopic.php?t=9463#top) og SQL Management Studio virker kun et meget specifikt scenario hvor man lige så godt kan nøjes med SQLCMD.

Mht til feature set så er det mange ting man ikke kan bruge (ROWGUID, Spatial data, index padding, ANSI NULL, ntext og image data type m.v.). Det betyder at et SQL script der genereres fra f.eks. Management Studio skal ”renses” for non-supported SQL. See http://social.msdn.microsoft.com/Forums/en-US/ssdsgetstarted/thread/2e72f8a8-7e25-4149-98e6-2fd6c1506159/.

Mht. skjulte ingredienser havde SQL Azure i sin oprindelige version mulighed at bruge en partition key. Jeg er ikke sikker på om den stadigvæk er der efter at ACE modellen blev udskiftet med en RMDBS model. Idéen med den var at man kunne bruge horsiontal partitioning og dermed skalere tabeller på tværs af maskiner.

/Michel

23
31. august 2009 kl. 08:54

Thank you sir! ...for det link til SQL "clean up". Det havde jeg ikke set.

Mht "Code far" tror du så ikke det bliver bedre når data centeret kommer tættere på DK? Jeg kan sagtens se scenarier hvor en lille ISV ønsker et produkt i markedet, som er en klient hos kunden, mens back-end er multitenant sevice på Azure og datalager i SQL Azure.

På den måde får klienten ingen (minimal) hassle med infrastruktur og ISV'en får konsolidering af deres forretning.

Angående partition key, så eksisterer det stadigt, men det er i relation til det der hedder tabeller i Windows Azure Storage, men ikke SQL Azure. Det skulle dog senere være muligt at bestemme hvordan man ønsker SQL Azure partitioneret, bl.a hensyn til geolokation.

Igen, thanks for sharing, og jeg håber du er klar til at tale på Microsoft Arkitektur Forum senere på året, når du har fået flere erfaringer. :-)

-René

24
31. august 2009 kl. 21:39

Det ISV scenarie du beskriver er også "code near" da du har både applikation/service samt storage i Azure's datacenter. Dvs. applikation og data er "near" (=low latency). At du så har en lokal applikation der tilgår servicen over http gør den ikke "code far". "Code far" er mere som go' gammel 2-tier eller client/server hvor databasen er server. Eksempel på "code far" er tools (Management Studio, SQLCMD m.v.) lokalt/on-premise med en TDS connection direkte til SQL Azure's internet facing front-end farm (=high latency). Et andet eksempel er en WinForms app lokalt/on-premise med en TDS connection direkte til SQL Azure. For mig giver "code far" kun god mening for tools...

Ps. Selvfølgelig vil jeg gerne optræde med årets udgave af mit SaaS (eller heder det cloud comuputing nu?) song & dance show til MAF.

/Michel

25
1. september 2009 kl. 10:29

Super og tak for lektien,

...og BTW jeg er lige blevet gjort opmærksom på dette projekt: SQL Server til SQL Azure migration wizard:http://sqlazuremw.codeplex.com/

-René

20
23. august 2009 kl. 18:22

Nu er Microsoft ikke lige min kop te. Men her har de en fordel i forhold til Amazon og Google.

Det er muligt at det har været nemmere for Amazon og Google at implementere nogle mere primitive løsninger. Men det har så flyttet udgiften over på brugerne, som skal udvikle special løsninger i stedet for at bruge standardprogrammel, der er udviklet til SQL. Hvis man kan.

Google har lavet support for java, men ingen SQL (JDBC), ingen threads og ingen mulighed for JCR betyder at intet eksisterende java baseret CMS system kan køre der.

Hos Amazon kan man i princippet sætte sin egen SQL server op. Så har man bare ikke sparet så meget og man kan billigere leje en dedikeret server.

13
20. august 2009 kl. 11:45

Så internet-kartofler er faktisk bare "gammel vin på nye flasker" i ét ord - og dermed selv lidt af en internet-kartoffel!

Tak for den fine forklaring :)

7
20. august 2009 kl. 10:51

Mig bekendt er Microsoft de første der lancerer en relationel databasemodel i skyen. Manglen på et RDBMS har givetvis afholdt mange fra at lægge sine eksisterende systemer i skyen, da man ellers ville være nødsaget til at kode sit datalag om til en anden databasemodel.

4
20. august 2009 kl. 09:49

Jeg kan heller ikke lige se hvad der er smart her.

Man kan da også lave en SSH forbindelse til en SQL server af en art.

/Christian