Let's shit on SQL a bit more.
parent
fc52757074
commit
03da23e8e2
|
@ -8,42 +8,93 @@ DODB is a database-as-library, enabling a very simple way to store applications'
|
|||
To speed-up searches, attributes of these documents can be used as indexes which leads to create a few symbolic links
|
||||
.I symlinks ) (
|
||||
on the disk.
|
||||
.br
|
||||
|
||||
This document briefly presents DODB and its main differences with other database engines.
|
||||
An experiment is described and analysed to understand the performance that can be expected from this approach.
|
||||
.ABSTRACT2
|
||||
.SINGLE_COLUMN
|
||||
.SECTION Introduction to DODB
|
||||
A database consists in managing data, enabling queries (preferably fast) to retrieve, to modify, to add and to delete a piece of information.
|
||||
Anything else is
|
||||
.UL accessory .
|
||||
|
||||
Universities all around the world teach about Structured Query Language (SQL) and relational databases.
|
||||
.
|
||||
.de PRIMARY_KEY
|
||||
.I \\$1 \\$2 \\$3
|
||||
..
|
||||
.de FOREIGN_KEY
|
||||
.I \\$1 \\$2 \\$3
|
||||
..
|
||||
|
||||
The main idea of relational databases is to put data into
|
||||
.UL "Relational databases"
|
||||
are built around the idea to put data into
|
||||
.I tables ,
|
||||
with typed columns so the database can optimize operations and storage.
|
||||
A database is a list of tables with relations between them.
|
||||
For example, let's imagine a database of a
|
||||
For example, let's imagine a database of a movie theater.
|
||||
The database will have a
|
||||
.I table
|
||||
can contain a list of users (their age, height, job, etc.).
|
||||
When another
|
||||
for the list of movies they have
|
||||
.PRIMARY_KEY idmovie , (
|
||||
title, duration, synopsis),
|
||||
a table for the scheduling
|
||||
.PRIMARY_KEY idschedule , (
|
||||
.FOREIGN_KEY idmovie ,
|
||||
.FOREIGN_KEY idroom ,
|
||||
time slot),
|
||||
a table for the rooms
|
||||
.PRIMARY_KEY idroom , (
|
||||
name), etc.
|
||||
Tables have relations, for example the table "scheduling" has a column
|
||||
.I idmovie
|
||||
which points to entries in the "movie" table.
|
||||
|
||||
The SQL language enables arbitrary operations on databases: add, modify and delete entries.
|
||||
Furthermore, SQL enables even to manage administrative operations of the databases themselves: managing users with fine-grained authorizations, creating databases and tables, etc.
|
||||
.UL "The SQL language"
|
||||
enables arbitrary operations on databases: add, search, modify and delete entries.
|
||||
Furthermore, SQL also enables to manage administrative operations of the databases themselves: creating databases and tables, managing users with fine-grained authorizations, etc.
|
||||
This language is used in applications to perform operations on the database, binding the code with the database.
|
||||
SQL is also used
|
||||
.UL outside
|
||||
the application, by admins for managing databases and potentially by some technical users to retrieve some data without a dedicated interface\*[*].
|
||||
.FOOTNOTE1
|
||||
One of the first objectives of SQL was to enable a class of
|
||||
.I non-developer
|
||||
users to talk directly to the database so they can access the data without bothering the developers.
|
||||
.FOOTNOTE2
|
||||
|
||||
Many tools were used or even developed over the years specifically to aleviate the inherent complexity and limitations of SQL.
|
||||
For example, Unified Modeling Language (UML) is used to design databases by providing a graphical overview of the relations between tables.
|
||||
SQL databases can be scripted to automate operations and provide a massive speed up to the operations (
|
||||
.I "stored procedures" ,
|
||||
For example, designing databases becomes difficult when the list of tables grows;
|
||||
Unified Modeling Language (UML) is then used to provide a graphical overview of the relations between tables.
|
||||
SQL databases may be fast to retrieve data despite complicated operations, but when multiple sequential operations are required they become slow because of all the back-and-forths with the application;
|
||||
thus, SQL databases can be scripted to automate operations and provide a massive speed up
|
||||
.I "stored procedures" , (
|
||||
see
|
||||
.I "PL/SQL" ),
|
||||
etc.
|
||||
.I "PL/SQL" ).
|
||||
Writing SQL requests requires a lot of boiletplate since there is no integration in the programming languages, leading to multiple function calls for any operation on the database;
|
||||
thus, object-relational mapping (ORM) libraries were created to reduce the massive code duplication.
|
||||
And so on.
|
||||
|
||||
For many reasons, SQL is not a silver bullet to
|
||||
.I solve
|
||||
the database problem.
|
||||
The encountered difficulties mentioned above and the original objectives of SQL not being universal\*[*], other database designs were created\*[*].
|
||||
.FOOTNOTE1
|
||||
To say the least!
|
||||
Not everyone needs to let users access the database without going through the application.
|
||||
For instance, writing a \f[I]blog\f[] for a small event or to share small stories about your life doesn't require manual operations on the database, fortunately.
|
||||
.FOOTNOTE2
|
||||
.FOOTNOTE1
|
||||
A lot of designs won't be mentioned here.
|
||||
The actual history of databases is often quite unclear since the categories of databases are sometimes vague, underspecified.
|
||||
As mentioned, SQL is not a silver bullet and a lot of developers shifted towards other solutions, that's the important part.
|
||||
.FOOTNOTE2
|
||||
.TBD
|
||||
The
|
||||
Document-oriented databases are key-value stores.
|
||||
Furthermore, metadata is extracted for further optimization.
|
||||
|
||||
Contrary to SQL, DODB has a very narrow scope: to provide
|
||||
Contrary to SQL, DODB has a very narrow scope: to provide a library enabling to store, retrieve, modify and delete data to the application.
|
||||
Thus, DODB doesn't provide an interactive shell, no request language to perform arbitrary operations on the database, etc.
|
||||
|
||||
.SECTION Basic usage
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
.\" .RP = report document
|
||||
.nr PO 0.5i \" page offset default 1i
|
||||
.nr LL 7.5i \" line length default 6i
|
||||
.nr LL 7.0i \" line length default 6i
|
||||
.nr FM 0.8i \" page foot margin default 1i
|
||||
.nr DI 0
|
||||
.nr FF 3 \" footnotes' type: numbered, with point, indented
|
||||
|
@ -188,7 +188,8 @@ accumulate
|
|||
..
|
||||
.de SINGLE_COLUMN
|
||||
.1C
|
||||
.FOOTNOTE_TO_COLUMN_WIDTH
|
||||
.\" .FOOTNOTE_TO_COLUMN_WIDTH
|
||||
.nr FL (\n[LL]*97/100)
|
||||
..
|
||||
.de TWO_COLUMNS
|
||||
.2C
|
||||
|
|
Loading…
Reference in New Issue