Скорость, друзья, — вот одно из важных составляющих вашего проекта. Пока ресурс посещает 10-100 пользователей в день, то все нормально — пользователь радуется и приглашает к вам своих друзей, друзья своих друзей и так далее. Нагрузка растет…
Человеку, который смотрит фотки, читает блоги, слушает музыку в интернете, не важно на каком языке написан ваш сайт, какая используется СУБД и используете ли вы кэширование. Ему важно, чтобы доступ к интересному контенту был максимально быстрый.
Но со временем успешный проект всегда будет требовать большей производительности из-за увеличения посещаемости проекта.
Рассмотрим связку PHP+MySQL+Memcached.
Чтобы показать пользователю статью с комментариями, нужно:
Современная концепция noSQL появилась, как ответ нормализованным структурам данных.
Рассмотрим связку PHP+Memcached в предыдущем примере:
Появляется понятие «документ» (например: статья с комментариями). Чтобы конкретнее разобраться в noSQL технологии, захотелоськак всегда «придумать велосипед».
Прототип JIM2
Требуются: Apache + mod_php + php_xcache
Указываем путь, где будут храниться файлы:
Пример использования:
запись
чтение
Человеку, который смотрит фотки, читает блоги, слушает музыку в интернете, не важно на каком языке написан ваш сайт, какая используется СУБД и используете ли вы кэширование. Ему важно, чтобы доступ к интересному контенту был максимально быстрый.
Но со временем успешный проект всегда будет требовать большей производительности из-за увеличения посещаемости проекта.
Рассмотрим связку PHP+MySQL+Memcached.
Чтобы показать пользователю статью с комментариями, нужно:
- Посмотреть есть ли статья (с комментариями) в кэше
- Если нет, то сделать «дорогой» JOIN текста + комментариев
- Положить все в кэш
- Отдать контент пользователю
Современная концепция noSQL появилась, как ответ нормализованным структурам данных.
Рассмотрим связку PHP+Memcached в предыдущем примере:
- Посмотреть есть ли статья (с комментариями) в кэше
- Если нет, то положить ее в кэш
- Отдать контент пользователю
Появляется понятие «документ» (например: статья с комментариями). Чтобы конкретнее разобраться в noSQL технологии, захотелось
Прототип JIM2
Требуются: Apache + mod_php + php_xcache
Указываем путь, где будут храниться файлы:
define('STORAGE_PATH', 'F:\\tmp\\jim2');
Пример использования:
запись
$collection = new Collection();
$vasya = array
(
'name' => 'Vasya',
'sex' => 'male'
);
$masha = array
(
'name' => 'Masha',
'sex' => 'female'
);
$jim = array
(
'name' => 'Jim',
'sex' => 'male',
'type' => 'dog'
);
$collection->put($vasya);
$collection->put($masha);
$collection->put($jim);
$collection->createIndex( array ('name+sex', 'sex') );
чтение
$collection = new Collection();
$keys = xcache_get('./index/sex/male');
foreach ($keys as $key)
{
print_r( $collection->get($key) );
}
Особенности:- Документы хранятся в виде ключ/значение
- По свойствам документа можно строить индексы (создаются дополнительные ключи)
- У каждого документа есть поле _rev, указывающее на версию документа. Это позволит избежать коллизии при блокировке файла на запись, так как проверяются версии документов
- Также сама коллекция хранит версию. Сделано для того, чтобы можно было преверять актуальность кэшей, построенных на базе коллекции документов
- Выборка коллекции с помощью API
- Pagination
- … любое ваше предложение