www servidor portable pagina org oficial instalar descargar sqlite nosql

servidor - sqlite website



¿Hay alguna base de datos NoSQL tan simple como SQLite? (16)

Creo que Berkeley DB es la elección clásica aquí.

Berkeley DB (BDB) es una biblioteca de software que proporciona una base de datos integrada de alto rendimiento para datos de clave / valor. Berkeley DB está escrito en C con enlaces API para C ++, C #, PHP, Java, Perl, Python, Ruby, Tcl, Smalltalk y muchos otros lenguajes de programación. BDB almacena pares arbitrarios de clave / datos como matrices de bytes, y admite múltiples elementos de datos para una sola clave. Berkeley DB no es una base de datos relacional.

¿Hay alguna base de datos NoSQL tan simple como SQLite? Estoy buscando una base de datos liviana para conservar un pequeño conjunto de datos para una simple aplicación de escritorio. Todavía puedo usar SQLite, pero prefiero un enfoque OO ya que mi aplicación no maneja muchos datos.


En algunas circunstancias (si no necesita / tiene algunos requisitos como índices), puede usar el sistema de archivos como DB: nombre de archivo / ruta como clave y contenido del archivo como valor. JSON es eficiente desde el punto de vista de la memoria, por lo que puede usar un analizador para serializar / deserializar datos.

Asegúrese de no almacenar demasiados archivos (miles) en la misma carpeta (archivos divididos en varias carpetas con un hash).

El verdadero problema de esta solución (además de la falta de algunas características) es que los registros de archivos se almacenarán en bloques de 4 KB, por lo que un archivo de 10 bytes usará 4 KB, un archivo de 4097 bytes usará 8 KB y así sucesivamente (en al menos en la mayoría de los sistemas de archivos), por lo que para grandes cantidades de registros pequeños no es muy eficiente con el disco.

Los beneficios: es rápido, ligero, ya que utiliza mucho menos memoria RAM, y no se agrega ningún cuello de botella conector interproceso, se demuestra y se optimiza de manera transparente el sistema operativo a través de la memoria caché ram ​​/ w. Puede usar bloqueos e incluso puede distribuirlos a través de montaje remoto.

Finalmente, evitaría usar esta solución si su plataforma de producción es una máquina con Windows, pero también es posible.


Encontré UnQLite un par de días, pero parece que no admite índices y no tiene adaptadores.


Me gustaría sugerir CouchbaseLite . Es una base de datos NoSQL bastante liviana que se puede usar de manera integrada, en dispositivos móviles e incluso proporciona manejo de eventos, vistas, revisiones, sincronización, resolución de conflictos, filtrado, suscripciones y más.


Otra solución es LevelDB . La página de inicio dice:

LevelDB es una biblioteca rápida de almacenamiento de valores-clave escrita en Google que proporciona una asignación ordenada de las claves de cadena a los valores de cadena.

Caracteristicas

  • Las claves y los valores son matrices de bytes arbitrarias.
  • Los datos se almacenan ordenados por clave.
  • Las personas que llaman pueden proporcionar una función de comparación personalizada para anular el orden de clasificación.
  • Las operaciones básicas son Put (clave, valor), Get (clave), Delete (clave).
  • Se pueden hacer múltiples cambios en un lote atómico.
  • Los usuarios pueden crear una instantánea transitoria para obtener una vista coherente de los datos.
  • La iteración hacia delante y hacia atrás es compatible con los datos.
  • Los datos se comprimen automáticamente utilizando la biblioteca de compresión Snappy.
  • La actividad externa (operaciones del sistema de archivos, etc.) se retransmite a través de una interfaz virtual para que los usuarios puedan personalizar las interacciones del sistema operativo.
  • La documentación detallada sobre cómo usar la biblioteca se incluye con el código fuente.

Limitaciones

  • Esta no es una base de datos SQL. No tiene un modelo de datos relacionales, no admite consultas SQL y no admite índices.
  • Solo un proceso único (posiblemente de subprocesos múltiples) puede acceder a una base de datos en particular a la vez.
  • No hay soporte de cliente-servidor incorporado a la biblioteca. Una aplicación que necesita dicho soporte deberá envolver su propio servidor alrededor de la biblioteca.

Personalmente estoy buscando algo que funcione con Python 3. Veo que la respuesta aceptada es UnQLite , donde los enlaces de Python no están actualmente disponibles para Python 3.

Sin embargo, TinyDB parece ser una buena alternativa.


Puede consultar algunos oodb (base de datos orientada a objetos)


Puedes probar rabaDB . Es un ORM esquemático NoSQL de Python para SQLite con una interfaz muy ligera.


Suena como un trabajo para y_serial ;-)

Aquí está la descripción: "Serialización + persistencia :: en unas pocas líneas de código, comprime y anota objetos de Python en SQLite, luego los recupera cronológicamente por palabras clave sin ningún SQL. Módulo" estándar "más útil para que una base de datos almacene el esquema datos."

Ver http://yserial.sourceforge.net/ para más detalles.


Técnicamente, si no necesita una funcionalidad similar a SQL para seleccionar elementos específicos, podría utilizar la serialización simple y guardar cada objeto como un archivo separado.

Por ejemplo, usando C # lang + psuedo para acortar

List<Customer> customers = ...//some data here JsonSerlializer.Save(customers, "c:/.../customers.json"); //you can use .db extension if you will //load back List<Customer> customers = JsonSerlializer.Load("c:/.../customers.json");

Un objeto, un documento en el sistema de archivos, o puede crear un gran objeto de carga para guardar todos sus datos y guardarlos en un solo archivo, solo considere la carga de trabajo de la aplicación si usa muchos datos.

Ahora, respondiendo "¿Hay alguna base de datos NoSql tan simple como SQLite? No sé, entonces estoy aquí haciendo la misma pregunta :) pero en realidad para un archivo de configuración simple, o algunos pocos objetos o listas, el archivo json local debería ser suficiente .

EDITAR: esto podría ser promisorio UnQLite

"UnQLite es una biblioteca de software en proceso que implementa un motor de base de datos NoSQL transaccional, autónomo y sin configuración de servidor. UnQLite es una base de datos de almacenamiento de documentos similar a MongoDB, Redis, CouchDB, etc., así como una tienda Key / Value estándar. similar a BerkeleyDB, LevelDB, etc. "


También es posible que desee mantener un ojo en UnQL de los desarrolladores de CouchDB y SQLite.


El gabinete de Tokio y su sucesor, el gabinete de Kioto, son los mejores.

Kyoto Cabinet es una biblioteca de rutinas para gestionar una base de datos. La base de datos es un archivo de datos simple que contiene registros, cada uno es un par de claves y un valor. Cada clave y valor son bytes seriales con longitud variable. Tanto los datos binarios como la cadena de caracteres se pueden usar como una clave y un valor. Cada clave debe ser única dentro de una base de datos. No existe el concepto de tablas de datos ni tipos de datos. Los registros están organizados en tabla hash o árbol B +.


RavenDB es una opción interesante aquí (divulgación justa: solo he jugado un poco con ella, todavía no la he usado en un proyecto real).

La característica que encuentro más interesante es que mapea automáticamente su modelo de objetos a la tienda persistente. En el mundo de RDMS, la única herramienta que lo hace bien (hasta donde yo sé) es NHibernate Fluent.

La automatización puede ser un gran ahorro de tiempo durante el desarrollo, especialmente si tiene un modelo de objeto complicado o requisitos que cambian rápidamente.


stsdb es fácil de usar. todo lo que necesita utilizar es la lib del cliente y un archivo db que puede crear.

Lo uso en la aplicación ac # / wpf. Pero no es adecuado para la etapa de desarrollo. Porque no puedes modificar los modelos ya almacenados.

Pero es fácil, rápido y pequeño. Muchos profesionales lo hacen digno


UnQLite es una biblioteca de software en proceso que implementa un motor de base de datos transaccional NoSQL autónomo, sin servidor y de configuración cero.


Friendly es una especie de base de datos NOSQL que utiliza Ruby + SQLite como su back-end. Es una especie de truco, pero también es agradable. Escribí una aplicación Sinatra de muestra que lo demuestra here .