Աշխատանք տվյալների բազայի հետ Drupal 7-ում - Դաս 2 - Տվյալների բազայի կարգավորում
ԲԴ-ի հետ կապի սահմանման հիմնական միջոցը $databases զանգվածն է, որը գտնվում է settings.php ֆայլում։ Ինչպես ցույց է տալիս անունը, $databases թույլ է տալիս սահմանել բազմաթիվ կապեր տվյալների բազաների հետ։ Այն նաև աջակցում է մի քանի նպատակների սահմանումը։ Կապը չի բացվում (կապի օբյեկտ չի ստեղծվում), մինչև առաջին անգամ որևէ կոդի հատված հարցում չկատարի տվյալների բազային։
Կապի բանալի
Կապի բանալին եզակի նույնացուցիչ է, որը տրվում է տվյալների բազայի հետ կապին։ Կապի բանալին պետք է լինի եզակի կայքի համար և պետք է լինի լռելյայն՝ հիմնական տվյալների բազայի համար։ Շատ կայքերում դա կլինի միակ կապը։
Կապի նպատակ
Յուրաքանչյուր կապ պետք է ունենա մեկ կամ մի քանի նպատակ։ Նպատակը տվյալների բազայի կամավոր մշակման միջոց է՝ այն օգտագործելու դեպքում, երբ հասանելի է։ Եթե պահանջվող նպատակը սահմանված չէ, համակարգը «լռությամբ» կդիմի լռելյայն նպատակին, որը միշտ պետք է առկա լինի։
Նպատակներն առավելապես օգտագործվում են master/slave կրկնօրինակման համար։ Լռելյայն նպատակն է հիմնական SQL սերվերը։ Մեկ կամ մի քանի "slave" նպատակներ նույնպես կարող են սահմանվել։ Այդ դեպքում որոշ հարցումներ կփորձեն օգտագործել լրացուցիչ SQL սերվեր, եթե հնարավոր է։ Եթե հաջողվի՝ կօգտագործվի slave սերվերը, եթե ոչ՝ լռելյայնը՝ հիմնականը։
$databases-ի շարահյուսությունը
$databases զանգվածը երեք մակարդակով ներդրված զանգված է։ Առաջին մակարդակն է կապի բանալին։ Երկրորդը՝ կապի նպատակը։ Յուրաքանչյուր նպատակի արժեքը իր կապի ինֆորմացիան է՝ բանալի/նպատակ զույգի համար։ Ահա մի օրինակ՝
<?php $databases['default']['default'] = array( 'driver' => 'mysql', 'database' => 'drupaldb', 'username' => 'username', 'password' => 'secret', 'host' => 'localhost', ); ?>
$databases զանգվածը սահմանում է մեկ կապ "default" բանալով և "default" նպատակով։ Այն օգտագործում է MySQL տվյալների բազա ("driver" - mysql) localhost սերվերում՝ drupaldb անունով բազայի, "username" անունով օգտատիրոջ և "secret" գաղտնաբառով։ Սա ամենատարածված կոնֆիգուրացիան է։
Master/slave կոնֆիգուրացիայի համար՝
<?php $databases['default']['default'] = array( 'driver' => 'mysql', 'database' => 'drupaldb1', 'username' => 'username', 'password' => 'secret', 'host' => 'dbserver1', ); $databases['default']['slave'][] = array( 'driver' => 'mysql', 'database' => 'drupaldb2', 'username' => 'username', 'password' => 'secret', 'host' => 'dbserver2', ); $databases['default']['slave'][] = array( 'driver' => 'mysql', 'database' => 'drupaldb3', 'username' => 'username', 'password' => 'secret', 'host' => 'dbserver3', ); ?>
Այս կոնֆիգուրացիան սահմանում է մեկ "default" սերվեր և երկու "slave" սերվեր։ Նկատեք, որ "slave" բանալին զանգված է։ Եթե նպատակը սահմանվում է որպես կապի ինֆորմացիայի զանգված, ապա յուրաքանչյուր էջի հարցման ժամանակ պատահականորեն կընտրվի մի սերվեր։ Այսինքն՝ նույն էջում բոլոր հարցումները կարող են գնալ թե՛ dbserver2, թե՛ dbserver3։
<?php $databases['default']['default'] = array( 'driver' => 'mysql', 'database' => 'drupaldb1', 'username' => 'username', 'password' => 'secret', 'host' => 'dbserver1', ); $databases['extra']['default'] = array( 'driver' => 'sqlite', 'database' => 'files/extradb.sqlite', ); ?>
Այս կոնֆիգուրացիան սահմանում է մեկ հիմնական Drupal տվյալների բազա և մեկ լրացուցիչ՝ "extra" բանալով, որը օգտագործում է SQLite։ Նկատեք, որ SQLite-ի համար կապի ինֆորմացիան տարբերվում է MySQL-ից։ Յուրաքանչյուր driver կարող է ունենալ իր ուրույն կոնֆիգուրացիան։ Կարևոր է հիշել, որ կապերը չեն բացվում, մինչև չկատարվի հարցում այդ ԲԴ-ին։
Drupal 7 պահանջում է PDO
Այժմ Drupal-ը պահանջում է PHP PDO գրադարանը։ Դրա համար ձեզ հարկավոր է հոսթինգ՝ PDO աջակցությամբ, կամ ձեր սերվերում համապատասխան գրադարանի տեղադրում՝ Drupal-ը գործարկելու համար։