From: Enrico Tassi <enrico.tassi@inria.fr> Date: Fri, 2 Nov 2007 13:07:27 +0000 (+0000) Subject: added doc for db and getter sections X-Git-Tag: make_still_working~5919 X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=commitdiff_plain;h=6878c387d33c042823a47bc9308a9dbadee83444;p=helm.git added doc for db and getter sections --- diff --git a/helm/software/matita/help/C/sec_install.xml b/helm/software/matita/help/C/sec_install.xml index 9dd240daf..4d50db4e6 100644 --- a/helm/software/matita/help/C/sec_install.xml +++ b/helm/software/matita/help/C/sec_install.xml @@ -247,10 +247,11 @@ </sect2> <sect2 id="database_setup"> - <title>Database setup</title> + <title>(optional) &MYSQL; setup</title> - <para> To fully exploit &appname; indexing and search capabilities you - will need a working &MYSQL; database. Detalied instructions on how to do + <para> To fully exploit &appname; indexing and search capabilities + on a huge metadata set you may + need a working &MYSQL; database. Detalied instructions on how to do it can be found in the <ulink type="http" url="http://dev.mysql.com/doc/">MySQL documentation</ulink>. Here you can find a quick howto. </para> @@ -386,11 +387,25 @@ </sect1> <sect1 id="matita.conf.xml"> - <title>Configuring Matita</title> + <title>Configuring &appname;</title> <para> The file <emphasis>matita.conf.xml</emphasis>... &TODO; </para> + <sect2> + <title>The db and the getter sections</title> + <para> + &appname; needs to store/fetch data and metadata. Data is essentially + composed of XML files, metadata is a set of tuples for a relational + model. Data and metadata can produced by the user or be already + available. Both kind of data/metadata can be local and/or remote. + </para> + <para> + The db section tells &appname; where to store and retrieve metadata, + while the getter section describes where XML files have to be + found. The following picture describes the suggested configuration. + Dashed arrows are determined by the configuration file. + </para> <figure><title>Configuring the Databases</title> <mediaobject> <imageobject> @@ -399,6 +414,79 @@ <textobject><phrase>How to configure the databases.</phrase></textobject> </mediaobject> </figure> + <sect3> + <title>The getter</title> + <para> + Consider the following snippet and the URI + <userinput>cic:/matita/foo/bar.con</userinput>. If &appname; + is asked to read that object it will resolve the object trough + the getter. Since the first two entries are equally specific + (longest match rule applies) first the path + <userinput>file://$(matita.rt_base_dir)/xml/standard-library/foo/bar.con</userinput> + and then <userinput>file://$(user.home)/.matita/xml/matita/foo/bar.con</userinput> + are inspected. + <programlisting> +<![CDATA[ + <section name="getter"> + <key name="cache_dir">$(user.home)/.matita/getter/cache</key> + <key name="prefix"> + cic:/matita/ + file://$(matita.rt_base_dir)/xml/standard-library/ + ro + </key> + <key name="prefix"> + cic:/matita/ + file://$(user.home)/.matita/xml/matita/ + </key> + <key name="prefix"> + cic:/Coq/ + http://mowgli.cs.unibo.it/xml/ + legacy + </key> + </section> +]]> + </programlisting> + if the same URI has to be written, the former prefix is skipped + since it is marked as readonly (<userinput>ro</userinput>). + Objects resolved using the third prefix are readonly too, and are + retrieved using the network. There is no limit to the number of + prefixes the user can define. The distinction between prefixes marked + as readonly and legacy is that, legacy ones are really read only, while + the ones marked with <userinput>ro</userinput> are considered for + writing when &appname; is started in system mode (used to publish user + developments in the library space). + </para> + </sect3> + <sect3> + <title>The db</title> + <para> + The database subsystem has three fron ends: library, user and + legacy. The latter is the only optional one. Every query is done on + every frontend, making the duplicate free union of the results. + The user front end kepps metadata produced by the user, and is thus + heavily accessed in read/write mode, while the library and legacy + fron ends are read only. Every front end can be connected to + backend, the storage actually. + Consider the following snippet. + <programlisting> +<![CDATA[ + <section name="db"> + <key name="metadata">mysql://mowgli.cs.unibo.it matita helm none legacy</key> + <key name="metadata">file://$(matita.rt_base_dir) metadata.db helm helm library</key> + <key name="metadata">file://$(matita.basedir) user.db helm helm user</key> + </section> +]]> + </programlisting> + Here the usr database is a file (thus locally accessed trough the + Sqlite library) placed in the user's home directory. The library one is + placed in the &appname; runtime directory. The legacy fron end is + connected to a remote &MYSQL; based storage. Every metadata key + takes a path to the storage, the name of the database, the user name, + a password (or <userinput>none</userinput>) and the name of the front + end to which it is attached. + </para> + </sect3> + </sect2> </sect1> </chapter>