рд╕рд╕реНрддреЗ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рдЕрдзрд┐рдХ рднрд╛рд░: MySQL рдореЗрдВ рд╣реИрд╢ рдЯреЗрдмрд▓

рдПрдХ рдЕрддреНрдпрдзрд┐рдХ рднрд░реА рд╣реБрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ (рд╡реЗрдм тАЛтАЛрд╕рд╛рдЗрдЯ) рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ, рд╡реАрдбрд┐рдпреЛ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдпрд╛ MMORPG рдирд╣реАрдВ рд╣реИред рд╕рд╛рдЗрдЯ рдХреА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рдмрдврд╝рд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХрд╛ рд╕рддреНрд░ рднрдВрдбрд╛рд░рдг рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рддреНрдпрд╛рдЧ рдХрд┐рдП рдмрд┐рдирд╛, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рджреЗрдЦреЗрдВрдЧреЗред рд░реИрдо рдХреА рдереЛрдбрд╝реА рдорд╛рддреНрд░рд╛ рдХрд╛ рддреНрдпрд╛рдЧ рдХрд░рдиреЗ рд╕реЗ рд╕реАрдкреАрдпреВ рд╕рдордп рдХреА рдХрд╛рдлреА рдмрдЪрдд рд╣реЛ рд╕рдХрддреА рд╣реИред рд╣рдо рдЙрди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрдм рдореЗрдордХрд╛рдЯреЗрдб рдФрд░ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖ рдХреИрд╢рд┐рдВрдЧ рдЯреВрд▓ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред



рдЬрд╛рджреБрдИ рд╕реНрдореГрддрд┐ рддрд╛рд▓рд┐рдХрд╛рдПрдБ



MySQL DBMS рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд▓рдЧрд╛рддрд╛рд░ рд░реИрдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдиреНрдпреВрдирддрдо рд╕рдордп рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрддреА рд╣реИрдВред рдпрд╣ рдореЗрдореЛрд░реА рд╣реИ, рдЕрднреА рднреА HEAP рдХрд╛ рдкрд░реНрдпрд╛рдп рд╣реИред рджреВрд╕рд░рд╛ рдирд╛рдо рдкреБрд░рд╛рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

MyISAM рдпрд╛ InnoDB рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдпрд╣ рдкреНрд░рд╛рд░реВрдк рдмрд╣реБрдд рд╕реАрдорд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░рд┐рдЪрд╛рд▓рди рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рдЗрд╕рдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХреЛ рджреВрдВрдЧрд╛, рдореИрдВ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛:

  1. рдХрд┐рд╕реА рднреА рдХреНрд╡реЗрд░реА рдХреЛ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореЗрдореЛрд░реА рдореЗрдВ рд╣реИ
  2. рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
  3. рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛
  4. рддрд╛рд▓реЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛


рддреАрд╕рд░реЗ рдФрд░ рдЪреМрдереЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрдореНрдЪреЗрдЪреЗ - рдЬрд╣рд╛рдВ рдПрдХ рд╕рд░реНрд╡рд░ рдПрдХ рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рд╕реЗ рдореЗрдорд░реА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд▓рд╛рднрдХрд╛рд░реА рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд▓реЙрдХрд┐рдВрдЧ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рднреА рдкреВрд░реНрдг-рд╡рд┐рдХрд╕рд┐рдд DBMSs рдХреА рдПрдХ рдмрд╛рдирдЧреА рд╣реИред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЗрд╕ рд▓рд╛рдн рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред

рдХрд╛рдлреА рдЧрдВрднреАрд░ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ:

  1. рдкрд╛рда рдФрд░ BLOB рдлрд╝реАрд▓реНрдб рдкреНрд░рдХрд╛рд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ


рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг



рд╣рдорд╛рд░реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЗрд╖реНрдЯрддрдо рдлрд╝реАрд▓реНрдб рдкреНрд░рдХрд╛рд░ VARCHAR рд╣реИред MySQL 5.0.3 рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХреНрд╖реЗрддреНрд░ 65535 рдмрд╛рдЗрдЯреНрд╕ рд▓рдВрдмрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рд╕рдорд╛рди рд╕рддреНрд░ рдЖрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВ рдСрдкрд░реЗрд╢рди рд╕реЗрдЯ, рдЧреЗрдЯ, рдЪреЗрдХ, рдбрд┐рд▓реАрдЯред рд╣рдо REPLACE рдХреНрд╡реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕реЗрдЯ рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, SELECT COUNT (*) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рдВрдЪреЗрдВ, рдмрд╛рдХреА рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВ:



CREATE TABLE `hashtable` (

`key` VARCHAR(32),

`value` VARCHAR(65536),

PRIMARY KEY (`key`)

) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE utf8_bin;








рдареАрдХ рд╣реИ, рдЕрдм PHP рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред



рд╣реИрд╢ рдЯреЗрдмрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕



рд╕рд░рд▓ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрддреНрдпрдВрдд рдЖрджрд┐рдо рд╣реИред рдПрдХрдорд╛рддреНрд░ рдЗрдирдкреБрдЯ рд╕рднреА рдЗрдирдкреБрдЯ рд╡реИрд▓реНрдпреВрдЬрд╝ (рд╡реИрд▓реНрдпреВ) рдХрд╛ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╣реИ - рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдПрд░реЗрдЬрд╝ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рджреЛрдиреЛрдВ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрджрд░реНрд╢ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдПрдХ рдЕрдиреБрдорд╛рди рдЗрд╕ рддрд░рд╣ рдирд┐рдХрд▓рд╛:

 <?php class HashTable { //     MySQL protected $connect; //   protected $table; /** * * @param resource MySQL $connect * @param string $table */ public function __construct($connect, $table) { $this->connect = $connect; $this->table = $table; } /** * * @param string $key * @param string $val * @return boolean */ public function set($key, $val) { $key = md5($key); $val = serialize($val); $val = mysql_real_escape_string($val, $this->connect); $query = 'REPLACE INTO `'.$this->table.'` (`key`, `value`) '; $query .= 'VALUES ("'.$key.'", "'.$val.'")'; return mysql_query($query, $this->connect) ? true : false; } /** * * @param string $key * @return void */ public function get($key) { $key = md5($key); $query = 'SELECT `value` FROM `'.$this->table.'` WHERE `key`="'.$key.'"'; $result = mysql_query($query, $this->connect); if ($result) { $row = mysql_fetch_row($result); return unserialize($row[0]); } else { return false; } } /** * * @param string $key * @return boolean */ public function check($key) { $key = md5($key); $query = 'SELECT COUNT(*) FROM `'.$this->table.'` WHERE `key`="'.$key.'"'; $result = mysql_query($query, $this->connect); $row = mysql_fecth_row($result); return (bool)$row[0]; } /** * * @param string $key * @return boolean */ public function delete($key) { $key = md5($key); $query = 'DELETE FROM `'.$this->table.'` WHERE `key`="'.$key.'"'; return mysql_query($query, $this->connect) ? true : false; } }
      
      





рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:

 <?php //  $link = mysql_connect('localhost'); mysql_select_db('test', $link); mysql_set_charset('utf8', $link); $storage = new HashTable($link, 'hashtable'); //  $storage->set('name', 'Vasya'); //  var_dump($storage->check('name')); //  var_dump($storage->get('name')); //  $storage->delete('name'); //  var_dump($storage->check('name'));
      
      





рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ


рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ рдЫреЛрдЯреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдпрджрд┐ рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдореЗрдореЛрд░реА рдЯреЗрдмрд▓ рдореЗрдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рд╕реНрд╡реИрдк рдореЗрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░, рдбрд┐рд╕реНрдХ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рд╡рдВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдЕрдиреБрд░реЛрдз рдХрд╛ рдкрд░рд┐рдЪрд╛рд▓рди рдбреЗрдЯрд╛ рд╕реНрд╡реИрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдЧреБрдЬрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рдбреАрдмреАрдПрдордПрд╕ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЯреЗрдмрд▓ рд╡реЙрд▓реНрдпреВрдо рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдкреБрд░рд╛рдиреЗ рд░рд┐рдХреЙрд░реНрдб рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдП рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗрд╡рд▓ рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИред рджреВрд╕рд░реА рддрд░рдл, рдХреБрдЫ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдЖрд╕рд╛рдиреА рд╕реЗ рдлрд┐рдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд┐рдЫрд▓реЗ рдПрдХ рдШрдВрдЯреЗ рдХреЗ рджреМрд░рд╛рди рдпрд╛ рд╕рд╛рдЗрдЯ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рд╡рд┐рд╕реНрддреГрдд рдЖрдВрдХрдбрд╝реЗред



All Articles