[libgda: 1/2] Doc: Updating documentation
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda: 1/2] Doc: Updating documentation
- Date: Fri, 6 Mar 2020 19:06:32 +0000 (UTC)
commit 6689896d473da0749493e214c510e72378c132b5
Author: Pavlo Solntsev <p sun fun gmail com>
Date: Tue Feb 18 13:52:50 2020 -0600
Doc: Updating documentation
doc/C/libgda/introduction.xml | 262 +++++++++++++++++++++++++++++++++++++++
doc/C/libgda/libgda-6.0-docs.xml | 44 ++++++-
2 files changed, 302 insertions(+), 4 deletions(-)
---
diff --git a/doc/C/libgda/introduction.xml b/doc/C/libgda/introduction.xml
new file mode 100644
index 000000000..e9d79afd4
--- /dev/null
+++ b/doc/C/libgda/introduction.xml
@@ -0,0 +1,262 @@
+<?xml version="1.0"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"[
+<!ENTITY LIBGDA "<application>Libgda</application>">
+<!ENTITY GNOMEDB "<acronym>Gnome-Db</acronym>">
+<!ENTITY RPM "<acronym>RPM</acronym>">
+<!ENTITY ODBC "<acronym>ODBC</acronym>">
+<!ENTITY SQL "<acronym>SQL</acronym>">
+<!ENTITY LDAP "<acronym>LDAP</acronym>">
+<!ENTITY JDBC "<acronym>JDBC</acronym>">
+<!ENTITY GDA "<acronym>GDA</acronym>">
+<!ENTITY RDBMS "<acronym>RDBMS</acronym>">
+<!ENTITY API "<acronym>API</acronym>">
+]>
+
+<chapter id="introduction">
+ <title>Introduction</title>
+ <sect1 id="introduction-overview">
+ <title>Overview</title>
+ <para>
+ &ODBC; and &SQL; are established standards. However &ODBC; is mostly limited to
+ the Microsoft Windows environment (even though the UnixODBC project exists and links
+ to some drivers), and the API is quite old and not well integrated into the GNOME ecosystem.
+ </para>
+ <para>
+ &SQL; itself is standardized but up to some point only, so that &SQL; source
+ compatibility can not be assured for all database servers. And for some
+ sort of servers, &SQL; is not even feasible (think about &LDAP;).
+ </para>
+ <para>
+ &JDBC; is a more recent standard which replaces &ODBC; in the Java world, but it's limited
+ to the Java programming world, and is difficult to integrate in C (or other languages
+ different from Java). There are however a lot of JDBC drivers out there for many database
+ engines.
+ </para>
+ <para>
+ &GDA; (GNOME Data Access) tries to tackle the &ODBC; and &JDBC; "limitations" and help you with the
&SQL;
+ problem. It's a sort of middleware to access different data sources. It offers a high level view of
+ data sources and has some places where you can plug in low level access
+ to the database for special tasks.
+ </para>
+ <para>
+ It offers a wrapper around the database internals, thus making it easier
+ for programmers to make use of all the power provided by many RDBMS without
+ knowing much about it. It comes as a set of libraries, a core one and some extensions (the GTK+ UI
+ extension for example) and some drivers for the most common OpenSource or proprietary database engines.
+ </para>
+ <para>
+ Some of these drivers are a bit special: the LDAP provider allows one to adress an LDAP directory as
+ if it were composed of tables (provided some configuration), and the &JDBC; provider "wraps" any
&JDBC; driver.
+ </para>
+ <para>
+ Along with these libraries (and associated header files and language
+ bindings for development), &LIBGDA; includes several tools and utilities
+ to help you with the task of developing applications based on &LIBGDA;,
+ as well as for automating some database-related tasks.
+ </para>
+ <para>
+ &LIBGDA; is implemented for
+ <systemitem class="osname">UNIX</systemitem>
+ -like operating systems
+ (including
+ <systemitem class="osname">Linux</systemitem>
+ ), and
+ <systemitem class="osname">Windows</systemitem>
+ .
+ </para>
+ </sect1>
+
+ <sect1 id="features">
+ <title>Features</title>
+ <para>
+ This section presents the main features of the 5.2 version of Libgda.
+ </para>
+ <para>
+ Libgda is a low-level database abstraction layer built on top of each database C API. In terms of
abstraction,
+ Libgda offers the following top features:
+ <itemizedlist>
+ <listitem>
+ <para>
+ Open a connection to any database which type is supported using either a defined data source
(defined per
+ user or system wide) or directly providing connection parameters. Several connections can be
opened at the
+ same time.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Run any SQL query against an opened connection; furthermore any SQL query can be extended to
define query parameters
+ using an easy to understand notation. If the SQL query was a SELECT statement, then an array of
data is
+ returned (as a <classname>GdaDataModel</classname> object), and otherwise the number of rows
affected
+ by the query is returned. For very large data sets, it is possible to specify that the
returned array
+ of data should be based on a cursor to avoid loading it into memory.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Perform most of the data definition queries (including database creation) for the database types
which support
+ it using a key/value mechanism.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Create, maintain and extend a view of the database's structure and meta data including the
definitions of
+ the tables, constraints, data types, .... It is defined as closely as possible to the
information schema SQL
+ standard (ISO/IEC 9075); see the <link linkend="gda-dict">Dictionary - metadata</link> section
+ for more information.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Easy to extend data models for custom requirements
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Support for binary data and for BLOBs in a transparent way, see the <link
linkend="libgda-Gda-Value">Gda value section</link>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Support for detailed parameters in SQL queries, see the <link
linkend="GdaSqlParser">GdaSqlParser</link> object
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Support for virtual connections, see the <link linkend="virtual_connection">Virtual
connections chapter</link>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Partially thread-safe, see <link linkend="threads">the threads limitation</link> for
+ more details
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ The database types which can be accessed at the time of writing are the following ones:
+ <itemizedlist>
+ <listitem>
+ <para>
+ MySQL: fully functional;
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ PostgreSQL: fully functional;
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ SQLite: fully functional;
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ SQLCipher: fully functional;
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect1>
+ <sect1 id="architecture">
+ <title>Architecture</title>
+ <para>
+ A &LIBGDA; application is composed of three layers. The lower level layer are
+ the &GDA; providers: plug-ins whose task is to map the &RDBMS;-specific &API;
+ to the &GDA; model.
+ </para>
+ <para>
+ Then, in a middle layer, are the libraries provided by &LIBGDA; and used by
+ the programmer: an easy-to-use and
+ full featured set of libraries.
+ </para>
+ <para>
+ Finally, at the upper layer is the application part itself, as writen by the
+ developer.
+ </para>
+ <mediaobject>
+ <imageobject role="html">
+ <imagedata fileref="architecture.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Typical &LIBGDA; application's architecture</phrase>
+ </textobject>
+ <caption>
+ <para>
+ Architecture of an application connected to 4 databases of 3 different types.
+ </para>
+ </caption>
+ </mediaobject>
+ <para>
+ &LIBGDA; also includes:
+ <itemizedlist>
+ <listitem>
+ <para>
+ some example code which can be "cloned" to create new database providers for
+ database engines not yet supported by &LIBGDA;
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ a graphical configuration manager
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ an <link linkend="libgda-sql">SQL console</link> to connect to dabatase serveurs and perform some
+ &LIBGDA; related administrative tasks
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ some other more <link linkend="part_tools">specific tools</link>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect1>
+ <sect1 id="data-source">
+ <title>Data sources</title>
+ <para>
+ To open a connection, the programmer needs to specify the database provider to use, and some
+ connection parameters, some of them specific to the database engine to be used, some of them
+ more generic (such as the "DB_NAME" parameter to specify a database name).
+ </para>
+ <para>
+ All the parameters are combined together to give &LIBGDA; enough information to open a connection;
refer
+ to <link linkend="gda-connection-new-from-string">gda_connection_new_from_string()</link> for more
+ information.
+ </para>
+ <para>
+ However, remembering the complete string to open a connection can be tedious, and so &LIBGDA; supports
+ named data sources (DSN) whereby a connection is specified and named once and opened refering to
+ its name rather than to the actual parameters used. Refer to
+ the <link linkend="defining_dsn">Define a data source (DSN)</link> section, and the
+ <link linkend="gda-config-define-dsn">gda_config_define_dsn()</link> and
+ <link linkend="gda-connection-new-from-dsn">gda_connection_new_from_dsn()</link> functions.
+ </para>
+ <para>
+ DSN can have a scope limited to the user, or be system wide. User scope DSN definitions are stored
+ in $XDG_DIR/libgda where $XDG_DIR is determined by the XDG Base Directory Specification (using
+ <link linkend="g-get-user-data-dir">g_get_user_data_dir()</link>). System wide definitions are stored
+ in $ETC/$VERSION where $ETC is the configuration directory where &LIBGDA; is installed and $VERSION
+ is &LIBGDA;'s major version.
+ </para>
+ <para>
+ Note that these locations can be changes using some properties of the global
+ <link linkend="GdaConfig">GdaConfig</link> object.
+ </para>
+ </sect1>
+ <sect1>
+ <title>Authentication information management</title>
+ <para>
+ When named data sources are used, &LIBGDA; can also store authentication information (username and
+ password). This is accomplished using
+ <ulink url="https://wiki.gnome.org/Projects/Libsecret">libsecret</ulink>, or
+ <ulink url="https://wiki.gnome.org/Projects/GnomeKeyring">libgnome-keyring</ulink> if available,
+ or stored in an insecure way (along the DSN definition) if none of these libraries are available.
+ </para>
+ </sect1>
+</chapter>
diff --git a/doc/C/libgda/libgda-6.0-docs.xml b/doc/C/libgda/libgda-6.0-docs.xml
index 3592ccbac..55a1bd315 100644
--- a/doc/C/libgda/libgda-6.0-docs.xml
+++ b/doc/C/libgda/libgda-6.0-docs.xml
@@ -6,21 +6,57 @@
<!ENTITY % gtkdocentities SYSTEM "xml/gtkdocentities.ent">
%gtkdocentities;
<!ENTITY LIBGDA "libgda-6.0">
+ <!ENTITY GDA "<acronym>GDA</acronym>">
]>
<book id="index">
<bookinfo>
<title>&package_name; Reference Manual</title>
<releaseinfo>
- for &package_string;.
- The latest version of this documentation can be found on-line at
- <ulink role="online-location"
url="https://gitlab.gnome.org/GNOME/libgda/pipelines">https://gitlab.gnome.org/GNOME/libgda/pipelines</ulink>,
- from latest successful pipeline build.
+ The latest version of this documentation can be found on-line at the home
+ <ulink role="online-location" url="https://gnome.pages.gitlab.gnome.org/libgda/C/libgda/">wiki</ulink>
page.
</releaseinfo>
<xi:include href="author-list.xml"/>
+ <date>&builddate;</date>
+ <copyright>
+ <year>1999 - 2020</year>
+ <holder>©</holder>
+ </copyright>
+ <abstract>
+ <para>
+ GNOME Data Access (&GDA;) is an architecture whose
+ purpose is to provide universal access to many different kinds and
+ types of data sources. This goes from traditional relational database
+ systems, to any imaginable kind of data source such as a mail server,
+ a &LDAP; directory...
+ </para>
+ <para>
+ This universality is obtained through the use of
+ an easily extensible plug-in system as the mechanism for
+ communication between the different components in the architecture.
+ </para>
+ </abstract>
+ <legalnotice id="legalnotice">
+ <para>
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the <link linkend="fdl"><citetitle>GNU
+ Free Documentation License</citetitle></link>, Version 1.1 or any later
+ version published by the Free Software Foundation with no Invariant
+ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the
+ license can be found in <link linkend="fdl">the appendix</link>.
+ </para>
+ <para>
+ Many of the names used by companies to distinguish their products and
+ services are claimed as trademarks. Where those names appear in any
+ GNOME documentation, and those trademarks are made aware to the members
+ of the GNOME Documentation Project, the names have been printed in caps
+ or initial caps.
+ </para>
+ </legalnotice>
</bookinfo>
<part id="Getting Started">
<title>Getting Started</title>
+ <xi:include href="introduction.xml"/>
<xi:include href="xml/libgda.xml"/>
<xi:include href="installation.xml"/>
</part>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]