Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 85

Автор НСйл ΠœΡΡ‚ΡŒΡŽ

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ Π½Π°ΠΏΠ΅Ρ€Π΅Π΄, сколько Π±ΡƒΠ΄Π΅Ρ‚ элСмСнтов, Π²Ρ‹ создаСтС Ρ‚Π°ΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ элСмСнт послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°. Если Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, элСмСнт Π±ΡƒΠ΄Π΅Ρ‚ пустым. Для просмотра всСй Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ с Π²Ρ‹Π·ΠΎΠ²Π° этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° Ρ†Π΅Π»ΠΎΠ΅ число *first_call_ptr, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°Π²Π½ΡΡ‚ΡŒΡΡ 1 ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Благодаря этому функция Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ‡Π°Ρ‚ΡŒ поиск с Π½Π°Ρ‡Π°Π»Π° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²Π°Ρ… пСрСмСнная Ρ€Π°Π²Π½Π° 0 ΠΈ функция возобновляСт поиск слСдом Π·Π° послСдним Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΌ элСмСнтом.

Когда Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ поиск, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡƒΠΊΠ°Π·Π°Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ элСмСнт ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ снова Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ *first_call_ptr, Ρ€Π°Π²Π½Ρ‹ΠΌ true, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Π½ΠΎΠ²ΠΎΠ³ΠΎ поиска.

ΠœΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ функция Ρ…Ρ€Π°Π½ΠΈΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ состоянии. Π­Ρ‚ΠΎ скрываСт ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ продолТСния поиска ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ сСкрСты Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ поиска.

Если искомый тСкст ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° символ null, всС элСмСнты ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠΌΠΈ критСриям поиска.

cdc_entry search_cdc_entry(const char *cd_catalog_ptr,

 int *first_call_ptr) {

 static int local_first_call = 1;

 cdc_entry entry_to_return;

 datum local_data_datum;

 static datum local_key_datum; /* ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅,

                                  Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ static */

 memset(&entry_to_return, '\0', sizeof(entry_to_return));

14. ΠšΠ°ΠΊ всСгда, Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ с ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… смысл ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ:

 if (!cdc_dbm_ptr || !cdt_dbm_ptr) return (entry_to_return);

 if (!cd_catalog_ptr || !first_call_ptr) return (entry_to_return);

 if (strlen(cd_catalog_ptr) >= CAT_CAT_LEN) return (entry_to_return);

 /* Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ пропуска Π²Ρ‹Π·ΠΎΠ²Π° с *first_call_ptr, Ρ€Π°Π²Π½Ρ‹ΠΌ true */

 if (local_first_call) {

  local_first_call = 0;

  *first_call_ptr = 1;

 }

15. Π•сли эта функция Π±Ρ‹Π»Π° Π²Ρ‹Π·Π²Π°Π½Π° с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ *first_call_ptr, Ρ€Π°Π²Π½Ρ‹ΠΌ true, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ (ΠΈΠ»ΠΈ Π·Π°Π½ΠΎΠ²ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ) поиск ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Если *first_call_ptr Π½Π΅ Ρ€Π°Π²Π΅Π½ true, просто ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…:

 if (*first_call_ptr) {

  *first_call_ptr = 0;

  local_key_datum = dbm_firstkey(cdc_dbm_ptr);

 } else {

  local_key_datum = dbm_nextkey(cdc_dbm_ptr);

 }

 do {

  if (local_key_datum.dptr != NULL) {

   /* Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π±Ρ‹Π» Π½Π°ΠΉΠ΄Π΅Π½ */

   local_data_datum = dbm_fetch(cdc_dhm_ptr, local_key_datum);

   if (local_data_datum.dptr) {

    memcpy(&entry_to_return, (char*)local_data_datum.dptr, local_data_datum, dsize);

16. Π€ΡƒΠ½ΠΊΡ†ΠΈΡ поиска Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ строка поиска Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°.

    /* ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ строка Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт */

    if (!strstr(entry_to_return.catalog, cd_catalog_ptr)) {

     memset(&entry_to_return, '\0', sizeof(entry_to_return));

     local_key_datum = dbm_nextkey(cdc_dbm_ptr);

    }

   }

  }

 } while (local_key_datum.dptr && local_data_datum.dptr &&

    (entry_to_return.catalog[0] == '\0'));

 return (entry_to_return);

} /* search_cdc_entry */

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ всС вмСстС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ make-Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Π° сборки. НС слишком ΡƒΠ³Π»ΡƒΠ±Π»ΡΠΉΡ‚Π΅ΡΡŒ Π² Π½Π΅Π³ΠΎ сСйчас, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ обсудим Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅. Π’ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ просто Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ Π΅Π³ΠΎ ΠΈ сохранитС ΠΊΠ°ΠΊ Makefile.

all: application


INCLUDE=/usr/include/gdbm LIBS=gdbm

# Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… дистрибутивах Π²Π°ΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, придСтся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ

# строку, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ совмСстимости, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π΄Π°Π»Π΅Π΅

# LIBS= -lgdbm_compat -lgdbm

CFIAGS=


app_ui.о: app_ui.с cd_data.h

 gcc $(CFLAGS) -c app_ui.c


access.о: access.с cd_data.h

 gcc $(CFLAGS) -I$(INCLUDE) -c access.с


application: app_ui.o access.ΠΎ

 gcc $(CFLAGS) -o application app_ui.o access.ΠΎ -l$(LIBS)


clean:

 rm -f application *.o


nodbmfiles:

 rm -f *.dir *.pag

Для компиляции вашСго Π½ΠΎΠ²ΠΎΠ³ΠΎ прилоТСния управлСния ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚- дисков Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС:

$ make

Если всС ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, выполняСмый Ρ„Π°ΠΉΠ» application Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.

РСзюмС

Π’ этой Π³Π»Π°Π²Π΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ ΠΎ Ρ‚Ρ€Π΅Ρ… аспСктах управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π‘Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹ познакомились с систСмой управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π² ОБ Linux, ΠΈ ΡƒΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡŒ Π² простотС Π΅Π΅ примСнСния, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ Π² Π½Π΅Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° рСализация Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ памяти с ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΊΠΎΠΉ страниц. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ ΠΎΠ½Π° Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ‚ ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ нСсанкционированного доступа ΠΊ памяти.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ ΠΊ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ² позволяСт многочислСнным ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ ΡΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ. Π‘Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹ познакомились с простой Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ схСмой сСмафора ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ слоТной ситуациСй, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚Π΅ участки Ρ„Π°ΠΉΠ»Π°, устанавливая раздСляСмый ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ доступ. Π”Π°Π»Π΅Π΅ Π²Ρ‹ рассмотрСли Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ dbm ΠΈ Π΅Π΅ возмоТности хранСния ΠΈ эффСктивного извлСчСния Π±Π»ΠΎΠΊΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… благодаря ΠΎΡ‡Π΅Π½ΡŒ Π³ΠΈΠ±ΠΊΠΎΠΌΡƒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡƒ индСксирования.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ² dbm ΠΊΠ°ΠΊ срСдство хранСния Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°Π½ΠΎΠ²ΠΎ пСрСписали ΠΏΡ€ΠΈΠΌΠ΅Ρ€ прилоТСния, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дисков.

Π“Π»Π°Π²Π° 8

MySQL

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ основы управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π·Π°Ρ‚Π΅ΠΌ посрСдством простой, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ быстрой Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… dbm, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌΡƒ срСдству Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ: Π‘Π£Π Π‘Π” ΠΈΠ»ΠΈ систСмС управлСния рСляционной Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (Relational Database Management System, RDBMS).

Π”Π²Π° самых извСстных прилоТСния Π‘Π£Π Π‘Π” с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ β€” это PostgreSQL ΠΈ MySQL, хотя сущСствуСт ΠΈ мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ…. Π•ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ коммСрчСских Π‘Π£Π Π‘Π”, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Oracle, Sybase ΠΈ DB2, всС ΠΎΠ½ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…. Π Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π°Ρ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ОБ Windows систСма Microsoft SQL Server β€” Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ популярноС срСдство Π½Π° коммСрчСском Ρ€Ρ‹Π½ΠΊΠ΅ Π‘Π£Π‘Π”. Π£ всСх этих ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² Π΅ΡΡ‚ΡŒ свои достоинства, Π½ΠΎ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ³ΠΎ пространства ΠΈ принадлСТности ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π°Π²Ρ‚ΠΎΡ€Ρ‹ ΠΊΠ½ΠΈΠ³ΠΈ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΠ»ΠΈΡΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° Π‘Π£Π Π‘Π” MySQL.

ПоявлСниС MySQL восходит ΠΊ 1984 Π³., Π° коммСрчСский Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΈ поддСрТиваСтся ΠΏΠΎΠ΄ ΠΏΠΎΠΊΡ€ΠΎΠ²ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ MySQL АВ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ послСдних Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π»Π΅Ρ‚. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π‘Π£Π Π‘Π” MySQL β€” это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, условия Π΅Π³ΠΎ использования часто ΡΠΌΠ΅ΡˆΠΈΠ²Π°ΡŽΡ‚ с Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌΠΈ условиями Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв MySQL ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² соотвСтствии с ΠžΠ±Ρ‰Π΅Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΠΉ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GNU (GPL), Π΅ΡΡ‚ΡŒ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ коммСрчСской Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ для использования этого ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½Ρ‹Π΅ трСбования Π½Π° Web-сайтС MySQL (www.mysql.com) ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, какая рСдакция MySQL соотвСтствуСт вашим потрСбностям.

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π° условия примСнСния MySQL Π² соотвСтствии с трСбованиями Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ GPL для вас Π½Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹, ΠΈ Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Ρ€Ρ‡Π΅ΡΠΊΡƒΡŽ Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΡ‰Π½ΠΎΠΉ Π‘Π£Π Π‘Π” PostgreSQL (Π²ΠΎ врСмя написания ΠΊΠ½ΠΈΠ³ΠΈ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½Ρ‹Π΅ условия использования PostgreSQL Π±Ρ‹Π»ΠΈ ΠΌΠ΅Π½Π΅Π΅ строгими). ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° Web-сайтС www.postgresql.org.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ PostgreSQL Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π² нашСй ΠΊΠ½ΠΈΠ³Π΅: Neil Matthew. Beginning Databases with PostgreSQL: From Novice to Professional. Second Edition. β€” Apress, 2005. (ΠœΡΡ‚Ρ‚ΡŒΡŽ H. Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ PostgreSQL: ΠΎΡ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ° Π΄ΠΎ профСссионала. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅).

Π’ этой Π³Π»Π°Π²Π΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹:

β–‘ установка MySQL;

β–‘ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ администрирования, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с MySQL;

β–‘ основныС срСдства ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MySQL;

β–‘ API для взаимодСйствия Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° языкС Π‘ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… MySQL;

β–‘ созданиС рСляционной Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ смоТСтС ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π° языкС Π‘ для управлСния ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ CD-дисков.

Установка

Какой Π±Ρ‹ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ систСмы Linux Π²Ρ‹ Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Π»ΠΈ, вСроятно, для Π½Π΅Π³ΠΎ сущСствуСт доступная вСрсия MySQL, Π·Π°Ρ€Π°Π½Π΅Π΅ откомпилированная ΠΈ готовая ΠΊ установкС. НапримСр, для Red Hat, SUSE ΠΈ Ubuntu Π΅ΡΡ‚ΡŒ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² соврСмСнныС дистрибутивы этих ОБ. ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ вСрсии, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ самый Π»Π΅Π³ΠΊΠΈΠΉ способ быстрых установки ΠΈ запуска MySQL. Если Π² вашСм дистрибутивС Π½Π΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π° MySQL ΠΈΠ»ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ самый свСТий выпуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ ΠΈ исходныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ с Web-сайта MySQL.

Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ описываСм установку Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… вСрсий MySQL.

ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ MySQL

Если ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π²Π°ΠΌ вмСсто стандартной вСрсии Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ MySQL ΠΈΠ· Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°, для ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΈ выполнСния ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈΠ· этой ΠΊΠ½ΠΈΠ³ΠΈ слСдуСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ сборку Standard общСдоступной вСрсии (community edition). Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² Π½Π΅Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠœΠ°Ρ… ΠΈ Debug. ΠŸΠ°ΠΊΠ΅Ρ‚ Max содСрТит Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ срСдства, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ² для хранСния ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚Ρ‹Ρ… срСдств, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ кластСризации. ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ Debug ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ; ΠΊ ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π²Π°ΠΌ Π½Π΅ понадобится ΠΎΡ‚Π»Π°Π΄ΠΊΠ° Π½Π° ΡΡ‚ΠΎΠ»ΡŒ Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅.