הבדלים בין גרסאות בדף "אגרונט לייב באינטרנט"

מתוך אגרון - וויקיפדיה
קפיצה אל: ניווט, חיפוש
שורה 1: שורה 1:
 +
האגרונט החדש מסוגל לעבוד מול בסיס הנתונים של הלקוח וכך לאפשר לקוראים להאריך השאלות ולבצע הזמנות כותרים ישירות מול הספריה.
 +
 +
כדי לעבוד בצורה זאת, כך שה-db של הלקוח יעבוד עם שרת האגרונט יש לבצע מספר פעולות ליצירת השיתוף. נצטרך ליצור אצל הלקוח mysql שניתן להורידו מ[http://dev.mysql.com אתר mysql]. צריך להתקין את ה-mysql אצל הלקוח במחשב שעובד 24/7.
 +
 +
ניכנס ל-mysql שהתקנו באמצעות שורת הפקודה:
 +
<pre>
 +
mysql -u root -p
 +
</pre>
 +
ניצור database שישמש גם את הלקוח וגם את האגרונט:
 +
<pre>
 +
CREATE DATABASE lib_data_user;
 +
</pre>
 +
לאחר מכן, כדי להתחבר משרת האגרונט ללקוח צריך לאפשר זאת ב-mysql של הלקוח:
 +
<pre>
 +
GRANT ALL ON lib_data.* TO lib_data_user@library.org.il IDENTIFIED BY 'PASSWORD';
 +
</pre>
 +
{{תיבת שים לב|יש לאפשר חיבור מהאגרונט (www.library.org.il) לשרת ה-mysql אצל הלקוח. לכן, יש לפתוח את פורט 3306 שמשמש את ה-mysql}}
 +
לאחר מכן, נבדוק אם הגדרנו זאת כהלכה. נריץ את הפקודה הבאה משרת האגרונט:
 
<pre>
 
<pre>
 
mysql -h remote_host -u lib_data_user -Ap lib_data -p
 
mysql -h remote_host -u lib_data_user -Ap lib_data -p
 
+
</pre>
 +
לאחר מכן נצטרך ליצור את שלושת הטבלאות שדרושים לשיטה זו:
 +
<pre>
 
CREATE TABLE `loans` (
 
CREATE TABLE `loans` (
 
   `ID` int(11) NOT NULL AUTO_INCREMENT,
 
   `ID` int(11) NOT NULL AUTO_INCREMENT,
שורה 16: שורה 36:
 
   KEY `date_borrowed` (`date_borrowed`)
 
   KEY `date_borrowed` (`date_borrowed`)
 
) ENGINE=MyISAM DEFAULT CHARSET=utf8
 
) ENGINE=MyISAM DEFAULT CHARSET=utf8
 
ALTER TABLE Loans ADD PRIMARY KEY (ID), ADD UNIQUE KEY (card_no, copy_no, date_borrowed), ADD INDEX (card_no), ADD INDEX (copy_no), ADD INDEX(date_borrowed),  MODIFY ID int NOT NULL AUTO_INCREMENT, MODIFY ismanuy tinyint(4) DEFAULT 0;
 
  
 
CREATE TABLE `loanshistory` (
 
CREATE TABLE `loanshistory` (
שורה 33: שורה 51:
 
   KEY `date_borrowed` (`date_borrowed`)
 
   KEY `date_borrowed` (`date_borrowed`)
 
) ENGINE=MyISAM DEFAULT CHARSET=utf8
 
) ENGINE=MyISAM DEFAULT CHARSET=utf8
ALTER TABLE LoansHistory ADD PRIMARY KEY (ID), ADD UNIQUE KEY (card_no, copy_no, date_borrowed), ADD INDEX (card_no), ADD INDEX (copy_no), ADD INDEX(date_borrowed);
 
  
 
CREATE TABLE `reservations` (
 
CREATE TABLE `reservations` (
שורה 50: שורה 67:
 
   KEY `reserve_date` (`reserve_date`)
 
   KEY `reserve_date` (`reserve_date`)
 
) ENGINE=MyISAM AUTO_INCREMENT=10644 DEFAULT CHARSET=utf8
 
) ENGINE=MyISAM AUTO_INCREMENT=10644 DEFAULT CHARSET=utf8
 +
</pre>
 +
במידה והטבלאות קיימות אצל הלקוח (mysql) כבר, נוודא רק כי המאפיינים של האינדקסים נוצרו (אל תריץ פקודות אלו אם הרצת את הפקודות הקודמות):
 +
<pre>
 +
ALTER TABLE Loans ADD PRIMARY KEY (ID), ADD UNIQUE KEY (card_no, copy_no, date_borrowed), ADD INDEX (card_no), ADD INDEX (copy_no), ADD INDEX(date_borrowed),  MODIFY ID int NOT NULL AUTO_INCREMENT, MODIFY ismanuy tinyint(4) DEFAULT 0;
 +
ALTER TABLE LoansHistory ADD PRIMARY KEY (ID), ADD UNIQUE KEY (card_no, copy_no, date_borrowed), ADD INDEX (card_no), ADD INDEX (copy_no), ADD INDEX(date_borrowed);
 +
ALTER TABLE Reservations MODIFY COLUMN res_no INT NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (res_no), ADD UNIQUE KEY (reader_no, title_no), ADD INDEX (title_no), ADD INDEX (reader_no), ADD INDEX(reserve_date);
 +
</pre>
 +
עכשיו תוכל להעביר את ה-data אל הטבלאות מה-lib_data.mdb לטבלאות הנ"ל. ניתן לעשות זאת באמצעות [http://www.bullzip.com/products/a2m/info.php ms acceess to mysql]. הכלי הינו gui וקל לתפעול.
  
ALTER TABLE Reservations MODIFY COLUMN res_no INT NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (res_no), ADD UNIQUE KEY (reader_no, title_no), ADD INDEX (title_no), ADD INDEX (reader_no), ADD INDEX(reserve_date);
+
יש ליצור קישור לאחר העברת ה-data מה-lib_data ל-mysql אצל הלקוח ולעדכן את יחסי הגומלין של הטבלאות וכמו כן ליצור קישור בין lib_appml.mdb ל-mysql.
SOME TRIGGERS:
+
לבסוף ניצור טריגרים שיעזרו לנו ליצור database "חי" באגרונט:
 +
<pre>
 
CREATE TRIGGER update_loan_copy_status_on_insert AFTER INSERT ON loans FOR EACH ROW UPDATE copies SET copies.status = 2 WHERE copies.copy_no = NEW.copy_no;
 
CREATE TRIGGER update_loan_copy_status_on_insert AFTER INSERT ON loans FOR EACH ROW UPDATE copies SET copies.status = 2 WHERE copies.copy_no = NEW.copy_no;
 
CREATE TRIGGER update_loan_copy_status_on_delete AFTER DELETE ON loans FOR EACH ROW UPDATE copies SET copies.status = 1 WHERE copies.copy_no = OLD.copy_no;
 
CREATE TRIGGER update_loan_copy_status_on_delete AFTER DELETE ON loans FOR EACH ROW UPDATE copies SET copies.status = 1 WHERE copies.copy_no = OLD.copy_no;
for the last trigger u'll need to change the delimiter (the sign that tells mysql to run the command; the default is ;):
+
#for the last trigger u'll need to change the delimiter (the sign that tells mysql to run the command; the default is ;):
 
DELIMITER |
 
DELIMITER |
 
CREATE TRIGGER update_reservation_time_on_insert BEFORE INSERT ON reservations FOR EACH ROW IF (NEW.reserve_date IS NULL) THEN SET NEW.reserve_date = NOW; END IF;|  
 
CREATE TRIGGER update_reservation_time_on_insert BEFORE INSERT ON reservations FOR EACH ROW IF (NEW.reserve_date IS NULL) THEN SET NEW.reserve_date = NOW; END IF;|  
 
DELIMITER ;
 
DELIMITER ;
 
</pre>
 
</pre>

גרסה מ־23:32, 24 בפברואר 2010

האגרונט החדש מסוגל לעבוד מול בסיס הנתונים של הלקוח וכך לאפשר לקוראים להאריך השאלות ולבצע הזמנות כותרים ישירות מול הספריה.

כדי לעבוד בצורה זאת, כך שה-db של הלקוח יעבוד עם שרת האגרונט יש לבצע מספר פעולות ליצירת השיתוף. נצטרך ליצור אצל הלקוח mysql שניתן להורידו מאתר mysql. צריך להתקין את ה-mysql אצל הלקוח במחשב שעובד 24/7.

ניכנס ל-mysql שהתקנו באמצעות שורת הפקודה:

mysql -u root -p

ניצור database שישמש גם את הלקוח וגם את האגרונט:

CREATE DATABASE lib_data_user;

לאחר מכן, כדי להתחבר משרת האגרונט ללקוח צריך לאפשר זאת ב-mysql של הלקוח:

GRANT ALL ON lib_data.* TO lib_data_user@library.org.il IDENTIFIED BY 'PASSWORD';
שימו לב: יש לאפשר חיבור מהאגרונט (www.library.org.il) לשרת ה-mysql אצל הלקוח. לכן, יש לפתוח את פורט 3306 שמשמש את ה-mysql

לאחר מכן, נבדוק אם הגדרנו זאת כהלכה. נריץ את הפקודה הבאה משרת האגרונט:

mysql -h remote_host -u lib_data_user -Ap lib_data -p

לאחר מכן נצטרך ליצור את שלושת הטבלאות שדרושים לשיטה זו:

CREATE TABLE `loans` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `card_no` int(11) DEFAULT NULL,
  `copy_no` int(11) DEFAULT NULL,
  `date_borrowed` datetime NOT NULL,
  `date_returned` datetime DEFAULT NULL,
  `date_promise` datetime DEFAULT NULL,
  `ismanuy` tinyint(4) DEFAULT '0',
  PRIMARY KEY (`ID`),
  UNIQUE KEY `card_no_2` (`card_no`,`copy_no`,`date_borrowed`),
  KEY `card_no` (`card_no`),
  KEY `copy_no` (`copy_no`),
  KEY `date_borrowed` (`date_borrowed`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

CREATE TABLE `loanshistory` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `card_no` int(11) DEFAULT NULL,
  `copy_no` int(11) DEFAULT NULL,
  `date_borrowed` datetime NOT NULL,
  `date_returned` datetime DEFAULT NULL,
  `date_promise` datetime DEFAULT NULL,
  `ismanuy` int(11) DEFAULT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `card_no_2` (`card_no`,`copy_no`,`date_borrowed`),
  KEY `card_no` (`card_no`),
  KEY `copy_no` (`copy_no`),
  KEY `date_borrowed` (`date_borrowed`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

CREATE TABLE `reservations` (
  `res_no` int(11) NOT NULL AUTO_INCREMENT,
  `reader_no` int(11) NOT NULL,
  `title_no` int(11) NOT NULL,
  `By_copy` int(11) DEFAULT NULL,
  `reserve_date` datetime DEFAULT NULL,
  `DeadLineDate` datetime DEFAULT NULL,
  `ExpireDate` datetime DEFAULT NULL,
  `SendEmail` tinyint(4) DEFAULT NULL,
  PRIMARY KEY (`res_no`),
  UNIQUE KEY `reader_no_2` (`reader_no`,`title_no`),
  KEY `title_no` (`title_no`),
  KEY `reader_no` (`reader_no`),
  KEY `reserve_date` (`reserve_date`)
) ENGINE=MyISAM AUTO_INCREMENT=10644 DEFAULT CHARSET=utf8

במידה והטבלאות קיימות אצל הלקוח (mysql) כבר, נוודא רק כי המאפיינים של האינדקסים נוצרו (אל תריץ פקודות אלו אם הרצת את הפקודות הקודמות):

ALTER TABLE Loans ADD PRIMARY KEY (ID), ADD UNIQUE KEY (card_no, copy_no, date_borrowed), ADD INDEX (card_no), ADD INDEX (copy_no), ADD INDEX(date_borrowed),  MODIFY ID int NOT NULL AUTO_INCREMENT, MODIFY ismanuy tinyint(4) DEFAULT 0;
ALTER TABLE LoansHistory ADD PRIMARY KEY (ID), ADD UNIQUE KEY (card_no, copy_no, date_borrowed), ADD INDEX (card_no), ADD INDEX (copy_no), ADD INDEX(date_borrowed);
ALTER TABLE Reservations MODIFY COLUMN res_no INT NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (res_no), ADD UNIQUE KEY (reader_no, title_no), ADD INDEX (title_no), ADD INDEX (reader_no), ADD INDEX(reserve_date);

עכשיו תוכל להעביר את ה-data אל הטבלאות מה-lib_data.mdb לטבלאות הנ"ל. ניתן לעשות זאת באמצעות ms acceess to mysql. הכלי הינו gui וקל לתפעול.

יש ליצור קישור לאחר העברת ה-data מה-lib_data ל-mysql אצל הלקוח ולעדכן את יחסי הגומלין של הטבלאות וכמו כן ליצור קישור בין lib_appml.mdb ל-mysql. לבסוף ניצור טריגרים שיעזרו לנו ליצור database "חי" באגרונט:

CREATE TRIGGER update_loan_copy_status_on_insert AFTER INSERT ON loans FOR EACH ROW UPDATE copies SET copies.status = 2 WHERE copies.copy_no = NEW.copy_no;
CREATE TRIGGER update_loan_copy_status_on_delete AFTER DELETE ON loans FOR EACH ROW UPDATE copies SET copies.status = 1 WHERE copies.copy_no = OLD.copy_no;
#for the last trigger u'll need to change the delimiter (the sign that tells mysql to run the command; the default is ;):
DELIMITER |
CREATE TRIGGER update_reservation_time_on_insert BEFORE INSERT ON reservations FOR EACH ROW IF (NEW.reserve_date IS NULL) THEN SET NEW.reserve_date = NOW; END IF;| 
DELIMITER ;