הבדלים בין גרסאות בדף "אגרונט לייב באינטרנט"
שורה 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 | ||
− | |||
− | |||
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 | ||
− | |||
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 וקל לתפעול. | ||
− | + | יש ליצור קישור לאחר העברת ה-data מה-lib_data ל-mysql אצל הלקוח ולעדכן את יחסי הגומלין של הטבלאות וכמו כן ליצור קישור בין lib_appml.mdb ל-mysql. | |
− | + | לבסוף ניצור טריגרים שיעזרו לנו ליצור 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';
לאחר מכן, נבדוק אם הגדרנו זאת כהלכה. נריץ את הפקודה הבאה משרת האגרונט:
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 ;