память у компов была считанные мегабайты и данные вычитывались по одной строке. Сейчас же можно тупо всю базу в память прочитать и фильтровать на лету. Я проверял на таблицах до миллиона строк - сотня миллисекунд на железе 20-летней давности
Ну client-side курсоры примерно это и делают
Это не работает... Никакой памяти (особенно для 32 битного клиента) не хватит читать современные базы. Сеть и сервер умрут если 5 пользователей одновременно начнут читать на себя таблички с 200к строк с широкими колонками. И что насчет синхронизации изменений таблиц при многопользовательской работе? Каждые 20 сек перечитывать/перефильтровывать? 100мс - это сказки... работающие только на сферической базе в вакууме из трех таблиц с монопольным доступом
Ну так какого размера база? 10 гигов хотя бы наберется? Синхронизация делается проще простого - журнал событий вида (время, таблица, ключ), который можно рассылать, а можно читать по таймеру. А можно средствами СУБД получать уведомления об изменениях.
Недельная база примерно 40 Гб. Но это неважно, мы ведь говорим о выкачивании на клиента всех записей одной таблицы? Самые большие таблицы 3..4 Гига + 3..6 Гб в блоб-полях. Замучаешься на клиента всасывать и фильтровать
С такими размерами баз можно задуматься о долгосрочном кешировании данных на клиенте в виде отдельной справочной БД. Либо сразу веб/тонкого клиента делать.
С таблицами-справочниками, которые обновляются хорошо если раз в месяц, работает
Оно и тогда тормозило не по деццки.
А можно просто принять за аксиому что то что видно на экране - априори устарело. Хочешь видеть самую актуальную версию - блокируй. Не смысла непрерывно рефрешить, тем или иным методом. Все что получено на клиента - по определению устарело.
Железо позволяет в реальном времени смотреть онлайн видео высокого разрешения, отрисовывать целый виртуальный мир, имитировать мыслительные процессы человека. Но десяток килобайт из базы данных отображать в реальном времени никак нельзя, только блокировать или априори устарело. Я правильно понял? =)
А оно точно позволяет без задержки смотреть любой фильм, когда-либо снятый, с любой случайно выбранной секунды?
В ютубе именно так
Ну и откуда взялся вывод про десяток килобайт? Откуда известна частота обновления данных в БД? Если одну запись поочередно хреначат 1 раз в секунду 50 клиентов, зачем человеку видеть как она меняется 50 раз в секунду? Он все равно не может это воспринять и адекватно отреагировать.
Это неправда, в ютюбе страницы по несколько секунд открываются. А должны, по вашему, мгновенно начать трансляцию. Любой случайно выбранный ролик, с любой случайно выбранной секунды. ...ну и вопрос ещё запуска ютюьного сервера на ОДНОМ компьютере. Пусть даже самом дорогом мейнфрейме, но на одном.
У меня события охранных и пожарных приборов со всего города валят на пульт непрерывно, их все надо обрабатывать. Нет событий больше минуты - тревога. Событие из списка тревожных - тревога. Событие не тревожное, но меняет статус на тревожный (преждевременное снятие с охраны, например) - тревога. И нельзя терять ни одного события. Даже если сервер сломается или его отключат на время, нужно все сохранять и после восстановления показать. И это несложно делается, тупо генерим SQL INSERT с синтетическим ключом и пишем в файл (на флешку, в сеть, куда угодно) как лог. А оттуда данные в сервер или еще куда читаем по возможности и показываем пользователю. В таком случае все работает даже без БД, она как архив и для отчетов.
И что, есть реальная разница в частоте рефреша событий - 60 раз в секунду или раз в 1 секунду? Ну и кроме того, у вас задача другая - отслеживать все события. А к примеру, зачем отслеживать изменения в документах которые ты видишь, но не ты делал и не ты правишь? Ну поменялось, будешь смотреть движение товара по документу или статус документа, если актуально - то увидишь. Не будешь смотреть - так и не надо.
Там 500 мс рефреш (2 раза в секунду), вполне достаточно. В режиме отладки 10 раз в секунду.
Забавно. Пришлось делать отчёты по существующей чужой программе, которая работает с датчиками ну и со своей базой. Навесила триггер на таблицу событий, чтобы добавлялось в мою. Вроде тормозов нет
Обсуждают сегодня