--- doc/build/Attic/loncapasqldatabase.html 2001/02/14 15:20:55 1.9 +++ doc/build/Attic/loncapasqldatabase.html 2001/02/20 22:24:45 1.15 @@ -8,7 +8,7 @@ Scott Harrison

-Last updated: 02/14/2001 +Last updated: 02/15/2001

This file describes issues associated with LON-CAPA @@ -32,6 +32,72 @@ and a SQL database.

Important notes

+The current database is implemented assuming a non-adjustable +architecture involving these data fields (specific to each version +of a resource). +

+

+

+Security occurs as a function of the user 'www', +and the permissions on the files in the /usr/local/mysql +directory. (These files and directories should +be 700, 600, 500, 400, etc; not allow access to anyone +but user 'www'.) +

+

+These commands create the loncapameta database. +

+mysql> CREATE DATABASE IF NOT EXISTS loncapa;
+mysql> USE loncapa;
+mysql> CREATE TABLE IF NOT EXISTS metadata (title TEXT, author TEXT, subject TEXT, notes TEXT, abstract TEXT, mime TEXT, language TEXT, creationdate TEXT, lastrevisiondate TEXT, owner TEXT, copyright TEXT, FULLTEXT idx_title (title), FULLTEXT idx_author (author), FULLTEXT idx_subject (subject), FULLTEXT idx_notes (notes), FULLTEXT idx_abstract (abstract), FULLTEXT idx_mime (mime), FULLTEXT idx_language (language), FULLTEXT idx_creationdate (creationdate), FULLTEXT idx_lastrevisiondate (lastrevisiondate), FULLTEXT idx_owner (owner), FULLTEXT idx_copyright (copyright)) TYPE=MYISAM;
+mysql> INSERT INTO metadata VALUES ('1','2','3','4','5','6','7','8','9','10','11');
+mysql> SELECT * FROM metadata WHERE title REGEXP "1";
+
+

+

+Current time values for things. +

+fenchurch.lite.msu.edu
+Mem:    46812K av,   45632K used,    1180K free,   14756K shrd,    4292K buff
+Swap: 1148608K av,   11260K used, 1137348K free                   13244K cached
+
+Red Hat Linux release 6.2 (Zoot)
+Kernel 2.2.16-3 on an i586
+
+
Q: How big are data records in test database? A: on average, 1000 bytes each, medline records from PubMed. +
Q: How big is the biggest field? A: on average, 838 bytes each +
Q: How much time to insert 5284 medline records into database? +A: 600 seconds +
Q: What about when using "speed-technique" on page 130? A: 689 seconds (weird, eh?) +
Q: What about REGEXP searching? A: about 1-2 seconds for small fields; +10 to 20 seconds for REGEXP search on "abstract" field +
Q: What about FULLTEXT indexing? A: about 6 seconds for abstract field. + +

+

+An important quote from the manual: +

+In MySQL Version 3.23.23 or later, you can also create special FULLTEXT indexes. They are used for full-text search. Only the MyISAM table type supports FULLTEXT indexes. They can be created only from +VARCHAR and TEXT columns. Indexing always happens over the entire column and partial indexing is not supported. See section 25.2 MySQL Full-text Search for details. +
+

+

+I plan on using a MyISAM table type with 11 metadata fields of column +type=TEXT. +

+

It might be worthwhile to look at /usr/local/mysql/manual.html. It is quite in depth.

@@ -224,6 +290,51 @@ that is subsequently compiled). wind up in /usr/local/mysql-3.23.33-pc-linux-gnu-i686 except for a link from /usr/local/mysql to /usr/local/mysql-3.23.33-pc-linux-gnu-i686 and some files involved in system process handling (/etc/rc.d/*/*mysql). +
+(As user=root)
+cd /usr/local/;
+tar xzvf mysql-3.23.33-pc-linux-gnu-i686.tar.gz
+ln -s /usr/local/mysql-3.23.33-pc-linux-gnu-i686 mysql
+cd /usr/local/mysql
+chown -R www /usr/local/mysql/.
+chgrp -R users /usr/local/mysql/.
+chmod -R g-w,g-r,g-x /usr/local/mysql/.
+(probably also want chmod -R a-w,a-r,a-x /usr/local/mysql/.)
+
+Alter safe_mysqld
+and support-files/mysql.server to use 'localhosts' instead
+of `bin/hostname`.  Also, to use user 'www' instead of 'mysql'.
+
+(These changes could be done with /etc/my.cnf, but
+I think this approach makes sure the database NEVER
+gets screwed up due to somebody forgetting to install /etc/my.cnf).
+
+Change this line in mysql.server from
+  pid_file=$datadir/`@HOSTNAME@`.pid
+to
+  pid_file=$datadir/localhost.pid
+
+Change this line in safe_mysqld from
+user=root
+to
+user=www
+
+Change this line in safe_mysqld from
+  pid_file=$DATADIR/`/bin/hostname`.pid
+to
+  pid_file=$DATADIR/localhost.pid
+
+Change this line in safe_mysqld from
+test -z "$err_log"  && err_log=$DATADIR/`/bin/hostname`.err
+to
+test -z "$err_log"  && err_log=$DATADIR/localhost.err
+
+cp -p support-files/mysql.server /etc/rc.d/init.d/mysql
+chmod 755 /etc/rc.d/init.d/mysql
+/sbin/chkconfig --add mysql
+/etc/rc.d/init.d/mysql start
+
+

This is how I installed the Msql-Mysql-modules perl modules.

@@ -243,6 +354,13 @@ Enter the appropriate number:  [3] 1
 Do you want to install the MysqlPerl emulation? You might keep your old
 Mysql module (to be distinguished from DBD::mysql!) if you are concerned
 about compatibility to existing applications! [y] n
+Where is your MySQL installed? Please tell me the directory that
+contains the subdir 'include'. [/usr/local/mysql] 
+Which database should I use for testing the MySQL drivers? [test] 
+On which host is database test running (hostname, ip address
+or host:port) [localhost] 
+User name for connecting to database test? [undef]
+Password for connecting to database test? [undef]
 [root@fenchurch Msql-Mysql-modules-1.2215]# make
 [root@fenchurch Msql-Mysql-modules-1.2215]# make test
 make[1]: Entering directory `/home/user/Msql-Mysql-modules-1.2215/mysql'
@@ -287,7 +405,7 @@ These files are installed.
 

This is how I installed the DBI perl modules. -

+
$dbh
 [root@fenchurch DBI-1.14]# perl Makefile.PL
 *** Note:
     The optional PlRPC-modules (RPC::PlServer etc) are not installed.
@@ -326,7 +444,7 @@ All tests successful, 1 test skipped.
 Files=7,  Tests=179,  7 wallclock secs ( 6.46 cusr +  0.49 csys =  6.95 CPU)
 PERL_DL_NONLAZY=1 /usr/bin/perl -Iblib/arch -Iblib/lib -I/usr/lib/perl5/5.00503/i386-linux -I/usr/lib/perl5/5.00503 test.pl
 test.pl 
-DBI test application $Revision: 1.9 $
+DBI test application $Revision: 1.15 $
 Using /home/user/DBI-1.14/blib
 Switch: DBI 1.14 by Tim Bunce, 1.14
 Available Drivers: ADO, ExampleP, Multiplex, Proxy, mysql
@@ -517,6 +635,21 @@ An up-to-date lond and lonsql.
 

Testing

+To test the backend MySQL database, a number of commands should be +run after installation. +

    +
  • cd /usr/local/mysql/sql-bench; ./run-all-tests --small-test
  • +
    without the --small-test flag, this test can take more than 10 hours! +
  • cd /usr/local/mysql; bin/mysqladmin version
  • +
  • cd /usr/local/mysql; bin/mysqladmin variables
  • +
  • cd /usr/local/mysql; bin/mysqlshow
  • +
  • cd /usr/local/mysql; bin/mysqlshow mysql
  • +
  • cd /usr/local/mysql; bin/mysql -e "select host,db,user from db" mysql
  • +
  • cd /usr/local/mysql/mysql-test; ./test-run-all
  • + +
+

+These are sections of perl code which helps test the LON-CAPA network.

 ** TEST the database connection with my current tester.pl code
 which mimics what command will eventually be sent through lonc.