Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://www.fds-net.ru/showflat.php?Number=8548933&src=arc&showlite=l
Дата изменения: Unknown Дата индексирования: Tue Feb 26 22:16:57 2013 Кодировка: Windows-1251 |
Technical
>> Development (Archive)
Страницы: 1 | (5) | ||
TAS : Re: [СУБД] "Максимум данных надо хранить в оперативке"
[re:l0st] 18.04.2009 00:39 | Reply | Edit | | -3 | |
thread, lock, google | ||
DarkGray
[re:l0st] 18.04.2009 00:52 | Reply | Edit | | 0 | |
Quote: значит хранить в памяти, в первую очередь, ту часть данных, которая меняется редко | ||
DarkGray
[re:l0st] 18.04.2009 00:59 | Reply | Edit | | 8 | |
Но так все это мне в целом напоминает: Оцените адекватность совета "мойте руки перед едой". у меня есть сомнения в полезности этого совета, т.к. я не понимаю, как это можно сделать - если приходиться есть на морозе в -50 градусов. ps если серьезно: да, по жизни есть много разных рекомендаций, да эти рекомендации работают не при всех условиях, но это не означает что рекомендации бесполезны или неадекватны, это лишь означает что в каждом конкретном случае - часть рекомендаций стоит применить, а часть придеться откинуть. | ||
KOHTPA
[re:Spin] 18.04.2009 01:29 | Reply | Edit | | 0 | |
> "максимум данных надо хранить в оперативке" оно и логично Ну вот, например, случилось несчастье, умер процесс. Соответственно, ОС память затерла и перераспределила. И нет твоих данных, которые ты там хранил. --- "Значение болевого импульса в нашей жизни неоценимо!" | ||
DarkGray
[re:KOHTPA] 18.04.2009 01:42 | Reply | Edit | | 0 | |
Quote: ну вот, например, случилось несчастье, произошел ядерный взрыв. Соответственно, взрывная волна все затерла и перераспределила. и нет твоих данных, которые ты там хранил. ps база данных сама по себе никаких особых гарантий по сравнению с памятью не дает. и в том, и в другом случае - все равно надо думать головой что и зачем сохраняется, все равно надо помнить, что несчастья случаются, все равно надо считать вероятности, делать backup-ы, разбираться с длительностью хранения и т.д. | ||
KOHTPA
[re:DarkGray] 18.04.2009 01:50 | Reply | Edit | | 1 | |
> база данных сама по себе никаких особых гарантий по сравнению > с памятью не дает. Это ты так думаешь, а на практике получается иначе. Разумеется, этого в книжках по C# не написано. --- "Vyroba umelych lidi, slecno, je tovarni tajemstvi." | ||
l0st
[re:DarkGray] 18.04.2009 03:24 | Reply | Edit | | 0 | |
Ну тогда конкретизуем. Утверждение было высказано в процессе обсуждения следующей ситуации: Есть довольно большая таблица, хранящая дерево. Для простоты предположим, что она состоит из двух полей ID и ParentID. Сейчас из ее данных в памяти Web-приложения (серверная сторона, разумеется) строится дерево за десяток секунд, которое затем многократно используется при чтении данных. При этом структура дерева изредка меняется. Надо обновлять кеш, но тут появляются проблемы синхронизации. | ||
Krasin
[re:l0st] 18.04.2009 09:22 | Reply | Edit | | -1 | |
В ответ на: Класс! А почему не 0.1 с? Только не говорите мне, что делается более 1000 запросов к БД! | ||
l0st
[re:Krasin] 18.04.2009 10:25 | Reply | Edit | | -2 | |
Я еще не смотрел код. Вообще я тоже офигел. Предлагаю рассмотреть гипотетическую ситуацию, что быстрее пострить не получится. Иначе уже совсем другой вопрос будет, который я и сам в состоянии решить. | ||
alepar
[re:l0st] 18.04.2009 10:53 | Reply | Edit | | 3 | |
Тут имеет место быть банальный мемори-цпу трейдофф. Все зависит от специфики. Смотрите, сколько весит ваше дерево в памяти. Оцениваете/замеряете, насколько станет тормознутее приложение, если у него "отобрать" эту память. Из полученного времени вычитаете выигрыш от хранения готового дерева в памяти. Если результат отрицательный => смысл имеет. Кэш либов сейчас полно везде. Проблемы синхронизации там так или иначе решаются без вашего участия. При желании - бывают дистрибьютед кеши aka IMDG. Их поменьше, но тоже хватает. Приличные средства доступа к бд умеют этими кешами пользоваться. В этом варианте вам достаточно подружить ваше средство доступа к БД и кеш, и при некоторой удаче даже код менять не придется. Если же хочется жестко все контролировать (читай быть 100% уверенным, что в кеше всегда есть это дерево) - кладите свое построенное дерево в кеш руками, только рефрешить(но не синхронизировать) кеш придется самостоятельно. В конце концов, раз дерево меняется редко, то можно синхронизацию и руками написать, ничего там страшного не будет. Как реализовать модель типа один-писатель/много-читателей - полно описалова. Думаю, вам она подойдет. | ||
Nine17
[re:KOHTPA] 18.04.2009 13:49 | Reply | Edit | | 0 | |
Quote: Это не проблема. У нас все данные за день хранятся в памяти, тем не менее, самая распространенная проблема - это не падение процесса (случалось может пару раз в год), а разрыв соединения с источником данных. | ||
Shurik
[re:Krasin] 18.04.2009 15:28 | Reply | Edit | | 1 | |
Quote: там же не написано количество данных, откуда твои числа взялись? | ||
KOHTPA
[re:Nine17] 19.04.2009 00:59 | Reply | Edit | | 0 | |
> самая распространенная проблема - это не падение процесса > (случалось может пару раз в год), а разрыв соединения с > источником данных. Если хранить WAL на этом же узле, то это становится больше похоже на локальную СУБД, синхронизирующуюся с основной. --- ...Я работаю антинаучным аферистом... | ||
Driver
[re:l0st] 24.04.2009 11:02 | Reply | Edit | | -2 | |
Если база предназначена для записи, а не для чтения, то вопрос становится вообще бессмысленным ![]() | ||
Top |