bloghoved rene løhde

SQL som service

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.

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

Illustration: René Løhde

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

Illustration: René Løhde

 
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/

Kommentarer (25)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#3 Martin Bøgelund

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?

  • 0
  • 0
#5 René Løhde

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.

  • 0
  • 0
#6 Martin Bøgelund

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?

  • 0
  • 0
#7 Nicolai Lundgaard

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.

  • 0
  • 0
#8 Kenneth Østrup

@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.

  • 0
  • 0
#10 René Løhde

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"!?

  • 0
  • 0
#11 Martin Bøgelund

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!

  • 0
  • 0
#12 Martin Bøgelund

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".

  • 0
  • 0
#14 Kristian Thy

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.

  • 0
  • 0
#15 Kim Dalsgaard

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 ;-)

  • 0
  • 0
#19 Nicolai Lundgaard

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...

  • 0
  • 0
#20 Baldur Norddahl

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.

  • 0
  • 0
#21 René Løhde

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é

  • 0
  • 0
#22 Michel Baladi

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/2e72....

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

  • 0
  • 0
#23 René Løhde

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é

  • 0
  • 0
#24 Michel Baladi

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

  • 0
  • 0
Log ind eller Opret konto for at kommentere