source: main/waeup.kofa/trunk/docs/source/userdocs/datacenter/intro.rst @ 12875

Last change on this file since 12875 was 12870, checked in by Henrik Bettermann, 10 years ago

Restructure the import data section.

File size: 4.3 KB
Line 
1.. _intro:
2
3Introduction
4************
5
6The Object Database
7===================
8
9Most web portals store their data in a relational database like
10PostgreSQL, MySQL or Oracle. A relational database is organized in
11tables of rows and columns, with a unique key for each row. Each data
12entity gets its own table. Rows in tables can be linked to rows in
13other tables by storing the unique key of the row to which it should
14be linked. This sounds quite simple. Many computer users are familiar
15with this kind of data storage because they are used to spreadsheet
16programmes like Excel oder Calc which also organize data in tables.
17Kofa's persistent data are stored in a native object database designed
18for the Python programming language, the so-called ZODB_. An object
19database stores objects with attributes and not records as rows with
20columns in tables. These persistent objects can hold any kind of
21information in attributes and must not adhere to a specific schema
22like records in tables of a relational database.
23
24The ZODB_ also supports a hierarchical, treelike storage of objects.
25Objects can contain other objects if they are declared as containers.
26Objects are stored like folders and files in a filesystem. This makes
27the object handling very fast and transparent because we can access
28objects, or more precisely views of objects, by indicating their path
29in the database, i.e. by traversing the database tree to the object's
30location. Furthermore, we are accessing the views of objects through a
31web browser by entering a URL (Uniform Resource Locator). This
32publication path corresponds more or less to the traversal path of our
33objects. In Kofa the path always contains the object identifiers of
34all objects which are passed when traversing the database tree.
35Example:
36
37https://kofa-demo.waeup.org/students/K1000000/studycourse/100/DCO
38
39is the URL which requests a display view of a course ticket with id
40``DCO``. This object is stored in a study level container object with
41id ``100``, stored in a study course container object with id
42``studycourse``, stored in the student container object with id
43``K1000000``, stored in the students root container, stored in the
44root container of the application, stored in the root of the database
45itself.
46
47This kind of storage requires that each object gets a unique object
48identifier (object id) within its container. The id string is visible
49in the browser address bar. Though it's technically possible for ids
50to contain spaces or slashes we do not allow these kinds of special
51characters in object ids to facilitate the readability of URLs.
52
53Batch Processing
54================
55
56Administrators of web portals, which store their data in relational
57databases, are used to getting direct access to the portal's database.
58There are even tools to handle the administration of these databases
59over the Internet, like phpMyAdmin or phpPgAdmin to handle MySQL or
60PostgreSQL databases respectively. These user interfaces bypass the
61portals' user interfaces and give direct access to the database. They
62allow to easily import or export (dump) data tables or the entire
63database structure into CSV or SQL files. What at first sight appears
64to be very helpful and administration-friendly proves to be very
65dangerous on closer inspection. Data structures can be easily damaged
66or destroyed, or data can be easily manipulated by circumventing the
67portal's security machinery or logging system. Kofa does not provide
68any external user interface to access the ZODB_ directly, neither for
69viewing nor for editing data. This includes also the export and import
70of sets of data. Exports and imports are handled via the Kofa user
71interface itself. This is called batch processing which means either
72producing CSV files (comma-separated values) from portal data (export)
73or processing CSV files in order to add, update or remove portal data
74(import). Main premise of Kofa's batch processing technology is that
75the data stored in the ZODB_ can be specifically backed up and
76restored by exporting and importing data. But that's not all. Batch
77processors can do much more. They are an integral part of the student
78registration management.
79
80.. note::
81
82Although exporters are part of Kofa's batch processing module, we will
83not call them batch processors. Only importers are called batch
84processors. Exporters produce CSV files, importer process them.
85
86
87.. _ZODB: http://www.zodb.org/
Note: See TracBrowser for help on using the repository browser.