[LON-CAPA-cvs] cvs: loncom / lonsql

bowersj2 lon-capa-cvs@mail.lon-capa.org
Fri, 25 Jul 2003 17:07:06 -0000


bowersj2		Fri Jul 25 13:07:06 2003 EDT

  Modified files:              
    /loncom	lonsql 
  Log:
  SessionThre2.html from the Guts manual.
  
  
Index: loncom/lonsql
diff -u loncom/lonsql:1.55 loncom/lonsql:1.56
--- loncom/lonsql:1.55	Mon Feb  3 08:43:38 2003
+++ loncom/lonsql	Fri Jul 25 13:07:06 2003
@@ -3,7 +3,7 @@
 # The LearningOnline Network
 # lonsql - LON TCP-MySQL-Server Daemon for handling database requests.
 #
-# $Id: lonsql,v 1.55 2003/02/03 13:43:38 albertel Exp $
+# $Id: lonsql,v 1.56 2003/07/25 17:07:06 bowersj2 Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -39,9 +39,95 @@
 This script should be run as user=www.  
 Note that a lonsql.pid file contains the pid of the parent process.
 
-=head1 DESCRIPTION
+=head1 OVERVIEW
 
-lonsql is 
+The SQL database in LON-CAPA is used for catalog searches against
+resource metadata only. The authoritative version of the resource
+metadata is an XML-file on the normal file system (same file name as
+resource plus ".meta"). The SQL-database is a cache of these files,
+and can be reconstructed from the XML files at any time.
+
+The current database is implemented assuming a non-adjustable
+architecture involving these data fields (specific to each version of
+a resource).
+
+=over 4
+
+=item * title
+
+=item * author
+
+=item * subject
+
+=item * notes
+
+=item * abstract
+
+=item * mime
+
+=item * language
+
+=item * creationdate
+
+=item * lastrevisiondate
+
+=item * owner
+
+=item * copyright 
+
+=back 
+
+=head2 Purpose within LON-CAPA
+
+LON-CAPA is meant to distribute A LOT of educational content to A LOT
+of people. It is ineffective to directly rely on contents within the
+ext2 filesystem to be speedily scanned for on-the-fly searches of
+content descriptions. (Simply put, it takes a cumbersome amount of
+time to open, read, analyze, and close thousands of files.)
+
+The solution is to index various data fields that are descriptive of
+the educational resources on a LON-CAPA server machine in a
+database. Descriptive data fields are referred to as "metadata". The
+question then arises as to how this metadata is handled in terms of
+the rest of the LON-CAPA network without burdening client and daemon
+processes.
+
+The obvious solution, using lonc to send a query to a lond process,
+doesn't work so well in general as you can see in the following
+example:
+
+    lonc= loncapa client process    A-lonc= a lonc process on Server A
+    lond= loncapa daemon process
+
+                 database command
+    A-lonc  --------TCP/IP----------------> B-lond
+
+The problem emerges that A-lonc and B-lond are kept waiting for the
+MySQL server to "do its stuff", or in other words, perform the
+conceivably sophisticated, data-intensive, time-sucking database
+transaction.  By tying up a lonc and lond process, this significantly
+cripples the capabilities of LON-CAPA servers.
+
+The solution is to offload the work onto another process, and use
+lonc and lond just for requests and notifications of completed
+processing:
+
+                database command
+
+  A-lonc  ---------TCP/IP-----------------> B-lond =====> B-lonsql
+         <---------------------------------/                |
+           "ok, I'll get back to you..."                    |
+                                                            |
+                                                            /
+  A-lond  <-------------------------------  B-lonc   <======
+           "Guess what? I have the result!"
+
+Of course, depending on success or failure, the messages may vary, but
+the principle remains the same where a separate pool of children
+processes (lonsql's) handle the MySQL database manipulations.
+
+Thus, lonc and lond spend effectively no time waiting on results from
+the database.
 
 =head1 Internals