|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
Petro123 Роман Дынник авторВообщето кэш ради ускорения БД - глупость Ну я бы так не сказал... ..... повторно не запрашивать данные из БД если они не были изменены. интересно, как ты ЭТО узнаешь? ЭТО не надо узнавать, если все изменения объектов проходят через кэш. Более мягкий вариант -- блокировка записи в БД, соответсвующей объекту в кэше на то время, пока объект закреплён в кэше. Перед закреплением объекта в кэше можно повторно загрузить его из БД и заблокировать запись, можно этого не делать, если мы уверены, что запись не изменялась или нам полная когерентность кэша не важна. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2006, 18:18 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
mcureenab Petro123 Роман Дынник авторВообщето кэш ради ускорения БД - глупость Ну я бы так не сказал... ..... повторно не запрашивать данные из БД если они не были изменены. интересно, как ты ЭТО узнаешь? ЭТО не надо узнавать, если все изменения объектов проходят через кэш. Более мягкий вариант -- блокировка записи в БД, соответсвующей объекту в кэше на то время, пока объект закреплён в кэше. Перед закреплением объекта в кэше можно повторно загрузить его из БД и заблокировать запись, можно этого не делать, если мы уверены, что запись не изменялась или нам полная когерентность кэша не важна. слишком тяжёлое решение с сомнительным результатом ( эффективностью ). Это вам не страницы читать (сектора с HDD). Да и подмена обязанностей сервера (не надо его жалеть - он же СЕРВЕР). Удачи Аффтару! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2006, 18:48 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
kolobok0 Petro123..интересно, как ты ЭТО узнаешь? это техническая сторона и она менее всех интересна... например монопольное открытие БД...задача решена ???? (круглый) это будет интересно разработчику и архитектору ;). Мало ли кто-что напридумывает, а потом будет вводить ограничения: - монопольное открытие (всем только через меня) - сложные запросы на UPDATE не слать (а то парсить неохота) - сложные запросы на ........ не слать (а то парсить неохота) - сложные запросы кому нужны - в след.версии. - и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2006, 18:55 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
Petro123...Мало ли кто-что напридумывает, а потом будет вводить ограничения: - монопольное открытие (всем только через меня) - сложные запросы на UPDATE не слать (а то парсить неохота) - сложные запросы на ........ не слать (а то парсить неохота) - сложные запросы кому нужны - в след.версии. - и т.д. - монопольность даёт минусы и даёт плюсы - нужно парвильно оценивать задачу...более того, иногда задача этого требует... - а зачем слать апдэйты, если есть методы у классов ? Чтоб было ??? ну тогда действительно - под ВАШУ задачу, так делать глупо... - см. выше.. - см. выше.. - см. выше.. понимаете, Вы исходите из своих знаний и умений. Приводите очевидные примеры. почему вы считаете, что это критерий истины ???? потому что своё ? кхм... странный подход... Давайте абстрагируемся от схем решений... Что такое сиквол ? Правильно - язык. Это то, что формализует интерфейс к БД. А никогда не задумывались - а почему он появился ??? Его плюсы и минусы ??? Тем более, что ответ Вы забираете от клиента той БД которую насилуете, без всяких искуственных языков... На клиенте только различные форматы, различные типы, обработка коллекций и прочая шняга... Давайте помечтаем... А если убрать язык ? Без него мона ? скорее всего да, чем нет. и посчитайте плюсы и минусы получаемого решения... Дело реализации и техники, хотите Вы этого или нет.. Просто дело за малым - временем... последний абзац - так - писча для хвоста... с уважением (круглый) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2006, 19:08 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
kolobok0А если убрать язык ? Без него мона ? скорее всего да, чем нет Можно. Такие решения использовались в начале семидесятых, пока их не вытеснили RDBMS с языком. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2006, 19:39 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
softwarer Роман ДынникА по-моему автор не сказал что эксклюзивная блокировка на чтение требуется. А по-моему, сказал: надо тормозить один поток, пока с кешем работает другой. И позже подтвердил. Alex SМожет, я что-то недопонимаю, но как я буду из разных потоков (TThread) обращаться к одному глобальному экземпляру классу и что-то в нем искать? Такие вещи как критические секции, обычно и обеспечивают ... Прочитайте книгу дальше первых страниц. Или задумайтесь над тем, как работает тот же MSSQL, когда допустим сто клиентов одновременно просят у него данные (в наиболее интересном случае - просят у него результаты одного и того же долгого запроса). Думаю внутри sqlservr.exe выполняется N потоков, которые теми-же механизмами (синхронизацией потоков) обращаются к общим ресурсам ну типа пула планов запросов. Насчет долгого запроса - выигрыш от небольшой задержки от синхронизации при обращении к пулу планов запросов оказывается существеннее чем заново строить план. softwarer Alex S> А вот это напрягло бы меня куда больше, нежели какие-то кэши. Вы имеете в ввиду, что надо одно соединение на все подключения? Нет. Я имею в виду, что при таком технологическом решении я бы не ожидал заметных дополнительных проблем от одного малоэффективного кэша данных. Конкретных решений я предлагать не хочу, потому что все больше убеждаюсь в том, что единственно разумное решение - выбросить и начать заново. Ну значит оставим по одному соединению на поток. :) Правда осталось не понятным что изначально напрягло.... softwarer Alex SСчитайте мой сервер приложений аналогом оракловой службы TNSListener (чем она не третье звено в _классической_ клиент-серверной архитектуре? :) ) Всем. Не стоит щеголять грамотностью там, где ни фига не разбираетесь. Впрочем, можете провести эксперимент. Запустите программу, вырубите TNS Listener и увидите, что программа продолжает нормально работать. Когда добьетесь такого же результата от своего аппсервера, приходите. Ну хорошо, неудачный пример, не надо злиться :) Возьмем для примера SSNETLIB.DLL от MSSQL. Честно говоря, у меня уже нет уверенности, что если ее тоже как-нибудь вырубить, то подключения по сокетам к серверу не остануться :) Но суть я думаю понятна. Мне нужен этот "драйвер" - он выполняет те задачи, про которые я написал. SSNETLIB.DLL выполняет свои задачи, мой СП - свои. В чем ущербность подхода? Petro123 mcureenab Petro123 Роман Дынник авторВообщето кэш ради ускорения БД - глупость Ну я бы так не сказал... ..... повторно не запрашивать данные из БД если они не были изменены. интересно, как ты ЭТО узнаешь? ЭТО не надо узнавать, если все изменения объектов проходят через кэш. Более мягкий вариант -- блокировка записи в БД, соответсвующей объекту в кэше на то время, пока объект закреплён в кэше. Перед закреплением объекта в кэше можно повторно загрузить его из БД и заблокировать запись, можно этого не делать, если мы уверены, что запись не изменялась или нам полная когерентность кэша не важна. слишком тяжёлое решение с сомнительным результатом ( эффективностью ). Это вам не страницы читать (сектора с HDD). Да и подмена обязанностей сервера (не надо его жалеть - он же СЕРВЕР). Удачи Аффтару! Ну зачем блокировать-то ! ??? Можно узнать по дате изменения: если в кеше она равна той что в базе - можно использовать кеш, если более новая - нужно перечитать этот объект в кеше. Дату читать быстрее чем весь объект целиком. Впрочем в моем случае еще проще: шаблоны отчетов и т.п. меняются в базе только при смене версии. Процедура смены версии выставлет флаг в базе (дату/время версии) которую проверяют другие потоки в нужные моменты и, если она отличается от ранее считанной - чистят кеш и перечитывают дату версии. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2006, 19:44 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
авторМожно узнать по дате изменения Я узнаю по полю GUIDLastChange (guid последнего изменения храним). Типовое решение для MSSQL - поля timestemp. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2006, 20:18 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
kolobok0 к сожалению не совсем тесно знаком с указанными системами, но сдаётся мне, что кэш там организован не с "сырыми" данными из БД... А каким то макаром сгрупированные по определённой бизнес логики, в данном контексте слоя... нет, именно с сырыми. Часто также в ORM используется двухуровневый кеш объектов: 1-ый - кеш апп-сервера, 2-ой - кеш клиента. кеш - обычная глобальная коллекция объектов разных типов, поиск в которой производится по ключу. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2006, 20:24 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
авторне с "сырыми" данными из БД... т.е. я имею в виду кеш - это уже готовые объекты на которые помапплены данные из БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2006, 20:28 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
softwarer kolobok0А если убрать язык ? Без него мона ? скорее всего да, чем нет Можно. Такие решения использовались в начале семидесятых, пока их не вытеснили RDBMS с языком. А в середине 90х народ просёк, что программировать на двух языках, всё равно как сидеть на двух стульях и предложил ODBMS и объектный API, где для программирования SQL нужен в значительно меньшей степени. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2006, 21:12 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
>Alex S >Заинтересовал меня такой концептуальный :) вопрос... Продолжаю искать (уточнять) решение задачи, почти аналогичной Вашей. Текущие (на то время) результаты опубликованы здесь: http://www.gotdotnet.ru/LearnDotNet/NETFramework/223738.aspx Подключаю удаленных клиентов к пулу СП. С уважением, Владимир. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2006, 21:21 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
Alex SНу зачем блокировать-то ! ??? Можно узнать по дате изменения: если в кеше она равна той что в базе - можно использовать кеш, если более новая - нужно перечитать этот объект в кеше. Дату читать быстрее чем весь объект целиком. Блокировать нужно для того, чтобы при сохранении кэшированного объекта не затереть изменения сделанные кем то другим. Если объект используется только для чтения, то блокировать скорее всего не нужно, но тогда и закреплять объект в кэше тоже не нужно. Читать дату не на много быстрее чем объект, в прочем если дата (а ещё лучше некий серийный номер, который инкрементируеся при каждом изменении записи) не изменилась, то можно немного сэкономить на трафике. На системном уровне я таких решений не встречал. Обычно в кэш просто считывается объект из БД без всяких проверок. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2006, 21:23 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
mcureenabА в середине 90х народ просёк, что программировать на двух языках, всё равно как сидеть на двух стульях Раньше. К середине 90-х Oracle Forms был кажется уже четвертой, что ли, версии. mcureenabи предложил ODBMS и объектный API, где для программирования SQL нужен в значительно меньшей степени. И мы уже десять лет наблюдаем победное шествие ODBMS. Вот только они что-то даже на горизонте не показываются. Прочие комментарии, наверное, стоит опустить. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2006, 21:24 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
mcureenab Alex SНу зачем блокировать-то ! ??? Можно узнать по дате изменения: если в кеше она равна той что в базе - можно использовать кеш, если более новая - нужно перечитать этот объект в кеше. Дату читать быстрее чем весь объект целиком. Блокировать нужно для того, чтобы при сохранении кэшированного объекта не затереть изменения сделанные кем то другим. Если объект используется только для чтения, то блокировать скорее всего не нужно, но тогда и закреплять объект в кэше тоже не нужно. Читать дату не на много быстрее чем объект, в прочем если дата (а ещё лучше некий серийный номер, который инкрементируеся при каждом изменении записи) не изменилась, то можно немного сэкономить на трафике. На системном уровне я таких решений не встречал. Обычно в кэш просто считывается объект из БД без всяких проверок. Нет!!, блокировать не нужно, чтобы не затереть изменения, сделанные кем-то другим. Чтобы не затереть нужно выполнять update при изменении по двум ключам: ID изменяемого объекта и _ДАТЕ_ПОСЛЕДНЕГО_ИЗМЕНЕНИЯ_ изменяемого объекта.В качестве значения даты передавать то, которое считано в момент чтения объекта. Если количество затронутых оператором update записей (RowsAffected) равен 1, то обьект благополучно изменился так как даты в таблице и параметре update совпали (Т.Е. объект никто на поменял пока мы с ним работали) Если равен 0 - то объект был изменен, но в этом случае мы ничего и не затерли. Дальше зависит от логики. Разумеется вместо даты последнего изменения можно использовать GUID - просто он имхо несет меньше "смысловой нагрузки" (банально узнать когда было последнее изменение).Да и байт в нем больше - поиск медленнее ;) Чиать дату намного быстрее чем объект. Например, шаблон отчета может весить до 3~5 Mb, кроме того чтение BLOB (у меня шаблоны хранятся BLOB полях) подразумевает дополнительные низкоуровневые операции. Кроме того, кроме непосредственно чтения происходит меппинг содержимого таблиц в иерархии классов (в случаях, более сложных чем шаблон отчетов) Выгоднее один раз это проделать и положить экземпляр "заполненного" класса в кеш. При выборе из кеша происходит простое копирование свойств экземпляра класса в другой экземпляр (Assign). ВМоисеев>Alex S >Заинтересовал меня такой концептуальный :) вопрос... Продолжаю искать (уточнять) решение задачи, почти аналогичной Вашей. Текущие (на то время) результаты опубликованы здесь: http://www.gotdotnet.ru/LearnDotNet/NETFramework/223738.aspx Подключаю удаленных клиентов к пулу СП. С уважением, Владимир. спасибо, обязательно посмотрю ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2006, 22:03 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
Перечитал с утра ветку. Хочу ответить, уточнить... Petro123ЗЫ. Чем шаблоны отчётов лучше остальных данных получаемых с сервера - непонятно. 1)Они редко меняются 2)Данные из таблицы, где записаны отчеты не используются нигде, кроме непосредственно считывания шаблона, перед запуском шаблона на выполнение. Шаблоны отчетов, описания атрибутов, форм и т.п. являются чем-то вроде объектов конфигурирования функционала. Ну т.е. в классическом приложении они должны были бы быть "вкомпиленными" в exe, но у меня лежат в базе. Плюсы такого подхода: 1) смена версии = update и insert по базе 2) неограниченное расширение функционала при неизменности exe 3) оперативность внесения изменений Минус: требуется время на выборку и интерпретацию информации из базы. С помощью кеширования я минимализирую "минус" :) softwarer С каких это пор чтение из кэша стало требовать эксклюзивной блокировки, да еще и на уровне кэша в целом? У меня сейчас закрались подозрения, что я не достаточно точно объяснил, что я собирался синхронизировать (блокировать). Не операции чтения БД, совсем нет. Я говорю про синхронизацию при доступе к объекту класса "глобальный кеш" из потоков (нитей, Thread) _внутри_ exe сервера приложений. Ну типа есть такой класс: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
и есть экземпляр этого класса ОДИН на несколько потоков. Код: plaintext
Любой поток будет вынужден войти в критическую секцию, для того чтобы вызвать метод GetItem (найти информацию в кеше). Вы скажете, что операцию чтения в данном случае не надо синхронизировать? Но ведь даже при поиске меняется содержимое памяти, например по указателю переменной счетчика цикла, когда я буду перебирать объекты в списке FList для того чтобы найти нужный. А если меняется содержимое памяти, то такой код нужно защищать от угрозы изменения ее одновременно из двух потоков. Сейчас у меня _каждый_ поток имеет свой экземпляр класса TGlobalCache, и если несколько потоков работают с одной конфигурацией (а-ля одной БД), то велика вероятность что у каждого потока в кеше есть объекты, присутствующие в кеше других потоков - а значит в общей памяти приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2006, 08:49 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
Alex SУ меня сейчас закрались подозрения, что я не достаточно точно объяснил, что я собирался синхронизировать (блокировать). Не беспокойтесь, сейчас Вы объяснили в точности то же, на что я отвечал. И девятнадцать часов назад Колобок уже рассказал Вам, как это следует делать. Alex SЛюбой поток будет вынужден войти в критическую секцию, для того чтобы вызвать метод GetItem Глупость, этого совершенно не требуется. Другой вопрос, что при описываемых Вами параметрах использования кэша такой грубой синхронизации вполне может хватить без заметного ущерба эффективности - если поиск объекта в кэше быстрый. Alex SВы скажете, что операцию чтения в данном случае не надо синхронизировать? Я скажу, что если бы принимал у Вас экзамен, поставил бы Вам тройку. Точнее, благодаря вот этому: Alex SНо ведь даже при поиске меняется содержимое памяти, например по указателю переменной счетчика цикла, .. я бы выбрал базовой оценкой двойку, но за желание думать и таки знание, что такое критические секции добавил бы балл. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2006, 09:26 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
softwarer Alex SУ меня сейчас закрались подозрения, что я не достаточно точно объяснил, что я собирался синхронизировать (блокировать). Не беспокойтесь, сейчас Вы объяснили в точности то же, на что я отвечал. И девятнадцать часов назад Колобок уже рассказал Вам, как это следует делать. Alex SЛюбой поток будет вынужден войти в критическую секцию, для того чтобы вызвать метод GetItem Глупость, этого совершенно не требуется. Другой вопрос, что при описываемых Вами параметрах использования кэша такой грубой синхронизации вполне может хватить без заметного ущерба эффективности - если поиск объекта в кэше быстрый. Alex SВы скажете, что операцию чтения в данном случае не надо синхронизировать? Я скажу, что если бы принимал у Вас экзамен, поставил бы Вам тройку. Точнее, благодаря вот этому: Alex SНо ведь даже при поиске меняется содержимое памяти, например по указателю переменной счетчика цикла, .. я бы выбрал базовой оценкой двойку, но за желание думать и таки знание, что такое критические секции добавил бы балл. Что за пафосный тон? Форум существует для того, чтобы принимать экзамены или помочь разобраться в проблеме? kolobok0 2) синхронизация требуется для доступа к данным, которые могут быть изменены. Например кол-во элементов в списке, сами данные в списке, некие глобальные данные и прочая муть... На чтение, если объект кэша существует -А я про что ? Alex SЛюбой поток будет вынужден войти в критическую секцию, для того чтобы вызвать метод GetItem Сам разберусь. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2006, 10:25 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
Alex SПеречитал с утра ветку. Хочу ответить, уточнить... Petro123ЗЫ. Чем шаблоны отчётов лучше остальных данных получаемых с сервера - непонятно. 1)Они редко меняются 2)Данные из таблицы, где записаны отчеты не используются нигде, кроме непосредственно считывания шаблона, перед запуском шаблона на выполнение. вы не задумывались, где остальные смертные хранять "тяжёлые отчёты"? Причём с обновлением версии на сервере? И без всякого промежуточного сервера, кэша, блокирования, ...... зарплаты разработчика/программиста/внедренца/обслуженца. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2006, 11:11 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
Alex S kolobok0 2) синхронизация требуется для доступа к данным, которые могут быть изменены. Например кол-во элементов в списке, сами данные в списке, некие глобальные данные и прочая муть... На чтение, если объект кэша существует -А я про что ? Alex SЛюбой поток будет вынужден войти в критическую секцию, для того чтобы вызвать метод GetItem Вы - не про то. Колобок - про синхронизацию, Вы - про синхронизацию критической секцией. Разницу между этими вариантами легко увидеть на примере стандартного класса дельфы TMultiReadExclusiveWriteSynchronizer. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2006, 11:24 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
У меня такие мысли тоже есть... Но... если кэшировать большие объемы - это будет накладно... Так целесообразно сделать справочники например: запросить и хранить в памяти до первого требования То, о чем идёт речь - обычный брокер сущностей базы данных Здесь думаю более приемлемо кэшировать только те объекты, которые заблокированы, таким образом вести списки блокировок. Позже я понял, что это удобно делать в самой базе в отдельных таблицах и к выходной выборке другого клиента joinить эти таблицы с блокировками, таким образом можно контролировать текущее состояние объекта даже в простых выборках. Теперь, если клиент открывает на чтение залоченный кем то объект, он автоматом подписывается на нотификацию о смене состояния этого объекта, на экране это будет выглядеть. Первый его разблокирует, второй считывает новую обновленную инфу по объекту и кидает в форму, при этом ReadOnly контролов снимается. При отключении клиента соответственно все таблицы блокировок по этому клиенту очищаются. PS/ Ув. Alex_S, могу выслать ядро нашей системы, там сокеты, многопоточность и DLL, если надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2006, 14:42 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
Пардон, не в тему что-то рубанул глобальный кеш делать есть смысл выглядеть будет примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2006, 14:58 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
-=*ShamaN*=- сказочка: - был клиент Иванов и магазин, где хлеб продавали. Так вот, периодически Иванов приходил в магазин, чтобы узнать: "Завезли новый хлеб или нет?". Но тут пришли Искушатели и уговаривают Иванова: "Зачем тебе ходить всякий раз? Давай ты у нас будешь спрашивать?". А мы тут кэш держать будем. Причём на все булки сразу. И на носки тоже...... ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2006, 14:59 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
Petro123 -=*ShamaN*=- сказочка: - был клиент Иванов и магазин, где хлеб продавали. Так вот, периодически Иванов приходил в магазин, чтобы узнать: "Завезли новый хлеб или нет?". Но тут пришли Искушатели и уговаривают Иванова: "Зачем тебе ходить всякий раз? Давай ты у нас будешь спрашивать?". А мы тут кэш держать будем. Причём на все булки сразу. И на носки тоже...... ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Не в тему ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2006, 15:04 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
Petro123вы не задумывались, где остальные смертные хранять "тяжёлые отчёты"? Причём с обновлением версии на сервере? И без всякого промежуточного сервера, кэша, блокирования, ...... зарплаты разработчика/программиста/внедренца/обслуженца. Боюсь предположить: там-же - в базе ? Причем тут моё желание ускорить процесс "предоставления" их "клиенту"? Нет, не поймите меня неправильно: не сделать так же быстро как у других смертных, а сделать _быстрее_ чем у них. Я с промежуточным сервером думаю что могу это сделать. Могут ли остальные смертные - не знаю. И внедренцы/обслуженцы тут при чем? softwarer Вы - не про то. Колобок - про синхронизацию, Вы - про синхронизацию критической секцией. Разницу между этими вариантами легко увидеть на примере стандартного класса дельфы TMultiReadExclusiveWriteSynchronizer. Да, разобрался. Спасибо -=*ShamaN*=-Пардон, не в тему что-то рубанул глобальный кеш делать есть смысл выглядеть будет примерно так: Код: plaintext 1. 2. 3. 4. 5. 6.
Похоже принцип тот-же. Ну то-есть блокировать только запись. Пришлось кое-что переделать/упростить, но сделал. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2006, 20:22 |
|
Пул объектов: за и против
|
|||
---|---|---|---|
#18+
Alex S не сделать так же быстро как у других смертных, а сделать _быстрее_ чем у них. Я с промежуточным сервером думаю что могу это сделать. Могут ли остальные смертные - не знаю. И внедренцы/обслуженцы тут при чем? для этого обычно пишут в таком виде: авторПроблема: AAAAAAAAAA Решение № N (для 2-х звенки): BBBBBBBBBBBBB Недостаток стандартного подхода: Например при 2-х звенке отчёт размером N килобайт обновляется раз в месяц за время N-сек. ОООчень долго. Предлагаемый подход на основе 3-х звенки: CCCCCCCCCCCCCC это IMHO стандартный подход, и его можно сразу в FAQ при желании. А так - велосипеды и неконкретный трёп IMHO ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2006, 10:44 |
|
|
start [/forum/topic.php?fid=33&msg=34070116&tid=1549269]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
188ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 317ms |
0 / 0 |