nosql и zend framework (Никита Грошин)
DESCRIPTION
Никита Грошин Geometry LabTRANSCRIPT
NOSQL
GeometriaLab
Geometria.RuGeometria.Me
ТрендыКоличество данныхСвязанность данных
Усложнение сущностейУсложнение архитектуры
Нагрузка
В чем причина?
NOSQLKey-ValueDocumentGraphDBBigTable
Key-ValueБольшие объемы данных
СкоростьРепликация
Масштабируемость
DocumentВыборки по Value
ШардингMap/Reduce
Версионность
Graph/BigTable
Пара слов..
ПлюсыМасштабируемость
НадежностьДоступность
Гибкость
МинусыВыборки
СогласованностьСтандартизация
Безопасность
МинусыВыборки
СогласованностьСтандартизация
Безопасность
RedisЛегкий,быстрый
lists, sets, ordered setsАтомарные операции
union, intersection, difference
ДанныеKey:String =>Value:StringKey:String =>Value:LISTKey:String =>Value:SET
Key:String =>Value:ZSET
Скорость200000 GET/SET в секунду
Множество клиентовОперации в RAM
Асинхронный persistencRAMe
РепликацияВстроенный асинхронный
Master=>SlaveЦепочки репликацийSlave блокируется,
Master нет
ШардингКонсистентные хэши
Redis ClusterApplication level
RediskaНесколькими серверамиКлючами как с объекты LIST и SET как массивы
Интеграция с Zend Framework
Zend Framework
Кладем Redika в libraryВносим Rediska в конфиг
Интеграция
Zend Framework
Кладем Redika в libraryВносим Rediska в конфиг
Интеграция Zend_Auth adapter
Zend_Cache backend Zend_Log writer
Zend_Queue adapter Zend_Session save handler
Интеграция Zend_Auth adapter
Zend_Cache backend Zend_Log writer
Zend_Queue adapter Zend_Session save handler
class UsersPosts extends Rediska_Key_Set
{ …$users = new UsersPosts($userId);$users->add($postId1);$users->add($postId2);…foreach ($users as $userId) {
MongoDb
ХорошИдеален для Web
КэшированиеJSON, BSON
Там где RDBMS плох
ПлохСложные Транзакции
EnterpriseЗабивание гвоздей
Там где RDBMS плох
Sql vs. Mongo
SQL MongoDB
SELECT a,b FROM users
db.users.find({}, {a:1,b:1})
SELECT * FROM users WHERE age<33
db.users.find({'age':{$lt:33}})})
SELECT COUNT(*y)FROM users
db.users.count()
Mongo PHPPecl driver
ZF, Kohana, SymfonyMorph, Simplemongophp,
MapReduce API