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

מתוך אגרון - וויקיפדיה
קפיצה אל: ניווט, חיפוש
שורה 1: שורה 1:
 
האגרונט החדש מסוגל לעבוד מול בסיס הנתונים של הלקוח וכך לאפשר לקוראים להאריך השאלות ולבצע הזמנות כותרים ישירות מול הספריה.
 
האגרונט החדש מסוגל לעבוד מול בסיס הנתונים של הלקוח וכך לאפשר לקוראים להאריך השאלות ולבצע הזמנות כותרים ישירות מול הספריה.
  
 +
==התקנת mysql ==
 
כדי לעבוד בצורה זאת, כך שה-db של הלקוח יעבוד עם שרת האגרונט יש לבצע מספר פעולות ליצירת השיתוף. נצטרך ליצור אצל הלקוח mysql שניתן להורידו מ[http://dev.mysql.com אתר mysql]. צריך להתקין את ה-mysql אצל הלקוח במחשב שעובד 24/7.
 
כדי לעבוד בצורה זאת, כך שה-db של הלקוח יעבוד עם שרת האגרונט יש לבצע מספר פעולות ליצירת השיתוף. נצטרך ליצור אצל הלקוח mysql שניתן להורידו מ[http://dev.mysql.com אתר mysql]. צריך להתקין את ה-mysql אצל הלקוח במחשב שעובד 24/7.
  
שורה 20: שורה 21:
 
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>
 +
 +
== יצירת טבלאות ==
 +
 
לאחר מכן נצטרך ליצור את שלושת הטבלאות שדרושים לשיטה זו:
 
לאחר מכן נצטרך ליצור את שלושת הטבלאות שדרושים לשיטה זו:
 
<pre>
 
<pre>
שורה 68: שורה 72:
 
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
</pre>
 
</pre>
{{תיבת שים לב|ניתן להריץ את הפקודות גם מהלקוח וגם משרת האגרונט. האחרון בגלל ההרשאה שנתנו בהתחלה}}
+
{{תיבת שים לב|ניתן להריץ את הפקודות גם מהלקוח וגם משרת האגרונט. האחרון בגלל ההרשאה שנתנו בהתחלה.}}
 +
 
 +
== העברת המידע מהאקסס ל-mysql ==
 
עכשיו תוכל להעביר את ה-data אל הטבלאות מה-lib_data.mdb של הלקוח לטבלאות הנ"ל (מומלץ לעשות זאת אצל הלקוח). ניתן לעשות זאת באמצעות [http://www.bullzip.com/products/a2m/info.php ms acceess to mysql]. הכלי הינו gui וקל לתפעול.
 
עכשיו תוכל להעביר את ה-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 "חי" באגרונט:
+
 
 +
נצטרך לשנות את 3 הטבלאות שיצרנו לשם חדש עם prefix כמו של ה-subdomain של האתר (לדוגמא, ה-prefix של אתר יקנעם הינו yoqneam). הפקודה הבאה תעשה לנו את העבודה:
 +
<pre>
 +
RENAME TABLE Loans TO foo_Loans;
 +
RENAME TABLE LoansHistory TO foo_LoansHistory;
 +
RENAME TABLE Reservations TO foo_Reservations;
 +
</pre>
 +
foo הינו ה-subdomain של האתר.
 +
== עדכון התוכנה אצל הלקוחות ==
 +
יש ליצור קישור מה-lib_data ל-mysql אצל הלקוח לטבלאות החדשות, כאשר השמות של הטבלאות באקסס הן ללא ה-prefix (אבל מצביעות לטבלאות עם prefix). בנוסף, נעדכן את יחסי הגומלין של הטבלאות וכמו כן ניצור קישור בין lib_appml.mdb ל-mysql (ללא צורך בעדכון הקשרי גומלין ב-lib_appml).
 +
 
 +
== יצירת טריגרים ==
 +
ניצור טריגרים שיעזרו לנו ליצור database "חי" באגרונט. בשביל הטריגרים נצטרך לייבא את הטבלה copies מה-lib_data (רק לייבא) בעזרת ה-tool שהוזכר קודם (MS Access to MySQL). יצירת הטריגרים מתבצעת כדלקמן:
 
<pre>
 
<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 foo_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 foo_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 semicolon(;)):
 
 
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 foo_Reservations FOR EACH ROW IF (NEW.reserve_date IS NULL) THEN SET NEW.reserve_date = NOW; END IF;|  
 
DELIMITER ;
 
DELIMITER ;
 
</pre>
 
</pre>
 +
{{תיבת שים לב|לטריגר האחרון נצטרך לשנות את ה-delimeter (כפי שניתן לראות בפקודות).}}
 +
 +
== יצירת סקריפט יבוא לעותקים ==
  
 +
בשביל שיופיעו העותקים החדשים עם סטטוס מעודכן, נריץ סקריפט אוטומטי שייבא באופן אוטומטי פעם ביום את הטבלה copies מה-lib_data אל ה-mysql. מבצעים זאת בעזרת MS Access to MySQL.
  
 
== ראה גם ==
 
== ראה גם ==
 
* [[SQL]]
 
* [[SQL]]
 
[[קטגוריה:אגרונט]]
 
[[קטגוריה:אגרונט]]

גרסה מ־13:14, 18 במרץ 2010

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

התקנת mysql

כדי לעבוד בצורה זאת, כך שה-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@62.90.134.171 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,
  `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 DEFAULT CHARSET=utf8;
שימו לב: ניתן להריץ את הפקודות גם מהלקוח וגם משרת האגרונט. האחרון בגלל ההרשאה שנתנו בהתחלה.

העברת המידע מהאקסס ל-mysql

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

שינוי שמות הטבלאות

נצטרך לשנות את 3 הטבלאות שיצרנו לשם חדש עם prefix כמו של ה-subdomain של האתר (לדוגמא, ה-prefix של אתר יקנעם הינו yoqneam). הפקודה הבאה תעשה לנו את העבודה:

RENAME TABLE Loans TO foo_Loans;
RENAME TABLE LoansHistory TO foo_LoansHistory;
RENAME TABLE Reservations TO foo_Reservations;

foo הינו ה-subdomain של האתר.

עדכון התוכנה אצל הלקוחות

יש ליצור קישור מה-lib_data ל-mysql אצל הלקוח לטבלאות החדשות, כאשר השמות של הטבלאות באקסס הן ללא ה-prefix (אבל מצביעות לטבלאות עם prefix). בנוסף, נעדכן את יחסי הגומלין של הטבלאות וכמו כן ניצור קישור בין lib_appml.mdb ל-mysql (ללא צורך בעדכון הקשרי גומלין ב-lib_appml).

יצירת טריגרים

ניצור טריגרים שיעזרו לנו ליצור database "חי" באגרונט. בשביל הטריגרים נצטרך לייבא את הטבלה copies מה-lib_data (רק לייבא) בעזרת ה-tool שהוזכר קודם (MS Access to MySQL). יצירת הטריגרים מתבצעת כדלקמן:

CREATE TRIGGER update_loan_copy_status_on_insert AFTER INSERT ON foo_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 foo_Loans FOR EACH ROW UPDATE copies SET copies.status = 1 WHERE copies.copy_no = OLD.copy_no;
DELIMITER |
CREATE TRIGGER update_reservation_time_on_insert BEFORE INSERT ON foo_Reservations FOR EACH ROW IF (NEW.reserve_date IS NULL) THEN SET NEW.reserve_date = NOW; END IF;| 
DELIMITER ;
שימו לב: לטריגר האחרון נצטרך לשנות את ה-delimeter (כפי שניתן לראות בפקודות).

יצירת סקריפט יבוא לעותקים

בשביל שיופיעו העותקים החדשים עם סטטוס מעודכן, נריץ סקריפט אוטומטי שייבא באופן אוטומטי פעם ביום את הטבלה copies מה-lib_data אל ה-mysql. מבצעים זאת בעזרת MS Access to MySQL.

ראה גם