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

32
NOSQL

Upload: zfconfua

Post on 14-Jan-2015

3.985 views

Category:

Documents


9 download

DESCRIPTION

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

TRANSCRIPT

Page 1: NoSQL и Zend Framework (Никита Грошин)

NOSQL

Page 2: NoSQL и Zend Framework (Никита Грошин)
Page 3: NoSQL и Zend Framework (Никита Грошин)
Page 4: NoSQL и Zend Framework (Никита Грошин)

GeometriaLab

Geometria.RuGeometria.Me

Page 5: NoSQL и Zend Framework (Никита Грошин)

ТрендыКоличество данныхСвязанность данных

Усложнение сущностейУсложнение архитектуры

Page 6: NoSQL и Zend Framework (Никита Грошин)

Нагрузка

В чем причина?

Page 7: NoSQL и Zend Framework (Никита Грошин)
Page 8: NoSQL и Zend Framework (Никита Грошин)

NOSQLKey-ValueDocumentGraphDBBigTable

Page 9: NoSQL и Zend Framework (Никита Грошин)

Key-ValueБольшие объемы данных

СкоростьРепликация

Масштабируемость

Page 10: NoSQL и Zend Framework (Никита Грошин)

DocumentВыборки по Value

ШардингMap/Reduce

Версионность

Page 11: NoSQL и Zend Framework (Никита Грошин)

Graph/BigTable

Пара слов..

Page 12: NoSQL и Zend Framework (Никита Грошин)

ПлюсыМасштабируемость

НадежностьДоступность

Гибкость

Page 13: NoSQL и Zend Framework (Никита Грошин)

МинусыВыборки

СогласованностьСтандартизация

Безопасность

Page 14: NoSQL и Zend Framework (Никита Грошин)

МинусыВыборки

СогласованностьСтандартизация

Безопасность

Page 15: NoSQL и Zend Framework (Никита Грошин)

RedisЛегкий,быстрый

lists, sets, ordered setsАтомарные операции

union, intersection, difference

Page 16: NoSQL и Zend Framework (Никита Грошин)

ДанныеKey:String =>Value:StringKey:String =>Value:LISTKey:String =>Value:SET

Key:String =>Value:ZSET

Page 17: NoSQL и Zend Framework (Никита Грошин)

Скорость200000 GET/SET в секунду

Множество клиентовОперации в RAM

Асинхронный persistencRAMe

Page 18: NoSQL и Zend Framework (Никита Грошин)

РепликацияВстроенный асинхронный

Master=>SlaveЦепочки репликацийSlave блокируется,

Master нет

Page 19: NoSQL и Zend Framework (Никита Грошин)

ШардингКонсистентные хэши

Redis ClusterApplication level

Page 20: NoSQL и Zend Framework (Никита Грошин)

RediskaНесколькими серверамиКлючами как с объекты LIST и SET как массивы

Интеграция с Zend Framework

Page 21: NoSQL и Zend Framework (Никита Грошин)

Zend Framework

Кладем Redika в libraryВносим Rediska в конфиг

Page 22: NoSQL и Zend Framework (Никита Грошин)

Интеграция

Page 23: NoSQL и Zend Framework (Никита Грошин)

Zend Framework

Кладем Redika в libraryВносим Rediska в конфиг

Page 24: NoSQL и Zend Framework (Никита Грошин)

Интеграция Zend_Auth adapter

Zend_Cache backend Zend_Log writer

Zend_Queue adapter Zend_Session save handler

Page 25: NoSQL и Zend Framework (Никита Грошин)

Интеграция Zend_Auth adapter

Zend_Cache backend Zend_Log writer

Zend_Queue adapter Zend_Session save handler

Page 26: NoSQL и Zend Framework (Никита Грошин)

class UsersPosts extends Rediska_Key_Set

{ …$users = new UsersPosts($userId);$users->add($postId1);$users->add($postId2);…foreach ($users as $userId) {

Page 27: NoSQL и Zend Framework (Никита Грошин)

MongoDb

Page 28: NoSQL и Zend Framework (Никита Грошин)

ХорошИдеален для Web

КэшированиеJSON, BSON

Там где RDBMS плох

Page 29: NoSQL и Zend Framework (Никита Грошин)

ПлохСложные Транзакции

EnterpriseЗабивание гвоздей

Там где RDBMS плох

Page 30: NoSQL и Zend Framework (Никита Грошин)

Sql vs. Mongo

Page 31: NoSQL и Zend Framework (Никита Грошин)

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()

Page 32: NoSQL и Zend Framework (Никита Грошин)

Mongo PHPPecl driver

ZF, Kohana, SymfonyMorph, Simplemongophp,

MapReduce API