Una visión al ligero motor de base de datos SQLite

Jul 05, 2012 1 Comment by

SQLite es un “pequeño” sistema de gestión de base de datos relacionales que opera sobre un único archivo binario, encapsulado en una pequeña librería de funciones y disponible en muchos lenguajes (a través de módulos).

¿Por qué consideramos a SQLite “pequeño” ?

Es pequeño desde el punto de vista de “consumos de recursos” frente a otros “grandes” sistemas de base de datos tradicionales, ya que SQLite es una librería relativamente liviana, la cual encapsula todo el acceso a la base de datos en funciones que operan directamente sobre el archivo binario de la base datos. En contraste a conectarse a una base de datos tradicional, la que generalmente opera sobre un paradigma cliente-servidor junto a sockets, etc.

¿Como opera SQLite?

SQLite (al igual como la mayoría de las base de datos) operan sobre una (o mas) estructura de datos llamadas Arboles, las que representan una estructura de datos que relaciona información entre los nodos (como las hojas de un árbol).

Un Árbol (en el contexto de estructura de datos) bien diseñado, nos permite encontrar o acceder a la información con un costo muy menor frente a otras estructura de datos de acceso “secuencial” como las listas o stacks.

Entonces SQLite almacena toda la base de datos en un único archivo binario, en donde mezcla el árbol de indices, datos, etc.

Ventajas y Desventajas

Por las características de SQLite, es recomendable en muchos contextos de aplicación, todo depende del nivel de acceso a la base de datos, ya que si la alicación realiza distintos accesos simultáneos, gran demanda de consultas, etc. lo mas recomendable seria migrar a una base de datos tradicional cliente-servidor, en caso contrario, SQLite ofrece una gran pero ligera solución para nuestros datos.

SQLite en distintos lenguajes de programación

SQLite en PHP

SQLite está disponible nativamente desde la versión 5 de PHP, mientras que en PHP4, solo es accesible habilitando el modulo.
Hay varias formas para acceder a una base de datos sqlite (directamente con las funciones del modulo sqlite, utilizando una capa de abstración de datos, etc.), pero siempre es necesario tener activo el modulo sqlite.

<?php
// Example SQLite by deerme.org
// PEAR in the Include Path
$pear = "./pear";
ini_set("include_path",ini_get("include_path").";$pear"); // Remember ':' for like unix system and ';' in windows system
require_once("DB.php");

// Sqlite
$dsn = array(
	'phptype'  => "sqlite",
	'hostspec' => "localhost",
	'database' => "./db/friends.db",
	'username' => "",
	'password' => ""
);

$dbh = DB::connect($dsn);
if (PEAR::isError($dbh))
	die("Error 1".$dbh->getMessage() );

// Create Database
$dbh->query("CREATE TABLE IF NOT EXISTS friends (id INTEGER NOT NULL PRIMARY KEY, name VARCHAR(128)  NULL, phone VARCHAR(128) NULL )");

// List my Friend
$q = $dbh->query("SELECT * FROM friends");
if (PEAR::isError($q))
	die("Error 2".$q->getMessage() );
while( $row = $q->fetchRow(DB_FETCHMODE_ASSOC) )
{
	echo $row["name"]."-".$row["phone"]."\n";
}
// Add Friend
$dbh->query(" INSERT INTO friends ( name , phone ) VALUES ('Cat Kitty','523621422') ; ");	

unset($dbh);
?>

SQLite en Python

# Example SQLite by deerme.org
import sqlite3 , time

# Create the connection
con = sqlite3.connect('test.db')

# Create de Cursor
cur = con.cursor()

# Create table
cur.execute("CREATE TABLE IF NOT EXISTS friends (id INTEGER NOT NULL PRIMARY KEY, name VARCHAR(128)  NULL, phone VARCHAR(128) NULL )")
con.commit()

# Add Data

friends = [ ('Pedro', '14512412412'), ('Jose Ignacio', '412412412412')]

for p in friends:
    cur.execute('INSERT INTO friends (name,phone) VALUES (?,?)', p)

con.commit()

# Get Data
cur.execute('SELECT * FROM friends')
for row in cur:
    print row

cur.close()
con.close()
Databases, PHP, Python

About the author

Ingeniero en Informática, Oracle Certified Master Java EE 6 Enterprise Architect, Oracle Certified Professional Java Programmer. Experto en distintas ramas de la computación y otras "yerbas" xD. Si te gusto este post, sígueme en @deerme_org, escríbeme a info AT deerme.org o contactame por linkedin.

One Response to “Una visión al ligero motor de base de datos SQLite”

  1. malike says:

    Echa un vistazo a una herramienta gratuita – Valentina Studio. Producto asombroso! OMI es el mejor gestor de SQLite para todas las plataformas. http://www.valentina-db.com/en/valentina-studio-overview

Leave a Reply


* 2 = six