вопрос по memcache

svdesign

Guest
вопрос по memcache

Вот допустим сделаю я все как написано здесь
http://www.danga.com/memcached/
Запущу эту ботву.
И что получается любой пользователь на сервере из своих
скриптов без проблем сможет подключится к моему memcache
и удалить или изменить все мои данные?
Никаких средств по ограничению доступа memcache не имеет?
Хотябы что-то элементарное, логин-пароль?
 

tony2001

TeaM PHPClub
нет, такого нет и не предполагается.
авторы изначально говорят, что есть смысл ставить memcache только на выделенный сервер.
 

tony2001

TeaM PHPClub
svdesign
честно говоря, мне - ни капли не жаль.
т.к. при добавлении авторизации memcache потерял бы своё главное преимущество - скорость ответа.
 

svdesign

Guest
Нифига бы он там не потерял,
мне вообще не понятно какая там может быть "большая производительность" если данные от сервера качаются к клиенту через tcp порт. А данные эти IMHO нечто иное как подобие сериализованных данных.
Надо будет попробовать создать объект, сохранить его в сериализ. виде, и сравнить скорость получения этого объекта из memcached и процесс десериализации такого-же объекта.
Врядли результат будет сильно отличаться.
 

tony2001

TeaM PHPClub
>Нифига бы он там не потерял,
о... какое смелое заявление.

>Надо будет попробовать создать объект, сохранить его в сериализ. виде, и сравнить
>скорость получения этого объекта из memcached и процесс десериализации
>такого-же объекта.
буду рад увидеть эти "тесты", хотя и не пойму какое отношение они имеют к авторизации.
 

AnToXa

prodigy-одаренный ребенок
попробую объяснить почему memcache именно потерял бы в скорости ответа

1. у memcache очень простой _stateless_ протокол
2. если добавлять авторизацию, то пункт первый пролетает.

откуда должны браться данные для авторизации? из файла? а обновляться? а как пароли шифруются? а как определяется принадлежность данных и права на них?

все эти вопросы реализуемы, но неизбежно увеличат прожорливость до памяти и процессора и сильно усложнят протокол.

-~{}~ 27.10.04 16:35:

> мне вообще не понятно какая там может быть "большая производительность"
> если данные от сервера качаются к клиенту через tcp порт
и что? ты же не собираешься коннектиться к memcache на другой стороне земли в приложениях где нужен быстрый ответ, а в локалке все очень быстро будет.

> данные эти IMHO нечто иное как подобие сериализованных данных.
да, и что?
 

svdesign

Guest
Автор оригинала: AnToXa
попробую объяснить почему memcache именно потерял бы в скорости ответа

1. у memcache очень простой _stateless_ протокол
2. если добавлять авторизацию, то пункт первый пролетает.
Один дополнительный запрос например login и все.
На фоне все имеющихся set, add, replace и т.п. ничего страшного не произошло бы.
Не прошел логин - разрыв соединения.

откуда должны браться данные для авторизации? из файла? а обновляться? а как пароли шифруются? а как определяется принадлежность данных и права на них?

все эти вопросы реализуемы, но неизбежно увеличат прожорливость до памяти и процессора и сильно усложнят протокол.
Та где угодно, хотябы в простом файле форматом на подобие программа htpasswd
Обновляться ручками, шифровать в md5

> мне вообще не понятно какая там может быть "большая производительность"
> если данные от сервера качаются к клиенту через tcp порт
и что? ты же не собираешься коннектиться к memcache на другой стороне земли в приложениях где нужен быстрый ответ, а в локалке все очень быстро будет.

> данные эти IMHO нечто иное как подобие сериализованных данных.
да, и что?
А то, что если это так, то функция unserialize работает, если не быстрее, то с такой же скоростью.
 

AnToXa

prodigy-одаренный ребенок
> Один дополнительный запрос например login и все.

аха, и логин при каждом коннекте, замечательно, очень быстро :)

> А то, что если это так, то функция unserialize работает, если не быстрее, то с такой же скоростью.

да, и что?
 

svdesign

Guest
> Один дополнительный запрос например login и все.

>аха, и логин при каждом коннекте, замечательно, очень быстро :)

А что коннектов в течении выполнения скрипта может быть больше чем один? Почему-то никто никогда не говорил что процесс авторизации как-то влияет на скорость работы, например базы mysql, хотя там тоже все происходит примерно таким же образом через TCP соединение.

> А то, что если это так, то функция unserialize работает, если не быстрее, то с такой же скоростью.

> да, и что?

Ладно, бесполезно спорить.
 

AnToXa

prodigy-одаренный ребенок
> что коннектов в течении выполнения скрипта может быть больше чем один?
обычно нет.

>почему-то никто никогда не говорил что процесс авторизации как-то влияет на скорость работы, например базы mysql

потому что время затрачиваемое на выполнение запросов на порядки больше времени затрачиваемого на авторизацию, в случае с memcache эти величины сравнимы, думаю, что там даже не будет разницы в разы, если ключей не десятки миллионов.
 

neko

tеam neko
а чем это лучше shared memory?
кроме того факта, что она неможет быть общей для нескольких серверов
 

tony2001

TeaM PHPClub
>а чем это лучше shared memory?

удобнее?

>кроме того факта, что она неможет быть общей для нескольких серверов

вот это, как раз, самое главное отличие.
при использовании shared memory ты отбираешь память у других процессов на том же сервере, а memcache будет работать на N специально выделенных под него серверов.
 

neko

tеam neko
ясно
т.е. если сервер один, принципиальной разницы по функционалу нет
и shared memory должна работать быстрее чем сокеты
 

tony2001

TeaM PHPClub
neko
>т.е. если сервер один, принципиальной разницы по функционалу нет
есть, конечно.
например, вопрос с ключами для блоков шаред мемори.

вообще, по-моему, стоит открыть мануал того и того, да сравнить функционал.

>и shared memory должна работать быстрее чем сокеты
да, при учете того, что она находится на том же сервере и отбирает память у локальных процессов, например, апача.
 

slach

Новичок
а если серверов несколько
но хотелось бы иметь общий кеш
для кластера...

то memcached очень хорошее решение IMHO
 

AnToXa

prodigy-одаренный ребенок
slach
если сделать патч, чтобы несколько memcache серверов могли между собой ключики кидать буддет совсем хорошо
 
Сверху