April 2010


A partir de hoy existen nuevas características en la Plataforma de SQL Azure (http://blogs.msdn.com/sqlazure/archive/2010/04/16/9997517.aspx):

  • MARS (Multiple Active Results Sets), lo cual simplifica el diseño de las aplicaciones y permite trabajar con múltiples conjuntos de datos
  • ALTER rename permite renombrar las bases de datos en la nube 
  • Application and Multi-server management mejoras en las Data-tier Applications lo cual que permite hacer el despliegue de base de datos en SQL Azure de forma más flexible desde SQL Server 2008 R2 y Visual Studio 2010

También puede empezar a probar las bases de 50GB en SQL Azure, para hacerlo envíe un correo a EngageSA@microsoft.com 

 

Saludos,

Ing. Eduardo Castro Martínez, PhD – Microsoft SQL Server MVP

http://mswindowscr.org

http://comunidadwindows.org

Costa Rica

Technorati Tags: SQL Server

LiveJournal Tags: SQL Server

del.icio.us Tags: SQL Server

http://ecastrom.blogspot.com

https://ecastrom.wordpress.com

http://ecastrom.spaces.live.com

http://universosql.blogspot.com

http://todosobresql.blogspot.com

http://todosobresqlserver.wordpress.com

http://mswindowscr.org/blogs/sql/default.aspx

http://citicr.org/blogs/noticias/default.aspx

http://sqlserverpedia.blogspot.com/

Note: Cross posted from Eduardo Castro.

Permalink

Advertisements

There are new improvements in the SQL Azure Platform (http://blogs.msdn.com/sqlazure/archive/2010/04/16/9997517.aspx):

  • MARS (Multiple Active Results Sets), which simplifies the application design process
  • ALTER rename process for symmetry in renaming databases
  • Application and Multi-server management for Data-tier Applications which further streamlines application design and enables deployments of database applications directly from SQL Server 2008 R2 and Visual Studio 2010 to SQL Azure for database deployment flexibility

Also you can take advantage of the new 50GB Databases en SQL Azure, you can become an early adopter of this new feature by sending an email to EngageSA@microsoft.com  then you must fill out a survey and nominate your application.

 

Regards,

Ing. Eduardo Castro Martínez, PhD – Microsoft SQL Server MVP

http://mswindowscr.org

http://comunidadwindows.org

Costa Rica

Technorati Tags: SQL Server

LiveJournal Tags: SQL Server

del.icio.us Tags: SQL Server

http://ecastrom.blogspot.com

https://ecastrom.wordpress.com

http://ecastrom.spaces.live.com

http://universosql.blogspot.com

http://todosobresql.blogspot.com

http://todosobresqlserver.wordpress.com

http://mswindowscr.org/blogs/sql/default.aspx

http://citicr.org/blogs/noticias/default.aspx

http://sqlserverpedia.blogspot.com/

Note: Cross posted from Eduardo Castro.

Permalink

Ahora SQL Azure implementa el Open Data Protocol, el Open Data Protocol (OData) es un estándar emergente para consultar y actualizar datos a través de la web. El OData es un protocolo basado en REST que se enfoca en maximizar la interoperabilidad entre servicios de datos y clientes. Dentro de estos clientes se pueden citar varias plataformas tales como ASP.NET, PHP, y Java, así como Microsoft Excel y aplicaciones móbiles. Más información puede encontrarse en  www.odata.org

Si desea probar esta nueva característica se puede inscribir en https://www.sqlazurelabs.com

También en este blog http://oakleafblog.blogspot.com/2010/03/odataorgs-sql-azure-northwind-sample.html puede ver un ejemplo de utilizar ODATA con SQL Azure.

 

Saludos,

 

Saludos,

Ing. Eduardo Castro Martínez, PhD – Microsoft SQL Server MVP

http://mswindowscr.org

http://comunidadwindows.org

Costa Rica

Technorati Tags: SQL Server

LiveJournal Tags: SQL Server

del.icio.us Tags: SQL Server

http://ecastrom.blogspot.com

https://ecastrom.wordpress.com

http://ecastrom.spaces.live.com

http://universosql.blogspot.com

http://todosobresql.blogspot.com

http://todosobresqlserver.wordpress.com

http://mswindowscr.org/blogs/sql/default.aspx

http://citicr.org/blogs/noticias/default.aspx

http://sqlserverpedia.blogspot.com/

Note: Cross posted from Eduardo Castro.

Permalink

SQL Azure now implements the Open Data Protocol, the Open Data Protocol (OData) is an emerging standard for querying and updating data over the Web. OData is a REST-based protocol whose core focus is to maximize the interoperability between data services and clients that wish to access that data. It is thus being used to expose data from a variety of sources, from relational databases and file systems to content management systems and traditional websites. In addition, clients across many platforms, ranging from ASP.NET, PHP, and Java websites to Microsoft Excel and applications on mobile devices, are finding it easy to access those vast data stores through OData as well. Full information about OData can be found on its dedicated website. www.odata.org

You can subscribe to be an early tester of SQL Azure Open Data Protocol here https://www.sqlazurelabs.com

You can also read a full sample here http://oakleafblog.blogspot.com/2010/03/odataorgs-sql-azure-northwind-sample.html

Regards,

 

Saludos,

Ing. Eduardo Castro Martínez, PhD – Microsoft SQL Server MVP

http://mswindowscr.org

http://comunidadwindows.org

Costa Rica

Technorati Tags: SQL Server

LiveJournal Tags: SQL Server

del.icio.us Tags: SQL Server

http://ecastrom.blogspot.com

https://ecastrom.wordpress.com

http://ecastrom.spaces.live.com

http://universosql.blogspot.com

http://todosobresql.blogspot.com

http://todosobresqlserver.wordpress.com

http://mswindowscr.org/blogs/sql/default.aspx

http://citicr.org/blogs/noticias/default.aspx

http://sqlserverpedia.blogspot.com/

Esta es nuestra participación en el Episodio 3 de Microsoft Café, en el cual hablamos sobre SQL Azure.

 

 

Saludos,

Ing. Eduardo Castro Martínez, PhD – Microsoft SQL Server MVP

http://mswindowscr.org

http://comunidadwindows.org

Costa Rica

Technorati Tags: SQL Server

LiveJournal Tags: SQL Server

del.icio.us Tags: SQL Server

http://ecastrom.blogspot.com

https://ecastrom.wordpress.com

http://ecastrom.spaces.live.com

http://universosql.blogspot.com

http://todosobresql.blogspot.com

http://todosobresqlserver.wordpress.com

http://mswindowscr.org/blogs/sql/default.aspx

http://citicr.org/blogs/noticias/default.aspx

http://sqlserverpedia.blogspot.com/

SQL Azure permite crear múltiples bases de datos de forma sencilla y rápida. Para poder aumentar la escalabilidad de las aplicaciones es necesario poder aumentar la capacidad de manejo de datos de forma casi lineal. Para poder lograr esto podemos recurir a la capacidad de creación dinámica de base de datos en SQL Azure y de esa forma poder distribuir los datos de una única base de datos en múltiples bases de datos, esta técnica es conocida como Database Sharding.

Existen diferentes técnicas para hacer Database Sharding entre estas están:

  • Particionamiento basado en rangos. En esta técnica se divide una única tabla en varios servidores, para esto se debe utilizar un algoritmo que permita dividir los datos de forma uniforme y predicible. El criterio para dividir debe procurar que la división de los datos sea balanceada, por ejemplo si se divide por estado entonces podría que un estado tenga más datos que otro y la división no será balanceada.
  • Particionamiento vertical. Esta técnica implica asignar o almacenar tablas grandes en base de datos distintas, por ejemplo, una BD tiene la tabla de clientes, otra BD tiene la tabla de órdenes y otra BD la tabla de imágenes. En esta técnica el problema surge si la tabla de clientes crece mucho, entonces en este caso deberemos utilizar particionamiento por rangos.
  • Particionamiento basados en llaves artificiales o hash. En este caso uno o más atributos o columnas de la tabla son utilizados en una función de hash que permite asignar una llave con base de la cual se hace la división de los datos. El único detalle a considerar con esta técnica es que tenemos que saber de antemano la cantidad de base de datos que deseamos crear ya que es un parámetro utilizado en la función de hash.
  • Pariticionamiento dinámico. Esta técnica también conocida como particionamiento por directorios implica la creación de una función del tipo ObtenerServidorDe, esto significa que en la capa de acceso a datos se llama a esta función para determinar en cual base de datos se encuentra el registro que deseamos obtener. Esta técnica es la más dinámica de todas puesto que podemos agregar o quitar bases de datos sin que se afecte al resto de la arquitectura de la aplicación.
  • Particionamiento aleatorio. Similar al particionamiento dinámico con la única diferencia de que utiliza algoritmos aleatorios para asignar un registro a una base de datos determinada.

Un ejemplo de pseudocódigo de particionamiento dinámico sería el siguiente:

 

string connectionString = ObtenerServidorDe(idOrden);

SqlConnection conn = new SqlConnection (connectionString);

conn.Open();

SqlCommand cmd = new SqlCommand("….”);

 

Algunas consideraciones al utilizar el Sharding son las siguientes:

 

  • Cómo manejar la integridad referencial. Debido a que no se soporta integridad referencial entre servidores, es necesario que la capa de acceso a datos realice las verificaciones de integridad referencial, aunque esto implica más código y tiempo de desarrollo, nos asegura la integridad de los datos.
  • Rebalanceo de particionamiento. Se puede dar el caso de que en primera instancia se utiliza un modelo de particionamiento pero después hay que cambiarlo, en este caso la técnica de particionamiento dinámico es la más factible, aunque es un punto único de fallo, lo más recomendado es utilizar un Azure Worker Role para implementar este tipo de particionamiento.
  • Consultas entre tablas relacionados. Al momento de utilizar sharding ya no será posible realizar consultas que unan tablas en distintas base de datos, para hacer esto se pueden utilizar tres técnicas: la primera implica que todas las consultas complejas deben eliminarse por consultas simples que accesan una única tabla y los joins se hacen a nivel lógico en la capa de acceso a datos, la segunda implica desnormalizar las tablas para que se puedan hacer consultas desde una sola tabla, la tercer técnica es utilizar tablas de consolidación. En las tablas de consolidación todas las tablas individuales están en una BD distinta, pero para aquellas consultas que necesitan hacer búsquedas sobre todos los registros, se crea una tabla resumen en otra bd que contine todos los registros de todos los shards, aunque esta técnica permite hacer búsquedas sobre todos los registros, implica moficar la capa de acceso a datos para que le de mantenimiento a las talbas individuales y las tablas consolidadas lo cual aumenta la complejidad de la aplicación.

 

Saludos,

Ing. Eduardo Castro Martinez, PhD – Microsoft SQL Server MVP

http://mswindowscr.org

http://comunidadwindows.org

Costa Rica

Technorati Tags: SQL Server

LiveJournal Tags: SQL Server

del.icio.us Tags: SQL Server

http://ecastrom.blogspot.com

https://ecastrom.wordpress.com

http://ecastrom.spaces.live.com

http://universosql.blogspot.com

http://todosobresql.blogspot.com

http://todosobresqlserver.wordpress.com

http://mswindowscr.org/blogs/sql/default.aspx

http://citicr.org/blogs/noticias/default.aspx

If you are configuring a SQL Server to be used as an Session State for ASP.NET you need to configure the proper security to allow the application pool to access the SQL Server, you can use the following script to configure the security, remember to configure the proper identity (the one that is configured in the application pool)

 

use ASPState

go

grant EXECUTE on GetHashCode to [ApplicationPoolIdentity]

grant EXECUTE on GetMajorVersion to [ApplicationPoolIdentity]

grant EXECUTE on TempGetAppID to [ApplicationPoolIdentity]

grant EXECUTE on TempGetStateItem to [ApplicationPoolIdentity]

grant EXECUTE on TempGetStateItem2 to [ApplicationPoolIdentity]

grant EXECUTE on TempGetStateItem3 to [ApplicationPoolIdentity]

grant EXECUTE on TempGetStateItemExclusive to [ApplicationPoolIdentity]

grant EXECUTE on TempGetStateItemExclusive2 to [ApplicationPoolIdentity]

grant EXECUTE on TempGetStateItemExclusive3 to [ApplicationPoolIdentity]

grant EXECUTE on TempGetVersion to [ApplicationPoolIdentity]

grant EXECUTE on TempInsertStateItemLong to [ApplicationPoolIdentity]

grant EXECUTE on TempInsertStateItemShort to [ApplicationPoolIdentity]

grant EXECUTE on TempInsertUninitializedItem to [ApplicationPoolIdentity]

grant EXECUTE on TempReleaseStateItemExclusive to [ApplicationPoolIdentity]

grant EXECUTE on TempRemoveStateItem to [ApplicationPoolIdentity]

grant EXECUTE on TempResetTimeout to [ApplicationPoolIdentity]

grant EXECUTE on TempUpdateStateItemLong to [ApplicationPoolIdentity]

grant EXECUTE on TempUpdateStateItemLongNullShort to [ApplicationPoolIdentity]

grant EXECUTE on TempUpdateStateItemShort to [ApplicationPoolIdentity]

grant EXECUTE on TempUpdateStateItemShortNullLong to [ApplicationPoolIdentity]

go

 

<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" stateNetworkTimeout="10" sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI" sqlCommandTimeout="30" customProvider="" cookieless="UseCookies" cookieName="ASP.NET_SessionId" timeout="20" allowCustomSqlDatabase="false" regenerateExpiredSessionId="true" partitionResolverType="" useHostingIdentity="true" > <providers> <clear /> </providers> </sessionState>

 

Regards,

 

Ing. Eduardo Castro Martínez, PhD – Microsoft SQL Server MVP

http://mswindowscr.org

http://comunidadwindows.org

Costa Rica

Technorati Tags: SQL Server

LiveJournal Tags: SQL Server

del.icio.us Tags: SQL Server

http://ecastrom.blogspot.com

https://ecastrom.wordpress.com

http://ecastrom.spaces.live.com

http://universosql.blogspot.com

http://todosobresql.blogspot.com

http://todosobresqlserver.wordpress.com

http://mswindowscr.org/blogs/sql/default.aspx

http://citicr.org/blogs/noticias/default.aspx

http://sqlserverpedia.blogspot.com/Note: Cross posted from Eduardo Castro.

Permalink

Next Page »