ottobre 2008 - Posts

[PDC] Riordino le idee
30 ottobre 08 06.46 | abenedetti | with no comments

PDC sta volgendo al termine, siamo all'ultima giornata, ed io sto cercando, piano, piano, di riordinare le idee.

Sono state annunciate diverse cose: Windows 7, Azure Services Platform, Office Web Apps, Parallel computing; diverse piattaforme: Oslo, SQL Services, .Net Services, Live Services.

Di sicuro passerà un pò di tempo per rivedere sessioni, codice, demo, ...

Intanto resto con alcune domande a cui spero di dare risposta prima possibile:

  1. perchè Don Box e Chris Anderson non hanno parlato durante la loro keynote di Oslo, la creatura a cui stanno lavorando da anni?
  2. perchè non ho mai visto un profiler attivo / acceso / mostrato in nessuna sessione (soprattutto per mostrare le tonnellate di query che sono state fatte dietro alcuni lazy load in una sessione EF)?
  3. quale sarà la strategia, soprattutto commerciale, di utilizzo "on the clouds" da parte di microsoft? come / quanto / quando si paga?

Ultima, ma forse non tanto meno importante:

  • quale sarebbe stato il risparmio energetico se solo si fosse tenuta la temperatura (polare) pià alta di due gradi centigradi all'interno delle sale?

PS: con il portatile acceso sulle gambe sembrava di avere una calda coperta della nonna... non dispiaceva affatto... :-)

Nel frattempo sono già state rese note le date della prossima PDC: 17-20 Novembre 2009, tra 12 mesi!

Filed under:
[PDC] Keynote terzo giorno
29 ottobre 08 11.24 | abenedetti | with no comments

Keynote del terzo giorno, aperta da Rick Rashid, senior vice president of Microsoft Research, interamente dedicata al suo gruppo.

Veramente exciting vedere alcuni dei progetti che stanno portando avanti nei vari centri sparsi per il mondo.

Uno tra tutti il progetto di monitoring ed analisi delle temperature applicate, in visualizzazione, su mappe virtual earth.

Due esempi di utilizzo reale del progetto:

  1. Microsoft ha installato 10.000 sensori nei suoi datacenter per monitorare / analizzare le temperature
  2. La hall in cui seguiamo le keynote ha il soffitto disseminato di sensori che memorizzano le loro registrazioni che producono questa visualizzazione grafica su mappa:

image

Altri progetti mostrati:

Filed under:
[PDC] Keynote seconda giornata
29 ottobre 08 01.36 | abenedetti | with no comments

Personaggi di primissimo piano sul palco della seconda keynote: Ray Ozzie, Steven Sinofsky, Scott Guthrie, David Treadwell, Don Box e Chris Anderson.

Vengono presentati Windows 7 (nuova task bar, nuova tray bar, ricerca su più macchine, multitouch, supporto VHD nativo(!!!), desktop esteso anche su RDP), Visual Studio 2010, nuovi controlli WPF / Silverlight, file di configurazioni multipli, la piattaforma live services per lo sviluppo delle applicazioni "in the cloud".

Qualche immagine...

image image

image image

image image

Filed under:
PDC: SQL Data Services
29 ottobre 08 12.59 | abenedetti | 4 comment(s)

Tra i tanti servizi utilizzabili "on the cloud"quelli che interessano maggiormente i DBA sono i SQL Server Data Services (SDS, o SSDS - nome in codice Stika).

AzureServicesPlatform

Di cosa si tratta?

Del database visto come servizio, ovvero di storage on-demand, di un motore di interrogazione dati a richiesta.

Possiamo accedere alle nostre informazioni tramite interfacce web service (SOAP, REST), possiamo utilizzare LINQ per gestire ed accedere le entità memorizzate.

Tutta l'infrastruttura è costruita sopra il motore di SQL Server, con la struttura interna delle informazioni che resta un BTree+.

Tre sono i concetti che stanno dietro:

  • Authority
    • unit of geo-location and billing
    • tied to DNS name
    • collection of containers
  • Container
    • unit of consistency
    • scope for query and update
    • collection of entities
  • Entity
    • unit of storage
    • property bag od name / value pairs
    • no schema required

L'autorithy può contenere zero o più container che possono, a loro volta, contenere set di entities.

In pratica:

  • Authority = organizzazione di containers per security, account, co-location
  • Container = organizzazione delle enetità per contenuto / interrogazioni
  • Entity = unità minima di memorizzazione

Alcuni appunti:

  • Partizionamento immediato: le informazioni vengono splittate automaticamente tra i container disponibili
  • I container vengono replicati per alta disponibilità
  • Indicizzazione immediata di tutte le proprietà delle entities memorizzate

Questa l'architettura:

image

Tra le varie Q&A:

  • non supporta (nè è in prgramma) l'indicizzazione fulltext
  • non supporta la clasuola LIKE

image

Sottolineo un punto molto importante: nulla di tutto questo è gratis, nemmeno per prova.

SDS equivale a storage illimitato, geo-localizzazione. Significa non doversi preoccupare di backup, operazioni di manutenzione, rotture HW, problemi di corrente / condizionamento, server, ...

L'unica "preoccupazione" è usarlo.

Adesso attendo la possibilità di utilizzarlo e testarlo a dovere.

Con questi numeri:

  • 50 GB a disposizione di ogni account
  • 1000 container per ogni authority
  • 1 GB di blob entities per container

Frase finale di diverse sessioni: "Cloud computing is here".

PDC: Windows 7 compatibility passed
28 ottobre 08 03.21 | abenedetti | 1 comment(s)

L'occasione di avere a disposizione parte del team del nuovo sistema operativo Windows 7, capitanato da Pat Altimore,  era troppo ghiotta.

Microsoft ci ha messo a disposizione, previa richiesta, due macchine su cui poter eseguire dei test di compatibilità, o meglio un "Windows Application Compatibility and Quality Lab".

image

Abbiamo portato dall'Italia tre delle nostre applicazioni con relativi setup, database, file di dati per importazioni massive, una serie di test di qualità e di stress, ...

Tutto è filato liscio senza alcun problema, "zero issues" abbiamo detto ai ragazzi del team (un pò increduli, a dire il vero... :-)).

image

Filed under:
[PDC] Keynote
27 ottobre 08 07.39 | abenedetti | with no comments

Cloud, questa è la parola d'ordine, la "Big Picture" di Redmond.
Lo sapevamo, già da qualche mese, ma adesso finalmente cominciamo a vedere qualcosa.

image

Primo tra tutti Windows Azure, annunciato da Ray Ozzie (Microsoft Chief Software Architect): una sorta di sistema operativo in grado di fornire tutto il necessario per la fruizione di servizi e di software.

image

Svolta importante, e di sicuro interesse, la discesa in campo di Microsoft stessa come host dei servizi (in realtà sta già facendo qualcosa, ad esempio, con Exchange Online e CRM Online).

image

Da un punto di vista di sviluppo verranno rilasciate (da domani, con il disco esterno da 160 GB contenente slide, demo e bytes) tutte le CTP dei programmi in grado di realizzare questa strategia.

Dal "nostro" punto di vista, inteso come uomini SQL, credo che questa slide riassuma perfettamente tanti discorsi:

image

Cominciamo a vedere qualcosa :-)

Filed under:
PDC 2008: GO!
26 ottobre 08 10.12 | abenedetti | with no comments

PDC è partita!

image

Oggi, domenica 26 ottobre, giornata di pre-conference dedicata a sessioni "day-long" di training sulle tecnlogie attuali.

Io mi sono dedicato all'unica sessione che trattava l'argomento dati: "Microsoft .NET Framework Data Access from A to Z", presentata da Michael Pizzo (Principal Architect del team Data Programmability) e Jose Blakeley (lead architect del team SQL Server Engine).

image

Questa l'agenda:

  • Evoluzione di ADO.Net
  • ADO.Net & LINQ
  • ADO.Net Entity Framework Deep Dive
  • Building on ADO.Net

image 

La sessione parte con un breve racconto  storico, una rapida carrellata dell'evoluzione delle tecnologie di accesso ai dati: RDO, DAO, Ole DB, ADO, ADO.Net, ...

Seconda parte del pomeriggio interamente dedicata ad ADO.Net & LINQ:

  • LINQ to SQL
  • LINQ to Entities
  • LINQ to DataSet

Molte demo, da Entity Framework a LINQ passando per ADO.Net, Entity Data Model, ...

Un buon inizio ed un buon ripasso!

image

Una nota negativa: sale congelate dall'aria condizionata. Domani felpa!

[RS 2008] Report Builder 2.0
19 ottobre 08 11.02 | abenedetti | with no comments

E' disponibile, in download, il nuovo Report Builder di SQL Server 2008. Qui.

Superenalotto, TSQL e combinazioni vincenti
16 ottobre 08 11.53 | abenedetti | 2 comment(s)

Stimolato da un commento sul mio post precedente provo a postare una soluzione per verificare quante e quali combinazioni sono vincenti.

Supponendo di avere la nostra tabella [enalotto] con 100.000 righe (i numeri di ciascuna riga non sono ordinati, se voglio ordinarli userò la select mostrata nel post precedente) vediamo di trovare i numeri che ho azzeccatto sull'ultima estrazione.

Per farlo possiamo ragionare in questo modo: controllo, per ciascuna colonna, se il suo valore risulta essere nella lista delle palline vincenti. Se trovo il valore sommo 1 in modo tale da avere, per ciascuna riga, il numero di "cifre" azzeccate.

/* Estrazione del 14.10: 11 14 43 46 61 70 */ declare @numEstratto1 tinyint declare @numEstratto2 tinyint declare @numEstratto3 tinyint declare @numEstratto4 tinyint declare @numEstratto5 tinyint declare @numEstratto6 tinyint set @numEstratto1 = 11 set @numEstratto2 = 14 set @numEstratto3 = 43 set @numEstratto4 = 46 set @numEstratto5 = 61 set @numEstratto6 = 70 --> vedo solo le giocate in cui ho azzeccato più di due cifre: select * from ( select idRecord, num1, num2, num3, num4, num5, num6, case when num1 in (@numEstratto1, @numEstratto2, @numEstratto3, @numEstratto4, @numEstratto5, @numEstratto6) then 1 else 0 end + case when num2 in (@numEstratto1, @numEstratto2, @numEstratto3, @numEstratto4, @numEstratto5, @numEstratto6) then 1 else 0 end + case when num3 in (@numEstratto1, @numEstratto2, @numEstratto3, @numEstratto4, @numEstratto5, @numEstratto6) then 1 else 0 end + case when num4 in (@numEstratto1, @numEstratto2, @numEstratto3, @numEstratto4, @numEstratto5, @numEstratto6) then 1 else 0 end + case when num5 in (@numEstratto1, @numEstratto2, @numEstratto3, @numEstratto4, @numEstratto5, @numEstratto6) then 1 else 0 end + case when num6 in (@numEstratto1, @numEstratto2, @numEstratto3, @numEstratto4, @numEstratto5, @numEstratto6) then 1 else 0 end as numeriAzzeccati from enalotto ) T where numeriAzzeccati > 2 order by numeriAzzeccati desc

Questo il risultato:

image

Se volessi vedere anche il totale delle combinazioni fatte:

--> in totale, quante combinazioni ho fatto? select count(numeriAzzeccati) as numGiocate, numeriAzzeccati from ( select idRecord, num1, num2, num3, num4, num5, num6, case when num1 in (@numEstratto1, @numEstratto2, @numEstratto3, @numEstratto4, @numEstratto5, @numEstratto6) then 1 else 0 end + case when num2 in (@numEstratto1, @numEstratto2, @numEstratto3, @numEstratto4, @numEstratto5, @numEstratto6) then 1 else 0 end + case when num3 in (@numEstratto1, @numEstratto2, @numEstratto3, @numEstratto4, @numEstratto5, @numEstratto6) then 1 else 0 end + case when num4 in (@numEstratto1, @numEstratto2, @numEstratto3, @numEstratto4, @numEstratto5, @numEstratto6) then 1 else 0 end + case when num5 in (@numEstratto1, @numEstratto2, @numEstratto3, @numEstratto4, @numEstratto5, @numEstratto6) then 1 else 0 end + case when num6 in (@numEstratto1, @numEstratto2, @numEstratto3, @numEstratto4, @numEstratto5, @numEstratto6) then 1 else 0 end as numeriAzzeccati from enalotto ) T group by numeriAzzeccati order by numeriAzzeccati

Il risultato:

image

Insomma: avrei speso un sacco di soldi e ne avrei vinti veramente pochi... :-)

Filed under:
Superenalotto & TSQL
14 ottobre 08 06.46 | abenedetti | 7 comment(s)

La febbre da Superenalotto sta contagiando moltissimi, anche chi non ha mai giocato prima d'ora.

Insomma, il premio in palio fa parecchia gola, soprattutto in tempo di crisi, no?

Se devo fare una confessione anche io ho speso un euro oggi... e mi sono lasciato tentare.

Poi mi sono preso una mezz'oretta ed ho giocato una cifra ben più alta, ma tutta virtuale.

In pratica ho fatto mille giocate e domani voglio proprio vedere se qualcuna di queste è quella corretta (poi, se dovesse uscire quella corretta, non so come la prenderei... :-))

Detto questo ecco quello che ho fatto, in TSQL, of course...

1. Creo la tabella in cui memorizzare le giocate (una riga per giocata, con la memorizzazione delle diverse sei cifre):

IF OBJECT_ID('dbo.enalotto', 'U') IS NOT NULL DROP TABLE dbo.enalotto GO create table dbo.enalotto ( idRecord int primary key identity(1,1), num1 tinyint, num2 tinyint, num3 tinyint, num4 tinyint, num5 tinyint, num6 tinyint, numUnique bigint unique, check (num1 <> num2 and num1 <> num3 and num1 <> num4 and num1 <> num5 and num1 <> num6), check (num2 <> num1 and num2 <> num3 and num2 <> num4 and num2 <> num5 and num2 <> num6), check (num3 <> num1 and num3 <> num2 and num3 <> num4 and num3 <> num5 and num3 <> num6), check (num4 <> num1 and num4 <> num3 and num4 <> num2 and num4 <> num5 and num4 <> num6), check (num5 <> num1 and num5 <> num3 and num5 <> num4 and num5 <> num2 and num5 <> num6), check (num6 <> num1 and num6 <> num3 and num6 <> num4 and num6 <> num5 and num6 <> num2) ) go

2. faccio 1.000 giocate:

set nocount on declare @i int set @i = 0 while @i < 1000 begin begin try insert enalotto select num1, num2, num3, num4, num5, num6, cast( cast(num1 as bigint) * 10000000000 + cast(num2 as bigint) * 100000000 + cast(num3 as int) * 1000000 + cast(num4 as int) * 10000 + cast(num5 as int) * 100 + num6 as bigint) as u from ( SELECT CONVERT(tinyint, (90)*RAND()) + 1 as [num1], CONVERT(tinyint, (90)*RAND()) + 1 as [num2], CONVERT(tinyint, (90)*RAND()) + 1 as [num3], CONVERT(tinyint, (90)*RAND()) + 1 as [num4], CONVERT(tinyint, (90)*RAND()) + 1 as [num5], CONVERT(tinyint, (90)*RAND()) + 1 as [num6] ) T set @i = @i + 1 end try begin catch end catch end go

3. le vedo (faccio una select della tabella così come è popolata):

--> queste le giocate select * from enalotto go

image

4. le vedo su riga (quindi sei righe per ogni giocata):

--> vedo su riga le giocate select idRecord, num1 from enalotto union all select idRecord, num2 from enalotto union all select idRecord, num3 from enalotto union all select idRecord, num4 from enalotto union all select idRecord, num5 from enalotto union all select idRecord, num6 from enalotto order by idRecord

image

5. ordino le giocate dal numero più piccolo (con la funzione row_number, mi serve per sapere l'ordine di visualizzazione):

--> ordino le giocate dal numero più piccolo select idRecord, Num, ROW_NUMBER() OVER(partition by idRecord order by num ) as ord from ( select idRecord, num1 as num from enalotto union all select idRecord, num2 from enalotto union all select idRecord, num3 from enalotto union all select idRecord, num4 from enalotto union all select idRecord, num5 from enalotto union all select idRecord, num6 from enalotto ) tabellaGiocateSuRiga order by idRecord

image

6. visualizzo l'estrazione completa dal numero più piccolo (tramite la funzione pivot giro le righe con le colonne ed ottengo la visualizzazione corretta):

--> visualizzo di nuovo in colonna, dal numero più piccolo select idRecord, [1], [2], [3], [4], [5] , [6] from ( select idRecord, Num, ROW_NUMBER() OVER(partition by idRecord order by num ) as ord from ( select idRecord, num1 as num from enalotto union all select idRecord, num2 from enalotto union all select idRecord, num3 from enalotto union all select idRecord, num4 from enalotto union all select idRecord, num5 from enalotto union all select idRecord, num6 from enalotto ) tabellaGiocateSuRiga ) Tab pivot ( sum(Num) for ord in ([1],[2],[3],[4],[5],[6]) ) as pivotTable order by idRecord

image

Filed under: , ,
PDC 2008
14 ottobre 08 11.40 | abenedetti | 3 comment(s)

Tra poco più di una settimane partirò, con buona parte del team ab (Scott, il Conte, Ziggy, Sonny - AKA: Claudio, Riccardo D., Riccardo Z., Marco), alla volta di PDC (26 / 30 Ottobre, Los Angeles).

Ho studiato attentamente l'agenda ed ho cercato di buttare giù la mia versione.

I pattern usati sono stati principalmente tre:

  1. SQL Server” e tecnologie correlate, perchè resta comunque il mio divertimento preferito
  2. “cosa può succedere in futuro / dove stiamo andando” (ovvero: “roadmap, first look & future”)
  3. “il bit c’è chi lo spacca mooolto meglio di me”, ovvero: è inutile che vada a vedere cose che faranno altri (molto meglio di me) e tanto c'è l'abacademy

Oltre a questi, sono entrati in gioco altri fattori come la curiosità e la voglia di vedere “meglio”.

Chiusa la premessa, ecco le mie idee:

SQL Server & Data

  • · SQL Server 2008
    • Business Intelligence and Data Visualization
    • Deep Dive into Spatial Data
    • Developing for Semi-Structured Data
    • Developing Large Scale Web Applications and Services
    • Developing Secure Applications
    • New and Future T-SQL Programmability
    • Data-Driven Applications from Device to Cloud
  • · SQL Server Data Services
    • A Lap around SQL Server Data Services
    • Developing Applications Using Data Services
    • SQL Server Data Services: Futures
  • · Microsoft Sync Framework
    • Sync Framework Advances
    • Sync Framework: Enterprise Data in the Cloud and on Devices

Roadmap, first look & future

  • ASP.NET Future: ASP.NET 4.0 Roadmap
  • Project "Velocity": A First Look
  • Entity Framework Futures
  • The Future of C#
  • WF 4.0: A First Look
  • WPF Roadmap

Oslo

  • A Lap around "Oslo"
  • Customizing and Extending the Visual Design Experience
  • Repository and Schemas
  • The Language

WPF

  • WPF: Data-centric Applications Using the DataGrid and Ribbon Controls
  • WPF: Extensible BitmapEffects, Pixel Shaders, and WPF Graphics Futures

Altro

  • Improving .NET Application Performance and Scalability
  • Microsoft Visual C# IDE: Tips and Tricks
  • Offline-Enabled Data Services and Desktop Applications
  • SQL Server Compact: Embedding in Desktop and Device Applications

In pratica:

  • 12 sessioni area “SQL Server”
  • 6 sessioni area “Roadmap”
  • 10 sessioni “Altro”

Per un totale di 28 sessioni!

Ho esagerato?

Di sicuro, in quella settimana, bloggerò tutto il bloggabile (e chiedo scusa in anticipo se intaserò il muro della community...) :-)

Filed under:
[SQL 2008] Geography
11 ottobre 08 04.00 | abenedetti | with no comments

Se foste capitati su mio vecchio post  sul tipo geografico di SQL Server 2008, e aveste provato l'esempio che scrivevo, vi saresti trovati un bell'errore:

System.FormatException: 24201: Latitude values must be between -90 and 90 degrees.

Che cosa è cambiato dalla versione CTP alla RTM?

Semplicemente come devono essere scritti i dati: prima la longitudine, poi la latitudine.

Quindi se nell'esempio scrivevo:

insert map (location, name) values ( geography::STGeomFromText('POINT(45.50800 10.14502)', 4619) , 'Castel Mella (BS)' ) insert map (location, name) values ( geography::STGeomFromText('POINT(47.67413 -122.10938)', 4619) , 'Redmond, WA' )

 

Oggi bisogna invertire le coordinate:

insert map (location, name) values ( geography::STGeomFromText('POINT(10.14502 45.50800)', 4619) , 'Castel Mella (BS)' ) insert map (location, name) values ( geography::STGeomFromText('POINT(-122.10938 47.67413)', 4619) , 'Redmond, WA' )
Il risultato non sarà più l'errore, ma il numero di KM che separano Redmond da casa mia:

image

Link: The Upcoming Geography Coordinate Order Swap---A FAQ

Filed under: ,
[book] Microsoft SQL Server 2008: T-SQL Fundamentals
10 ottobre 08 03.55 | abenedetti | with no comments

L'amico Itzik mi informa che il libro in oggetto è stato mandato in stampa.

Riporto il link a beneficio di tutti: http://www.sql.co.il/books/tsqlfund2008/

Un paio di settimane e dovrebbe essere disponibile.

SQL Server CE? Lo stai usando anche tu...
10 ottobre 08 03.42 | abenedetti | with no comments

SQL Server CE è il fratello minore di SQL Server.
Si tratta di una versione embedded, in process (senza servizi), che consente la creazione di database che possono arrivare fino a 4Gb.

Forse in pochi sanno che ci sono applicazioni molto conosciute che lo usano regolarmente.
Due esempi?

  1. Windows Media Player 11 (gestione library)
  2. Zune player (gestione library)

Se volete toccare con mano recuperate il file "CurrentDatabase_*" nella directory:

      %USERPROFILE%\Local Settings\Application Data\Microsoft\Media Player

Copiatelo dove preferite ed agganciatelo con il Management Studio (Connect - SQL Server Compact):

image

Filed under:
[SQL 2008] HIERARCHYID & metodi
09 ottobre 08 05.24 | abenedetti | with no comments

Oggi stavo rigurdando del codice scritto con una vecchia CTP di SQL Server 2008.

In particolare stavo mettendo mano a degli esempi sul tipo HIERARCHYID.

Le correzioni fatte sono state principalmente due, dovute a metodi che, con la versione RTM hanno cambiato nome.

Li posto a beneficio di tutti:

  • IsDescendant modificato in IsDescendantOf
  • Reparent modificato in GetReparentedValue
More Posts Next page »

This Blog

Syndication