sql >> Base de Datos >  >> RDS >> Database

NoSQL:la vida sin esquema

NoSql no reemplaza a las bases de datos SQL, pero es una alternativa válida para muchas situaciones en las que SQL estándar no es el mejor enfoque para almacenar sus datos.

Como nos enseñaron que cada vez que necesita almacenar datos en un "almacén de datos" y consultar esos datos para extraerlos, SQL es la mejor solución, solo tiene que decidir qué motor SQL usar y el juego ha terminado.

En 2012 esta sugerencia fue incorrecta, quiero decir que ya no puede asumir que SQL es la "única forma" de almacenar datos, pero debe saber que existen otras alternativas y se llaman NO SQL. Bajo este término tenemos diferentes mecanismos de almacenamiento que no están basados ​​en SQL, y en .NET tenemos un producto excepcional llamado RavenDB (puedes encontrar una muy buena introducción a RavenDb en el blog de Mauro).

La primera gran diferencia con SQL estándar es la ausencia de un esquema

Una de las limitaciones más molestas de SQL Server es la necesidad de especificar el formato exacto de los datos que desea almacenar en su almacenamiento. Esto es necesario por muchas buenas razones, pero hay situaciones en las que realmente no le importa, especialmente si su software se basa en gran medida en el concepto OOP. Supongamos que tienes este objeto

1: class player

2: {

3: public String Name { get; set; }

4:

5: public DateTime RegistrationDate { get; set; }

6:

7: public Int32 Age { get; set; }

8: }

Por un momento, no existe la preocupación de que este objeto esté mal encapsulado (tiene un método público para obtenerlo e instalarlo), sino que solo se centra en la necesidad de "almacenar" este objeto en algún lugar. Si usa un repositorio SQL estándar, lo primero que debe hacer es crear una tabla, luego definir las columnas, definir la longitud máxima para la columna Nombre y finalmente seleccionar el ORM para usar o crear una capa de datos dedicada, y finalmente, puede guardar el objeto.

Si está trabajando con un cuervo, este es el único código que necesita

1: var store = new DocumentStore { Url = "http://localhost:8080" };

2: store.Initialize();

3: using (var session = store.OpenSession())

4: {

5: var player = new Player

6: {

7: Age = 30,

8: RegistrationDate = DateTime.Now,

9: Name = "Alkampfer",

10: };

11: session.Store(player);

12: session.SaveChanges();

13: }

El servidor simplemente toma el objeto y lo guarda.

Para guardar un objeto en el almacén de datos, solo se necesitan dos funciones:"Guardar" para indicarle al repositorio el objeto que desea guardar y "Guardar cambios", que realmente realiza el guardado.

¿Qué obtienes con este simple fragmento de código? Simplemente vaya al navegador estándar en la dirección del servidor y debería ver el contenido de la base de datos.

Contenido de la base de datos después de la inserción de objetos simples

En la Figura, puede ver el contenido de la base de datos cuervo, contiene un jugador y un pequeño 1 junto al objeto es Id, que Raven usa internamente para identificar este objeto de forma única. Otro objeto, llamado Sys Doc Hilo/Players, se encarga de generar un identificador para el objeto Players con el algoritmo Hilo.

Esto es todo, no es necesario definir el esquema, no es necesario tener una propiedad de Id especial ni ningún otro requisito para que el objeto sea compatible con el repositorio, simplemente llame al método Store para cualquier objeto .NET y su objeto está en la base de datos, ¡Punto!

Steven Lott | NoSQL no significa Sin Esquema