169 похожих чатов

А какого размера у вас базы данных? Датасеты придумали, когда

память у компов была считанные мегабайты и данные вычитывались по одной строке. Сейчас же можно тупо всю базу в память прочитать и фильтровать на лету. Я проверял на таблицах до миллиона строк - сотня миллисекунд на железе 20-летней давности

17 ответов

25 просмотров

Ну client-side курсоры примерно это и делают

Это не работает... Никакой памяти (особенно для 32 битного клиента) не хватит читать современные базы. Сеть и сервер умрут если 5 пользователей одновременно начнут читать на себя таблички с 200к строк с широкими колонками. И что насчет синхронизации изменений таблиц при многопользовательской работе? Каждые 20 сек перечитывать/перефильтровывать? 100мс - это сказки... работающие только на сферической базе в вакууме из трех таблиц с монопольным доступом

Sergey-Bodrov Автор вопроса

Ну так какого размера база? 10 гигов хотя бы наберется? Синхронизация делается проще простого - журнал событий вида (время, таблица, ключ), который можно рассылать, а можно читать по таймеру. А можно средствами СУБД получать уведомления об изменениях.

Sergey Bodrov
Ну так какого размера база? 10 гигов хотя бы набер...

Недельная база примерно 40 Гб. Но это неважно, мы ведь говорим о выкачивании на клиента всех записей одной таблицы? Самые большие таблицы 3..4 Гига + 3..6 Гб в блоб-полях. Замучаешься на клиента всасывать и фильтровать

Sergey-Bodrov Автор вопроса
Михаил Усков
Недельная база примерно 40 Гб. Но это неважно, мы ...

С такими размерами баз можно задуматься о долгосрочном кешировании данных на клиенте в виде отдельной справочной БД. Либо сразу веб/тонкого клиента делать.

Михаил Усков
Это не работает... Никакой памяти (особенно для 32...

С таблицами-справочниками, которые обновляются хорошо если раз в месяц, работает

Оно и тогда тормозило не по деццки.

Sergey Bodrov
Ну так какого размера база? 10 гигов хотя бы набер...

А можно просто принять за аксиому что то что видно на экране - априори устарело. Хочешь видеть самую актуальную версию - блокируй. Не смысла непрерывно рефрешить, тем или иным методом. Все что получено на клиента - по определению устарело.

Sergey-Bodrov Автор вопроса
Владимир Аксенов
А можно просто принять за аксиому что то что видно...

Железо позволяет в реальном времени смотреть онлайн видео высокого разрешения, отрисовывать целый виртуальный мир, имитировать мыслительные процессы человека. Но десяток килобайт из базы данных отображать в реальном времени никак нельзя, только блокировать или априори устарело. Я правильно понял? =)

Sergey Bodrov
Железо позволяет в реальном времени смотреть онлай...

А оно точно позволяет без задержки смотреть любой фильм, когда-либо снятый, с любой случайно выбранной секунды?

Ну и откуда взялся вывод про десяток килобайт? Откуда известна частота обновления данных в БД? Если одну запись поочередно хреначат 1 раз в секунду 50 клиентов, зачем человеку видеть как она меняется 50 раз в секунду? Он все равно не может это воспринять и адекватно отреагировать.

Sergey Bodrov
В ютубе именно так

Это неправда, в ютюбе страницы по несколько секунд открываются. А должны, по вашему, мгновенно начать трансляцию. Любой случайно выбранный ролик, с любой случайно выбранной секунды. ...ну и вопрос ещё запуска ютюьного сервера на ОДНОМ компьютере. Пусть даже самом дорогом мейнфрейме, но на одном.

Sergey-Bodrov Автор вопроса
Владимир Аксенов
Ну и откуда взялся вывод про десяток килобайт? Отк...

У меня события охранных и пожарных приборов со всего города валят на пульт непрерывно, их все надо обрабатывать. Нет событий больше минуты - тревога. Событие из списка тревожных - тревога. Событие не тревожное, но меняет статус на тревожный (преждевременное снятие с охраны, например) - тревога. И нельзя терять ни одного события. Даже если сервер сломается или его отключат на время, нужно все сохранять и после восстановления показать. И это несложно делается, тупо генерим SQL INSERT с синтетическим ключом и пишем в файл (на флешку, в сеть, куда угодно) как лог. А оттуда данные в сервер или еще куда читаем по возможности и показываем пользователю. В таком случае все работает даже без БД, она как архив и для отчетов.

Sergey Bodrov
У меня события охранных и пожарных приборов со все...

И что, есть реальная разница в частоте рефреша событий - 60 раз в секунду или раз в 1 секунду? Ну и кроме того, у вас задача другая - отслеживать все события. А к примеру, зачем отслеживать изменения в документах которые ты видишь, но не ты делал и не ты правишь? Ну поменялось, будешь смотреть движение товара по документу или статус документа, если актуально - то увидишь. Не будешь смотреть - так и не надо.

Sergey-Bodrov Автор вопроса
Владимир Аксенов
И что, есть реальная разница в частоте рефреша соб...

Там 500 мс рефреш (2 раза в секунду), вполне достаточно. В режиме отладки 10 раз в секунду.

Владимир Аксенов
И что, есть реальная разница в частоте рефреша соб...

Забавно. Пришлось делать отчёты по существующей чужой программе, которая работает с датчиками ну и со своей базой. Навесила триггер на таблицу событий, чтобы добавлялось в мою. Вроде тормозов нет

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта