powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Посоветуйте БД + кэширующая подсистема
33 сообщений из 33, показаны все 2 страниц
Посоветуйте БД + кэширующая подсистема
    #36171507
oldnetrat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
БД будет содержать данные по типу форума. Т.е. в день добавляется около N тем, к которым пишут около N*10 комментариев. При этом запросов на выборку этих данных много больше N*100.

Реализацию вижу так:

Вся работа с БД будет вестить через кэширующий интерфейс, который хранит в памяти все данные, или если оперативной памяти не хватает, только те с которыми последними велась работа (т.е. чтение и запись). Вся выдача данных клиенту производится из кэша, т.е. это ситуация когда данные уже были в кэше, либо когда их пришлось подгрузить в кэш из БД (во втором случае они там остаются до тех пор пока не будут вытолкнуты при условии нехватки памяти и долгого периода необращения к этим данным). Запись данных осуществляется также только через кэш, т.е. данные в кэше обновляются (и уже готовы к выдаче другим клиентам) а в БД скидываются постепенно по мере возможности.

Есть ли уже готовые решения, позволяющие реализовать это? Т.е. чтобы разработчик мог работать только с API системы кэширования, а как там взаимодействие с БД реализовано его не касается. Или хотя бы чтобы можно было бы достаточно быстро адаптировать под такую реализацию. Т.е. чтобы игра стоила свеч и это было бы явно выгоднее/быстрее, чем писать систему кэширования самому на C++.
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36171624
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делать вам нефиг
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36171646
Konstantin~
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у вас тут две системы потребуются:

А) кеш. Чтение: читаем даные из кеша, если нету в кеше, лезем за данными в БД.

См. мемкешд http://www.danga.com/memcached/ как наиболее распотраненное решение.

Б) очередь. Запись: пишем данные как задание в очередь. Сервис/Демон читает задания из очереди в том порядке в каком они поступили, пишет данные в БД.

тут много чего есть, завистит вашей среды разработки и проч. Начать можно отсюда http://en.wikipedia.org/wiki/Message_queue

"Писать через кеш" нельзя т.к. а) данные погут потерятся: кеш перегузили - данные из памяти изщезли, памать кончилась - кеш потер часть данных, на запись в том числе и б) часть операций записи должна производится в строго определенной последовательности, такое обеспечивает система очередей а не кеш.

И еще: какая нагрузка планируется на вашу систему "типа форума"? Спрашиваю потому что возится с queue servers имест смысл если у вас нагрузка порядка "миллионы уникальных юзеров в день". Посему советую решать проблемы по мере их поступления, то есть может на чтение и стоит кеш прикрутить, да и то надо смотреть по нагузке.
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36171661
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oldnetrat Есть ли уже готовые решения, позволяющие реализовать это?СУБД
oldnetrat Т.е. чтобы разработчик мог работать только с API системы кэширования, а как там взаимодействие с БД реализовано его не касается.SQL
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36171824
Фотография Infernal V. Raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oldnetrat,

Каково приблизительно ожидаемое число запросов? возможно танцы вокруг кэша не стоят того, достаточно грамотной архитектуры.
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36172134
oldnetrat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konstantin~у вас тут две системы потребуются:

А) кеш. Чтение: читаем даные из кеша, если нету в кеше, лезем за данными в БД.

См. мемкешд http://www.danga.com/memcached/ как наиболее распотраненное решение.

Б) очередь. Запись: пишем данные как задание в очередь. Сервис/Демон читает задания из очереди в том порядке в каком они поступили, пишет данные в БД.

тут много чего есть, завистит вашей среды разработки и проч. Начать можно отсюда http://en.wikipedia.org/wiki/Message_queue

"Писать через кеш" нельзя т.к. а) данные погут потерятся: кеш перегузили - данные из памяти изщезли, памать кончилась - кеш потер часть данных, на запись в том числе и б) часть операций записи должна производится в строго определенной последовательности, такое обеспечивает система очередей а не кеш.

И еще: какая нагрузка планируется на вашу систему "типа форума"? Спрашиваю потому что возится с queue servers имест смысл если у вас нагрузка порядка "миллионы уникальных юзеров в день". Посему советую решать проблемы по мере их поступления, то есть может на чтение и стоит кеш прикрутить, да и то надо смотреть по нагузке.

Нагрузка планируется около 10 тысяч уникальных посетителей в день, но нужно чтобы первое время система могла работать на VDS 800 mhz / 256 ram. Про очередь это все понятно, в том то и дело чтобы все это уже было совмещено с чем-то типа memcached. Детали реализация я знаю, меня интересуют готовые решения.
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36172161
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oldnetratНагрузка планируется около 10 тысяч уникальных посетителей в день, но нужно чтобы первое время система могла работать на VDS 800 mhz / 256 ram.
uSUS... от такой арихметики.
Прикинь нагрузку (в запросах) в пиковое время и... забитие канала.
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36172216
oldnetrat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Di_LIne,

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

если все это взгромоздить на какой-нибудь популярный CMS на php+MySQL оно и на порядок меньшую нагрузку не выдержит.

и насчет 10 тысяч, скорее реальная цифра 2-3 тысячи, потом можно будет перейти на нормальное железо.
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36172585
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oldnetratскорее реальная цифра 2-3 тысячи, потом можно будет перейти на нормальное железо.Так может на нормальном железе исразу истроить НОРМАЛЬНУЮ систему?
Что бы потом не было мучительно больно все перетаскивать. А заодно полнять - оно нужно или проект загнетца. А 2-3 тыщи в сутки - не нагрузка...

МемкешДВ и еже с ним - под нагрузки 10-20 тыщ операций В СЕКУНДУ .
- Ферштейн?

Для начала погружения в вопрос - см. журнал Хакер за август сего года.
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36172822
Фотография Infernal V. Raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oldnetratНагрузка планируется около 10 тысяч уникальных посетителей в день, но нужно чтобы первое время система могла работать на VDS 800 mhz / 256 ram. Про очередь это все понятно, в том то и дело чтобы все это уже было совмещено с чем-то типа memcached. Детали реализация я знаю, меня интересуют готовые решения.
Затраты на сервер будут значительно меньше, чем на разработку кэша.
Тем более, как выяснилось запросов немного.

Вы на локальной машине дома хотите развернуть социальную сеть? :)
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36173042
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oldnetratБД будет содержать данные по типу форума. Т.е. в день добавляется около N тем, к которым пишут около N*10 комментариев. При этом запросов на выборку этих данных много больше N*100.

Реализацию вижу так:

Вся работа с БД будет вестить через кэширующий интерфейс, который хранит в памяти все данные, или если оперативной памяти не хватает, только те с которыми последними велась работа (т.е. чтение и запись). Вся выдача данных клиенту производится из кэша, т.е. это ситуация когда данные уже были в кэше, либо когда их пришлось подгрузить в кэш из БД (во втором случае они там остаются до тех пор пока не будут вытолкнуты при условии нехватки памяти и долгого периода необращения к этим данным). Запись данных осуществляется также только через кэш, т.е. данные в кэше обновляются (и уже готовы к выдаче другим клиентам) а в БД скидываются постепенно по мере возможности.

Есть ли уже готовые решения, позволяющие реализовать это? ...
Ну у Оракла есть сервер приложений, т.е. среднее звено трехзвенке (клиент - сервер приложений - сервер БД). Там и Кеш в нем должен быть.
На JDeveloprе моно пробовать лабать. Не знаю на скока это готовое решение для Вас, но для кучи моно и его упомянуть.
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36173050
oldnetrat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Infernal V. RavenoldnetratНагрузка планируется около 10 тысяч уникальных посетителей в день, но нужно чтобы первое время система могла работать на VDS 800 mhz / 256 ram. Про очередь это все понятно, в том то и дело чтобы все это уже было совмещено с чем-то типа memcached. Детали реализация я знаю, меня интересуют готовые решения.
Затраты на сервер будут значительно меньше, чем на разработку кэша.
Тем более, как выяснилось запросов немного.

Вы на локальной машине дома хотите развернуть социальную сеть? :)]

Ну не социальную сеть, но из той же оперы. Хочу попробовать реализовать и запустить одну идею, дома к сожалению не выйдет, т.к. симметричный канал это домашние сети, а их кабели у нас режут на раз-два. Поэтому хочу купить VDS какой-нибудь за 1000 руб в месяц. Сильно больше платить на начальном этапе как-то жаба душит. А кэш такой на C++/STL написать не так и сложно, пару недель вечерами, с учетом то что он специально под мои структур данных будет заточен. Одно дело когда затраты в человеко-часах идут от зарплаты программиста, а другое дело из своего кармана ради проекта который 9 и 10 что ни копейки ни принесет. Тут может аренда сервера поначалу и не выгодна )
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36173064
oldnetrat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vadiminfo,

А этот сервер приложений в их Express Edition входит?
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36173690
Konstantin~
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oldnetrat,

10K юзеров в день это не много, все может нормально работать на указанном VDS. Мемкеш и проч. тут не нужны (потом прикрутите если потребуется) , достаточно только грамотно написать приложение: смотрите чтобы главная страница открывалась без [ кучи ] запросов к базе и чтоб всякая статистика "на лету" не считалась.

одной системы кеш+очереди+интерфейсы ко всем языкам (мы ведь не знаем на чем вы будете писать) на сколько я знаю нет. Если очень надо, то за пару/тройку дней вполне реально написать "класс-обертку" на выбранном вами языке программирования для чтения через мемкеш и запись через систему очередь; это на порядок(дки) быстрее чем писать свою систему кеша и очередей.
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36173730
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oldnetratvadiminfo,

А этот сервер приложений в их Express Edition входит?
Ну Express Edition как и Интерпрайс Эдишн - это сервера БД. В силу многозвенных архитектур сервера приложений обычно не входят в сервера БД. Потому думаю не входит. Более того, у него и к серваку требования в части ОП свои. Для него 1 Гб, тогда как для серверов БД 512 М, особенно для Express Edition типа номано (конечно, если не обращать внимания на конкретные БД).
Хотя сервер приложений вствал и на 512 у меня, и типа крутился для тестов, но при установке ругался на это. Вы посмотреть то могете бесплатно (если не обращать внимания на трафик инета). Если не применете, то хотя пометите у себя как рассмотренный вариант: меньше упреков потом буит что маленькую аналит работу по выбору инструментария проделали.
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36173790
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oldnetrat
Ну не социальную сеть, но из той же оперы. Хочу попробовать реализовать
и запустить одну идею

Тогда BlackRay - как будто специально для Вас сделана. Сожрёт ваши
объёмы и не подавится.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36175114
oldnetrat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
почитал про MemcacheDB. думаю как раз то что нужно.
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36175837
Brodiaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можете посмотреть в сторону Oracle Database + In-Memory Database Cache! но правда по деньгам дороговато :)
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36176100
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Brodiagaможете посмотреть в сторону Oracle Database + In-Memory Database Cache! но правда по деньгам дороговато :)

Экзотично. А почему не TimesTen ?
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36176166
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Brodiagaможете посмотреть в сторону Oracle Database + In-Memory Database Cache! но правда по деньгам дороговато :)

Экзотично. А почему не TimesTen ?
А почему не Informix + SolidDB? Или DB2 + SolidDB?
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36176471
jap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Brodiagaможете посмотреть в сторону Oracle Database + In-Memory Database Cache! но правда по деньгам дороговато :)

Экзотично. А почему не TimesTen ?
Это одно и тоже
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36176482
jap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойGluk (Kazan)Brodiagaможете посмотреть в сторону Oracle Database + In-Memory Database Cache! но правда по деньгам дороговато :)

Экзотично. А почему не TimesTen ?
А почему не Informix + SolidDB? Или DB2 + SolidDB?
тогда надо ждать до конца года (для полноты списка), когда Sybase "доделает" In-Memory DataBase опцию в ASE ;)
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36181739
Фотография artemana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36183155
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oldnetratи это было бы явно выгоднее/быстрее, чем писать систему кэширования самому на C++.
Мне кажется, Вы не совсем осознаёте, что "система кэширования", если подумать о её функционале, по сути и есть СУБД. В книжках для чайников любят делать форум примером как раз для кэширования, но при этом почему-то забывают, что кроме "списка тем" и "списка сообщений" форум начинает требовать всяких интересных вещей, например "десять последних сообщений в форуме", "список сообщений данного автора", "список тем, в которые писал данный автор", "избранное" всех родов, и coup de grace - полнотекстовый поиск.
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36188759
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwareroldnetratи это было бы явно выгоднее/быстрее, чем писать систему кэширования самому на C++.
Мне кажется, Вы не совсем осознаёте, что "система кэширования", если подумать о её функционале, по сути и есть СУБД. В книжках для чайников любят делать форум примером как раз для кэширования, но при этом почему-то забывают, что кроме "списка тем" и "списка сообщений" форум начинает требовать всяких интересных вещей, например "десять последних сообщений в форуме", "список сообщений данного автора", "список тем, в которые писал данный автор", "избранное" всех родов, и coup de grace - полнотекстовый поиск.

Ну, если уж совсем точно, то СУБД обычно кэширует по страницам и, при не самом вдумчивом проектировании БД, эффективность кэша может быть очень невысокой (ну, например, храним все сообщения в одной таблице в естественном порядке. Тогда выборка "все сообщения пользователя" будет не слишком эффективно использовать кэш).

Так что иногда имеет смысл делать все-таки ручное кэширование. А как именно - это уже вопрос предпочтений и архитектуры: через мемкэш, через триггера в БД, через объекты на сервере приложений.

Впрочем, указанная выше нагрузка достигается вообще без применения головы - хоть на Access'е или файлах. И кэширование скорее замедлит работу (памяти не хватит), нежели ускорит.
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36189946
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dph3Так что иногда имеет смысл делать все-таки ручное кэширование.
Не спорю. Я вовсе не против кэширования; я против... того позиционирования, которое видится у топикстартера. Если я правильно понял его отношение, то в итоге собственного написания подсистемы кэширования у него получится специализированная in-memory СУБД, примерно так.
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36190032
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerdph3Так что иногда имеет смысл делать все-таки ручное кэширование.
Не спорю. Я вовсе не против кэширования; я против... того позиционирования, которое видится у топикстартера. Если я правильно понял его отношение, то в итоге собственного написания подсистемы кэширования у него получится специализированная in-memory СУБД, примерно так.

Да я понимаю, что ты это и так все прекрасно знаешь )

я против... того позиционирования, которое видится у топикстартера. Если я правильно понял его отношение, то в итоге собственного написания подсистемы кэширования у него получится специализированная in-memory СУБД, примерно так.
Угу. При том, что памяти и так мало, а запросы редкие - в результате проблем будет у топикстартера только больше. Особенно когда БД в память не поместиться.
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36192093
пролетевший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос еще, на чем все это писать...
Если на Java, то готовое решение - Hibernate + Oscache|Jboss cache ... , все работает именно так как хочет ТС - для разработчика все прозрачно, кеш работает за библиотекой и его в общем-то не видно. Можно насторить кеширование в памяти, на диске, в другой DB...
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36192107
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пролетевший Если на Java, то готовое решение - Hibernate + Oscache|Jboss cacheЧисто из любопытства как кэш узнает что данные поменялись другой сессией и его (кэш) надо бы освежить (по таймауту, триггер в бд посылает сигнал, еще как-нибудь)
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36192155
пролетевший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257Чисто из любопытства как кэш узнает что данные поменялись другой сессией и его (кэш) надо бы освежить (по таймауту, триггер в бд посылает сигнал, еще как-нибудь)
Явного механизма который бы отрабатывал изменения в базе другими приложениями - нет , кроме как настройки таймера.
Для веб приложения, которое только и работает с базой это не актуально, в других случаях кеш может приводить к проблемам. Хотя, если в приложении ТС чтение в сотни раз превышает добавления - для анонимных пользователей например можно и забить на задержку обновления.
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36195459
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257Чисто из любопытства как кэш узнает что данные поменялись другой сессией и его (кэш) надо бы освежить
Если у нас не кластер и работа с БД делается через общий код, то в чем проблема? Тот код, что изменил данные - заодно и инвалидировал кэш (общий на виртуальную машину). В Hibernate, подозреваю, это делается вполне себе автоматически.

А вообще, для подобных задач есть минимум три принципиально разные стратегии ;)
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36195485
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH3 А вообще, для подобных задач есть минимум три принципиально разные стратегии ;) Попробую угадать
Первый - это просто таймер - по прошествии некоторого времени обновляемся
Второй - это регистрируемся в базе как подписчик некоего события и при изменении к-л. поля триггер сообщает подписчикам (асинхронно), что данный объект изменен
Третий - триггер вставляет запись в change log и подписчики регулярно просматривают свежие сообщения на предмет не задеты ли их закэшированные данные.

Если что не учел - напомните.
...
Рейтинг: 0 / 0
Посоветуйте БД + кэширующая подсистема
    #36204277
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257
Первый - это просто таймер - по прошествии некоторого времени обновляемся
Второй - это регистрируемся в базе как подписчик некоего события и при изменении к-л. поля триггер сообщает подписчикам (асинхронно), что данный объект изменен
Третий - триггер вставляет запись в change log и подписчики регулярно просматривают свежие сообщения на предмет не задеты ли их закэшированные данные.

Если что не учел - напомните.

Ну, я имел в виду немножко другое.

Первый вариант я вообще не рекомендую, уж очень дорогой.
Второй - крайне специфичен для конкретного сервера БД, сильно зависит от версии драйверов, потенциально глюкавый. Хотя если связываться не с БД, а с другим app-сервером, то получится классический push (синхронный или асинхронный - это уже детали реализации)
Третий - это одна из стандартных реализаций pull (вариантов там кучка).
И есть еще checkVersion - это когда у каждой строки (или, лучше, у каждого хранящегося в БД объекта) есть version (с инкрементом на каждое изменение) и при получении данных из кэша проверяется версия (один select по упорядоченному индексу - т.е. мгновенно) и если версии в кэше и в БД не совпали - то инвалидируем. Если совпали - то и хорошо. Впрочем, можно рассматривать это как вариант pull стратегии.

По опыту - обычно в проектах требуется как минимум две разные стратегии :)
...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Посоветуйте БД + кэширующая подсистема
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]