GuilleSQL :: Microsoft SQL Server, SSIS, y más !!

Bases de Datos de Contenido y Creación de Colecciones de Sitios en MOSS


Una problemática típica en cualquier Granja de MOSS es la gestión de las Bases de Datos de Contenido y la creación de nuevas Colecciones de Sitios, especialmente cuando estamos utilizando múltiples Bases de Datos de Contenido en una misma Aplicación Web. En este caso ¿Cómo podemos controlar sobre qué Base de Datos de Contenido se va a crear una nueva Colección de Sitios? ¿Cómo podemos organizar las Bases de Datos de Contenido en una Aplicación Web sobre la que se crea una gran cantidad de Colecciones de Sitios de forma automática (ej: My Sites)?

Tanto si estamos trabajando con una instalación de MOSS 2007 o con una instalación de MOSS 2010, si tenemos Aplicaciones Web con múltiples Bases de Datos de Contenido, tendremos los mismos problemas ¿Cómo controlar sobre qué Base de Datos se va a crear la nueva Colección de Sitios? ¿Cómo podemos organizar las Bases de Datos de Contenido en una Aplicación Web sobre la que se crea una gran cantidad de Colecciones de Sitios de forma automática (ej: My Sites)? Buenas preguntas, más aún cuando estamos trabajando con grandes volúmenes de datos y/o con Database Mirroring.

¿Cómo podemos controlar sobre qué Base de Datos de Contenido se va a crear una nueva Colección de Sitios?

Hasta dónde yo sé, tenemos dos opciones.

La primera de las alternativas (la mala) es poner todas las Bases de Datos de Contenido en estado OffLine/Stopped (a nivel de MOSS) excepto aquella sobre la que deseamos que se cree la nueva Colección de Sitios. Esto tiene varios inconvenientes. Por un lado, si tenemos todas las Bases de Datos de Contenido en estado OffLine/Stopped para prevenir que alguien cree una Colección de Sitios en una base de datos que no deba utilizar, tendremos problemas con la Sincronización de Perfiles entre MOSS y WSS, lo cual, nos costará alguna que otra incidencia (probablemente, en el momento más inoportuno). Sin embargo, si dejamos todas las Bases de Datos de Contenido en estado OnLine, evitaremos el problema de la Sincronización de Perfiles entre MOSS y WSS, pero cada vez que tengamos que crear una nueva Colección de Sitios, tendremos que poner todas las Bases de Datos de Contenido en estado OffLine/Stopped excepto la que deseemos utilizar, para luego poder crear la nueva Colección de Sitios y seguidamente volver a dejar todas las bases de datos OnLine, lo cual, si tenemos muchas bases de datos, es un auténtico coñazo (perdón por lo de auténtico ;-).

Por ver las cosas de una forma más gráfica, estamos hablando de tener todas las bases de datos OffLine/Stopped, tal y como se muestra en la siguiente pantalla capturada.

Por ver las cosas de una forma más gráfica, estamos hablando de tener todas las bases de datos OffLine/Stopped, tal y como se muestra en la siguiente pantalla capturada

De este modo, no se podrá crear ninguna Colección de Sitios, pues se producirá un error como el que se muestra a continuación (No content databases are available for this operation. Create a content database, and then try the operation again). Esto nos viene bien, porque así, tendremos margen para crear una nueva Base de Datos de Contenido (o poner OnLine una existente, si así lo deseamos), y conseguir nuestro objetivo de controlar sobre qué base de datos se crean nuestras Colecciones de Sitios. Sería una buena solución, si no fuese por el problema de la Sincronización de Perfiles entre MOSS y WSS.

De este modo, no se podrá crear ninguna Colección de Sitios, pues se producirá un error como el que se muestra a continuación (No content databases are available for this operation. Create a content database, and then try the operation again). Esto nos viene bien, porque así, tendremos margen para crear una nueva Base de Datos de Contenido (o poner OnLine una existente, si así lo deseamos), y conseguir nuestro objetivo de controlar sobre qué base de datos se crean nuestras Colecciones de Sitios. Sería una buena solución, si no fuese por el problema de la Sincronización de Perfiles entre MOSS y WSS.

Entonces, ¿Qué podemos hacer? Pues nos queda la segunda de las alternativas, la cual consiste en limitar el número máximo de Colecciones de Sitios que puede hospedar cada una de las Bases de Datos de Contenido, al valor del número actual de Colecciones de Sitios que hospeda cada Base de Datos de Contenido. Recordemos que el valor de Maximum number of Sites se refiere a cuantas Colecciones de Sitios se pueden almacenar en la Base de Datos de Contenido (y lo mismo ocurre con el valor de Current number of Sites). Lo sé. Es muy frustrante la forma en que se confunden los términos de Site, SubSite, Site Collection, y/o Top-Level Site, tanto en las herramientas gráficas como en la documentación, pero es lo que hay, así que, simplemente tengamos en cuenta que el valor de Maximum number of Sites se refiere al número de Colecciones de Sitios o Sitios de Primer Nivel. De este modo, sí que podemos tener todas nuestras Base de Datos de Contenido en estado OnLine/Started, como se muestra en la siguiente pantalla captura.

Entonces, ¿Qué podemos hacer? Pues nos queda la segunda de las alternativas, la cual consiste en limitar el número máximo de Colecciones de Sitios que puede hospedar cada una de las Bases de Datos de Contenido, al valor del número actual de Colecciones de Sitios que hospeda cada Base de Datos de Contenido. Recordemos que el valor de Maximum number of Sites se refiere a cuantas Colecciones de Sitios se pueden almacenar en la Base de Datos de Contenido (y lo mismo ocurre con el valor de Current number of Sites). Lo sé. Es muy frustrante la forma en que se confunden los términos de Site, SubSite, Site Collection, y/o Top-Level Site, tanto en las herramientas gráficas como en la documentación, pero es lo que hay, así que, simplemente tengamos en cuenta que el valor de Maximum number of Sites se refiere al número de Colecciones de Sitios o Sitios de Primer Nivel. De este modo, sí que podemos tener todas nuestras Base de Datos de Contenido en estado OnLine/Started, como se muestra en la siguiente pantalla captura.

De este modo, no sólo evitaremos tener problemas con la Sincronización de Perfiles entre MOSS y WSS, sino que además, podremos evitar que alguien cree por error una nueva Colección de Sitios sobre una Base de Datos de Contenido que no deba, ya que al intentarlo se producirá un error como el que se muestra en la siguiente pantalla capturada (The content databases in this cluster are full. You cannot add more Web sites until you change the content database Web site capacity settings or add more content databases).

De este modo, no sólo evitaremos tener problemas con la Sincronización de Perfiles entre MOSS y WSS, sino que además, podremos evitar que alguien cree por error una nueva Colección de Sitios sobre una Base de Datos de Contenido que no deba, ya que al intentarlo se producirá un error como el que se muestra en la siguiente pantalla capturada (The content databases in this cluster are full. You cannot add more Web sites until you change the content database Web site capacity settings or add more content databases).

Y así tendremos el control. Con crear una nueva Base de Datos de Contenido, o aumentar el valor de Maximum number of Sites en una Base de Datos de Contenido existente, podremos crear nuestra nueva Colección de Sitios sobre la base de datos deseada. Y además, también evitamos tener que poner OffLine todas las Bases de Datos de Contenido para luego volver a ponerlas OnLine, que es un curro. Mola.

Tan simple como esto, es la primera de las ideas que pretendía presentar a través del presente artículo.

¿Cómo podemos organizar las Bases de Datos de Contenido en una Aplicación Web sobre la que se crea una gran cantidad de Colecciones de Sitios de forma automática (ej: My Sites)?

La otra problemática típica es la situación en la cual una Aplicación Web es utilizada para la creación intensiva de Colecciones de Sitios, de forma automática o no automática, como puede ser el caso de los Sitios Personales (My Site). De hecho, este es quizás el principal motivo, por el que en muchos casos se recomienda utilizar una Aplicación Web sólo para dar Servicio a los Sitios Personales (My Site), por los rollos de la administración y gestión de Bases de Datos de Contenido y Colecciones de Sitios.

Antes de continuar, es importante aclarar la siguiente cuestión ¿Qué criterio utiliza MOSS para seleccionar o elegir una Base de Datos de Contenido durante la creación de una nueva Colección de Sitios? Pues muy fácil, simplemente MOSS elegirá la BBDD más apropiada, lo cual se realiza en función de los valores de Current Number of Sites, Site Level Warning y Maximum Number of Sites.

Me explico: MOSS calcula para cada Base de Datos de Contenido un valor que indica cuanto de apropiada es esa Base de Datos para hospedar una nueva Colección de Sitios, utilizando el siguiente algoritmo (o al menos, eso es lo que tengo entendido, en base a pruebas que he realizado y tras la lectura del Post Managing Site Collections and Content Databases de Randy Williams), como a continuación se describe (en pseudocódigo):

SI la base de datos NO excede el valor de Site Level Warning

ENTONCES (Site Level Warning)-( Current Number of Sites)

DE LO CONTRARIO (Maximum Number of Sites)-( Current Number of Sites)

Obteniendo el correspondiente valor para cada base de datos (según el anterior pseudocódigo), se considerará como la base de datos más apropiada aquella que tenga un valor mayor. Ejemplos:

  • Si tenemos dos Bases de Datos de Contenido, sin ningún Site y configuradas ambas para hospedar el mismo máximo valor de Colecciones de Sitio (ej: Maximum number of Sites configurado a 5) y también con el mismo valor de Site Level Warning (ej: a 0), al crear la primera Colección de Sitios se seleccionará una cualquiera de las dos Bases de Datos, de tal modo, que al crear una segunda Colección de Sitios, se seleccionará la otra Base de Datos de Contenido, consiguiendo repartir por igual las diferentes Colecciones de Sitios entre las diferentes Bases de Datos de Contenido.
  • Si tenemos dos Bases de Datos de Contenido (BDA y BDB), sin ningún Site creado en ellas, una de ellas (ej: BDA) configurada con Maximum number of Sites a 8 y Site Level Warning a 2, y la otra (ej: BDB) configurada con Maximum number of Sites a 8 y Site Level Warning a 4, si creamos dos Colecciones de Sitio, ambas se crearán sobre la segunda base de datos (BDB).

Explicado esto, continuamos.

¿Cómo organizar las Bases de Datos de Contenido en una Aplicación Web de MOSS sobre la que se crea una gran cantidad de Colecciones de Sitios?

Pues para cubrir esta necesidad, quizás la solución más apropiada (bajo mi punto de vista, que confío sea al menos algo acertado), es:

  • Crear múltiples Bases de Datos de contenido, limitando el número máximo de Colecciones de Sitio que puede hospedar cada una (Maximum number of Sites) al mismo valor en todas las bases de datos, y también especificando el mismo valor de Site Level Warning en todas las bases de datos. De este modo, conseguimos que se pueda repartir por igual el número de Colecciones de Sitios entre las diferentes bases de datos.
  • Asignar Quotas a las Colecciones de Sitio. De este modo, podemos tener un control del tamaño máximo que podría llegar a alcanzar cada base de datos. Ojo, que la gestión del Almacenamiento es otro marrón. La aproximación ideal (en la teoría) es asignar la misma Quota a todas las Colecciones de Sitios, aunque en la práctica, nos encontraremos muchos casos en que esto no pueda ser así.

Esta es la segunda de las ideas que pretendía presentar a través del presente artículo.

Evidentemente, en la práctica habría que analizar cada caso por separado, para así poder tomar la decisión de diseño más apropiada. Por ejemplo, en una Granja de MOSS con una Aplicación Web para Sitios Personales (My Site), en la que se estima que puedan crearse miles y miles de Sitios Personales, se podría tomar la siguiente decisión de diseño: Crear múltiples bases de datos, todas ellas con Maximum number of Sites establecido a 100 y Site Level Warning establecido a 100 también. Adicionalmente utilizar una Quota de 200MB para cada Sitio Personal.

Poco más por hoy. Como siempre, confío que la lectura resulte de interés.

 


Miembros de
Miembros de GITCA (Global IT Community Association)

Menu de Usuario
  Iniciar Sesión
  Registrarse
  Restablecer Contraseña
  Ventajas de Registrarse

Acerca de
  Contigo desde Oct 2007
  771 usuarios registrados
  86146 pageloads/mes
  Ranking Alexa 498160

Social Networks
Sigue a Portal GuilleSQL en Linkedin !!
Sigue a Portal GuilleSQL en Twitter !!



Archivo

Junio de 2017 (3)
Mayo de 2017 (1)
Marzo de 2017 (3)
Enero de 2017 (4)
Junio de 2016 (1)
Mayo de 2016 (2)
Abril de 2016 (2)
Septiembre de 2015 (2)
Agosto de 2015 (2)
Junio de 2015 (10)
Mayo de 2015 (4)
Abril de 2015 (8)
Marzo de 2015 (11)
Octubre de 2014 (3)
Septiembre de 2014 (7)
Agosto de 2014 (5)
Julio de 2014 (2)
Mayo de 2014 (4)
Abril de 2014 (4)
Marzo de 2014 (4)
Febrero de 2014 (1)
Enero de 2014 (5)
Diciembre de 2013 (8)
Noviembre de 2013 (2)
Octubre de 2013 (7)
Septiembre de 2013 (6)
Agosto de 2013 (1)
Julio de 2013 (6)
Junio de 2013 (11)
Mayo de 2013 (7)
Abril de 2013 (6)
Febrero de 2013 (5)
Enero de 2013 (7)
Diciembre de 2012 (12)
Noviembre de 2012 (13)
Octubre de 2012 (5)
Septiembre de 2012 (3)
Agosto de 2012 (6)
Julio de 2012 (4)
Junio de 2012 (1)
Mayo de 2012 (2)
Abril de 2012 (7)
Marzo de 2012 (16)
Febrero de 2012 (9)
Enero de 2012 (5)
Diciembre de 2011 (10)
Noviembre de 2011 (10)
Octubre de 2011 (4)
Septiembre de 2011 (5)
Agosto de 2011 (2)
Julio de 2011 (2)
Junio de 2011 (4)
Mayo de 2011 (2)
Abril de 2011 (6)
Marzo de 2011 (4)
Febrero de 2011 (10)
Enero de 2011 (5)
Diciembre de 2010 (6)
Noviembre de 2010 (4)
Octubre de 2010 (8)
Septiembre de 2010 (4)
Agosto de 2010 (1)
Julio de 2010 (3)
Mayo de 2010 (5)
Abril de 2010 (6)
Marzo de 2010 (8)
Febrero de 2010 (3)
Enero de 2010 (1)
Diciembre de 2009 (9)
Noviembre de 2009 (14)
Octubre de 2009 (2)
Septiembre de 2009 (8)
Agosto de 2009 (2)
Julio de 2009 (10)
Junio de 2009 (9)
Mayo de 2009 (10)
Abril de 2009 (9)
Marzo de 2009 (3)
Febrero de 2009 (2)
Enero de 2009 (3)
Noviembre de 2008 (2)
Octubre de 2008 (2)
Septiembre de 2008 (2)
Agosto de 2008 (5)
Julio de 2008 (5)
Junio de 2008 (1)
Mayo de 2008 (3)
Abril de 2008 (2)
Marzo de 2008 (2)
Febrero de 2008 (2)
Enero de 2008 (5)
Noviembre de 2007 (2)
Octubre de 2007 (2)






Copyright © 2007 GuilleSQL, todos los derechos reservados.