NoSQL (Not only SQL) es un tipo de base de datos que sigue un enfoque no relacional, a diferencia de SQL (Structured Query Language).
Con las bases de datos SQL, la información se almacena en forma de tabla con un esquema lógico y se recupera mediante consultas de búsqueda específicas (queries).
Las bases de datos no relacionales, en cambio, tienen su propia estructura y no se construyen según ningún esquema prescrito.
NoSQL es una alternativa y un complemento a las bases de datos tradicionales para hacer frente a la complejidad y los requisitos del desarrollo de aplicaciones modernas.
Las bases de datos no relacionales convencen por su escalabilidad horizontal (scale-out) y el almacenamiento de grandes cantidades de datos.
Esto incluye datos no estructurados y desconocidos que se distribuyen en servidores virtuales y podrían ampliarse continuamente. Este concepto hace que NoSQL sea recomendable para proyectos de Big Data y es impensable con bases de datos relacionales.
Las bases de datos NoSQL pueden dividirse en áreas en función de la forma en que almacenan los datos:
Orientación documental
Los textos de cualquier longitud se almacenan informalmente en un documento. Los representantes conocidos son CouchDBMongoDB y Lotus Notes.
Orientación clave-valor
En una tabla hash, una clave con un puntero apunta a un registro.
Las bases de datos clave-valor más conocidas son Dinamo AmazonGoogle BigTable y el Proyecto Voldemort.
Columna
Los datos no se almacenan fila por fila, sino columna por columna. No hay necesidad de sacar datos no deseados porque los datos relevantes se almacenan en una columna debajo de la otra y se pueden recuperar. Las bases de datos más conocidas de este tipo son Apache Cassandra y Apache HBase.
Orientada a grafos (base de datos de grafos)
Los nodos y conexiones representan relaciones complejas como en las redes sociales. Ejemplos de este tipo son FlockDB y Neo4j.