nosql и zend framework (Никита Грошин)

Post on 14-Jan-2015

3.970 Views

Category:

Documents

9 Downloads

Preview:

Click to see full reader

DESCRIPTION

Никита Грошин Geometry Lab

TRANSCRIPT

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

top related