diff --git a/devel/scheme/database/database-base.en.tm b/devel/scheme/database/database-base.en.tm index 60ebb4c..9392d8f 100644 --- a/devel/scheme/database/database-base.en.tm +++ b/devel/scheme/database/database-base.en.tm @@ -6,13 +6,16 @@ database model> The database manipulation API has mainly been designed for - internal use and not as ageneral purpose interface to SQL. In - particular, we only support a limit number of entry types and field types, - although new types can easily be added later. Currently, databases are used - for managing remote files, bibliographies, user lists, versions, etc. + internal use. It is based on adedicated + -style database model, + using a variant of . + For the moment, we only support a limit number of entry types and field + types, although new types can easily be added later. Currently, databases + are used for managing remote files, bibliographies, user lists, versions, + etc. - The interface has been kept to be as simple as possible, so that our - SQL-based implementation can be most easily optimized for efficiently when + The interface has been kept to be as simple as possible, so that our low + level implementation can be most easily optimized for efficiently when needed. Furthermore, the routines of our basic API can all be customized to add specific features. For instance, the basic API is string-based, so aspecial additional layer was added to support @@ -30,14 +33,6 @@ alternative time for database queries, which make it possible to easily recover any past state of the database. - From the SQL implementation point of view, the database consists of a - single table with five columns: unique identifier, attribute, value, - creation date, expiration date. Grouping together rows with the same - identifier, one obtains the various entries. Grouping together rows with - the same identifier and the same attribute, one obtains the individual - values. Strictly speaking, the creation and expiration dates apply to - individual values in the lists of values. - <\explain> diff --git a/devel/scheme/database/database-index.en.tm b/devel/scheme/database/database-index.en.tm index 47f08c7..90ec200 100644 --- a/devel/scheme/database/database-index.en.tm +++ b/devel/scheme/database/database-index.en.tm @@ -5,15 +5,20 @@ <\body> - The purpose of the first extension of the basic database API in - is to permit searching for certain keywords in the - database entries. The current implementation achieves this by maintaining a - few additional tables with the list of entries in which given keywords - occur and counters of how many times a given keyword appears. We also - maintain a few additional prefix tables which allow us to search for - uncompleted keywords. The indexation mechanism only indexates - alphanumerical keywords and normalizes all keywords to lowercase; see - for more details. + The purpose of the first extension of the basic database API is to permit + searching for certain keywords in the database entries. The current + implementation achieves this by maintaining afew additional tables + with the list of entries in which given keywords occur. We also maintain + afew additional prefix tables which allow us to search for + uncompleted keywords. For efficiency reasons, the indexation is done at a + low level in C++. + + It should be noticed that the indexation mechanism only indexates + alphanumerical keywords and normalizes all keywords to lowercase. Accented + characters and characters in other (cyrillic) scripts are + also ``transliterated'' into basic unaccented roman characters. For + instance, we write ``é'' and ``\<#449\>'' as ``e'' and ``shch''. As a + consequence, a search for ``poincare'' will match ``Poincaré''.