RavenDB (I)–Empezamos….

 logo-ravendb

 

Los que tenéis la suerte o desgracia de sufrir  mi blog, sabréis lo que me gusta Mongo DB, de hecho, repasando las entradas de mi blog me he dado cuenta de que  ya son unas cuantas, sumado esto a los diferentes eventos en los que he tenido la suerte de hablar de esta base documental y, a los proyectos en producción en los que he participado haciendo uso de esta base de datos, os podéis dar una buna idea del aprecio  y cariño que le tengo a esta NoSQL.

No obstante, hace ya bastante tiempo que tenía ganas de experimentar, de forma seria, RavenDB, cada vez que podía, restando a las ínfimas horas no ocupadas de las que dispongo, me pasaba por el sitio de esta base de datos y revisaba la documentación, buscando como avanzaba el proyecto y las multiples y diferentes características que se iban añadiendo poco a poco, así como el  impacto que el producto estaba teniendo en la comunidad. No voy a negar que en un principio siempre tenía la tentación de buscar comparaciones, sería mentir, puesto que en cierto grado es normal, cuando vas probar un producto, y lo que no es un producto :-), siempre lo comparas con lo que ya conoces. MongoDB hace esto así, entonces, ¿como lo hace Raven DB? … eran de las primeras cosas que venían a la cabeza. Pero, poco a poco, eso se ha ido perdiendo,diluyendo más bien....esto es debido a que, básicamente, creo que sinceramente no hay comparación posible, por lo menos no en el mundo .NET y menos aún en ciertos escenarios, por lo tanto, en esta entrada y en las siguientes de la serie no vais a encontrar comparaciones, si acaso ligeras referencias de términos o elementos que hacen a RavenDB diferente. 

 Lógicamente lo primero es lo primero, en esta entrada empezaremos por los conceptos más básicos, sitio del producto, descarga y puesta en marcha etc.., según avancemos en las diferentes entradas iremos  ampliando la información y nos meteremos en harina, que es dónde nos gusta estar:

RavenDB .NET

El sitio principal del proyecto es www.ravendb.net , por ahora, es un sitio aún no demasiado bien cuidado, pero están preparando un nuevo portal mucho mejor organizado, con mejor presencia y sobre todo mucho más contenido que el actual, este nuevo portal se puede consultar en http://beta.ravendb.net . Nada más entrar al sitio podemos ver las principales características de RavenDB:

  • Base de datos documentalimage_4
  • Transaccional
  • RestFull
  • Scalable
  • Schema Free
  • Multi-Level caching
  • Extensible

 

 

 

Para serle sincero, desde el principio fue una sorpresa ver como en este sitio, y más aún en el beta, hay una gran cantidad de documentación, tutoriales, FAQ,etc etc que podemos consultar,y, si aún tenemos preguntas no respondidas podriamos ir al  propio grupo de soporte para RavenDb.

  

Despliegue

Untitled

Una vez que hemos descargado una build de RavenDB, podéis acceder a las fuentes y últimos binarios aquí, simplemente tenemos que descomprimir el contenido de la descarga y nos encontraremos con una estructura de directorios similar a la que podéis ver en la imagen presente a la izquierda. En cada uno de los directorios podemos encontrar diferentes elementos, la información completa de su contenido la teneis disponible en el correspondiente fichero readme.txt. Por ahora solamente nos vamos a fijar en las carpetas Server y Web que son las que nos permitirán desplegar un servidor de Raven DB, de varias formas diferentes.

Para el primer ejemplo de despliegue nos iremos a la carpeta Server, en esta carpeta encontraremos, a mayores del conjunto de librerías necesarias, un ejecutable llamado Raven.Server.exe . Este ejecutable representa un servidor de Raven, el cual podría ser levantado simplemente con la ejecución de la siguiente linea de comandos:

Raven.Server.exe –debug --browser

 Es recomandable ver la ayuda de la linea de comandos para ver las diferentes opciones que tenemos disponibles. En este sentido me ha recordado mucho a MongoDB, el proceso es similar a levantar un mongod en MongoDB y, además, comparte tambien con esta bd la opción --install para poner Raven DB como un Servicio Windows.

El fichero de configuración del proceso Raven.Server.exe.config contiene algunos parámetros de configuración importantes, aunque no todos como veremos durante las siguientes entradas.

     <add key="Raven/Port" value="*"/>
    <add key="Raven/DataDir" value="~\Data"/>
    <add key="Raven/AnonymousAccess" value="Get"/>

Como se habrá dado cuenta con estos tres parámetros podemos configurar el puerto en el que escuchará el HttpListener asociado a RavenDB, la carpeta que se utilizará para almacenar toda la información referida al servidor de Raven ( datos, indices etc…) y los permisos que por defecto tendrá un usuario anónimo, estando este por defecto a Get.

 

Si no queremos hacer el despliegue de Raven como un Servicio Windows, podemos optar por un despliegue de un sitio en Internet Information Server. Para ello tenemos el directorio Web, el cual, si se fija lo único que contiene es, además del directorio bin con las dependencias necesarias, el archivo de configuración del sitio con un handler para especificar el manejo de los request, en concreo la factoria de los RequestResponders, algo sobre lo que hablaremos cuando veamos la parte de extensibilidad, simple ¿verdad?

 

    <system.webServer>
        <handlers>
            <add name="All" path="*" verb="*"
                        type="Raven.Web.ForwardToRavenRespondersFactory, Raven.Web"/>
        </handlers>
    </system.webServer>

Raven Db Manastudiogement Studio

Tanto si levantamos el servidor como una consola, un servicio windows o un sitio de IIS en todos tendremos disponible una aplicación Silverlight, si, has oído bien, llamada Raven Db Management Studio que, como su propio nombre indica, es una pequeña herramienta de administración de las diferentes bases de datos que tengamos en el servidor.

Por ahora no vamos a entrar en más consideraciones, aún hay muchas cosas que explicar, según avancemos en las diferentes entradas iremos viendo esta herramienta y el porque de algunas cosas. Por ahora, con tener el servidor levantado y preparado para funcionar es suficiente.

Un detalle importante, que a mi no me ha resultado demasiado sencillo encontrar en la documentación es que el sitio de IIS tiene que tener habilitada la integración con Windows. Recurede que en la settings de configuración se podía restringir el acceso anónimo por lo tanto,  sino queremos trabajar en modo anónimo tenemos que asegurarnos que cumplimos esto.

Bueno, por ahora lo dejaremos aquí, seguiremos en las siguientes entradas, que no se retrasarán mucho, lo prometo.

 

Saludos

Unai

 

 

 

 

 

 

Published 1/12/2011 1:10 por Unai
Comparte este post:
http://geeks.ms/blogs/unai/archive/2011/12/01/ravendb-i-empezamos.aspx

Comentarios

# re: RavenDB (I)–Empezamos….

Buenas Unai!

Espero con ansia las siguientes entradas que dedicarás a RavenDb.

No le he podido dedicar todo el tiempo que se merece (apenas un pequeño proyectillo personal) pero me parece un producto más que interesante. Como tu dices con una orientación distinta de la de MongoDb.

Sin duda, desde el punto de vista de un desarrollador, es brutal la forma en como expone su API. Que tanto los índices como las funciones map/reduce se expresen en términos de LINQ dan muestra de ello.

Un saludo y ánimo con esas entradas! :)

Monday, December 5, 2011 8:18 AM por Eduard Tomàs i Avellana

# re: RavenDB (I)–Empezamos….

Gracias Eduard, creo que hoy está planificado que se publique la siguiente entrada sino me he equivocado.

Un abrazo

Unai

Monday, December 5, 2011 10:41 AM por Unai

# RavenDB(III) Sobre la metadata y la serialización de los documentos

En esta tercera de las entradas sobre RavenDB , si lo deseas puedes consultar las entariores aquí

Friday, December 9, 2011 1:42 PM por O bruxo mobile

# RavenDB(V) Actualizaciones, concurrencia, patch y otras hierbas

En esta quinta entrega de la serie, puede ver las anteriores entradas aquí, I ,- II - III y IV , vamos

Thursday, December 15, 2011 9:06 PM por O bruxo mobile