¿Es posible usar SQLite como una base de datos cliente-servidor? [cerrado]

32

¿Existen técnicas o herramientas para trabajar con SQLite en un entorno de base de datos de tamaño medio / tráfico / concurrencia?

Maniero
fuente
3
¿Puedes dar una razón por la cual sería útil tener esto? De lo contrario, creo que merece ser cerrado ya que no es una pregunta real. SQLite no es una base de datos cliente-servidor y se comercializa realmente entre la multitud que no necesita una base de datos cliente-servidor.
jcolebrand
1
@Eelke, aunque esto ya no es cierto en el modo WAL desde la versión 3.7 : solo puede haber una escritura a la vez, pero "los lectores no bloquean a los escritores y un escritor no bloquea a los lectores"
Jack Douglas
1
casualmente, Wikipedia parece tener este error
Jack Douglas
2
¿Por qué? Creo que debería definir sus requisitos ... y tal vez encuentre una base de datos más adecuada ...
AK_
3
@AK_ Los requisitos principales son ACID completo y una base de datos muy simple para desarrollar y usar. ¡Creamos una versión personalizada para trabajar como cliente-servidor y el resultado es simplemente increíble! La gente está subestimando la capacidad de SQLite y sobrevalorando la necesidad de concurrencia con las pequeñas empresas. La gente necesita abrir la mente. Seguir la receta no es el único camino a seguir. Ahora tenemos un producto sin competencia en nuestro mercado.
Maniero

Respuestas:

25

SQLite es una base de datos incrustada y no está destinada a ser utilizada como base de datos cliente / servidor. Si realmente quieres, puedes usar SQLitening .

Qué es SQLitening

SQLitening es una implementación cliente / servidor de la muy popular base de datos SQLite.

SQLitening es una biblioteca de programadores en forma estándar de DLL Win32. Se instala como un servicio estándar de Windows. Además del modo cliente / servidor, la biblioteca permite que el programador también acceda a bases de datos SQLite en modo local. En cualquiera de los modos (local o cliente / servidor), la base de datos es extremadamente rápida y robusta. - Fuente: http://www.planetsquires.com/sqlite_client_server.htm

Giorgi
fuente
44
¿Puede elaborar o proporcionar un enlace a ¿Qué es SQLitening? Ese enlace va a un foro y no tiene una palabra sobre lo que realmente es.
develCuy
17

Como se indicó anteriormente, sqlite no es una aplicación cliente-servidor y no está diseñada para operaciones altamente concurrentes.

Sin embargo, puede "hacerlo cliente-servidor", si usa ssh.

ssh user@host sqlite3 databasefile select * from table

trabajos.

ddeimeke
fuente
1
¿Se considera esto "cliente-servidor" porque ha cifrado la conexión?
Robert Harvey
No, es solo debido a una red entre la máquina que aloja la base de datos y la máquina que accede a la base de datos.
ddeimeke
4

No, SQLite no presenta un punto final de red, solo es accesible a través del sistema de archivos. Se hace apoyar el acceso simultáneo de múltiples procesos en la misma máquina, pero a un nivel muy granuloso grueso (DML bloquea una tabla entera). Por lo tanto, podría tener una docena de procesos httpd de Apache, todos con una base de datos SQLite en el disco local abierta, todo haciendo SELECTsy funcionaría bien. Pero realmente, es la herramienta incorrecta para el trabajo: usaría Postgres en este escenario.

Gayo
fuente
1
bloquea una tabla completa Solo cuando está escribiendo en ella sin leer, muchos procesadores pueden leer de la misma tabla;)
ucefkh
3

Paradigma Software presenta Valentina Server 6.0 (ahora en prueba beta), que es 3 en 1:

  • Valentina DB Server
  • Valentina SQLite Server
  • Valentina Report Server

SQLite Server utiliza el motor SQLite sin cambios, WAL habilitado. SQLite Server funciona en 3 SO: Mac, Win, Linux .

Puede utilizar la aplicación Valentina Studio (gratuita) para administrar este servidor de base de datos, así como mySQL, postgreSQL, SQLite, MS SQL. También funciona como aplicación nativa hecha en C ++ en 3 SO.

SQLite Server contiene características tales como: SSL, ACL, Copias de seguridad, API REST, Canales de notificación, JSON, XML.

En este momento, el acceso a este servidor se puede hacer desde C ++, Xojo y LiveCode. Pronto se agregarán PHP, Java, .NET.

La versión gratuita de Valentina Server incluye

  • 10 conexiones a bases de datos SQLite
  • 5 conexiones a Valentina DBs
  • 5 conexiones a Valentina Reports

Detalles que puedes leer en el artículo .

Ruslan Zasukhin
fuente
2

SQLabs ofrece un producto comercial llamado cubeSQL que puede satisfacer sus necesidades.

dwurf
fuente
1

Podrías hackear algo usando netcat , pero no puedo imaginar que sea una solución muy elegante.

TML
fuente
-5

Puedes usar un servicio similar a Dropbox . Hay soluciones autohospedadas. Sin embargo, SQLite3 no se creó para un modelo cliente-servidor. Sería mejor con otras soluciones que fueron desarrolladas desde cero por el modelo cliente-servidor.

atmosx
fuente
55
Dropbox y otros servicios de sincronización de archivos NO SON una solución a este problema. Dropbox no contiene ninguna lógica con respecto a la fusión de cambios en una base de datos en la que varios usuarios escriben simultáneamente. El resultado final será la pérdida de datos, trabajo y tiempo.
jptros