Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Завтра в бете 2840 будет:
Очень радует, спасибо
Бета 2840 доступна, попробуйте пожалуйста.
Завтра в бете 2840 будет:
пример:
В визард создания баз данных новый json тип включим позже.
Кто разобрался, прошу показать реализацию такой задачи.
В рамках этой задачи правильно ли понимаю, что в обоих случаях (при чтении базы на Терминале2 и записи в базу в Терминале1) нужно ее блокировать через механизм транзакций?
Как наиболее дешево определить, что база данных была обновлена?
Фундаментально неправильно. Вы описываете распределенное клиент-серверное приложение, со схемой 1 писатель, n читателей. При проектировании подобных систем (да и вообще любых распределенных систем) необходимо стараться избегать каких-либо блокировок, используя lock-free способы организации данных и доступ к ним. Если используемая технология не позволяет обойтись без блокировки, то возможно это вообще не лучшее решение для Вашей задачи. При этом для других задач технология может быть замечательной.
В Вашем случае лучше развернуть полноценный сервер (можно на той же машине что и клиент) и писать котировки в очередь сообщений, посмотрите в сторону Kafka, например. Клиент будет читать эти котировки с нужного индекса. Это lock-free схема доступа к данным.
Получается, что обмен данными имеет меньше возможностей, чем через файлы?
Категорически нет. Обмен через файлы ни разу не атомарен, потому требует блокировок как на стороне читателя так и на стороне писателя. Это самый надежный способ получить deadlock и потеряться в отлавливании трудноуловимых и непонятных ошибках.
Фундаментально неправильно. Вы описываете распределенное клиент-серверное приложение, со схемой 1 писатель, n читателей. При проектировании подобных систем (да и вообще любых распределенных систем) необходимо стараться избегать каких-либо блокировок, используя lock-free способы организации данных и доступ к ним. Если используемая технология не позволяет обойтись без блокировки, то возможно это вообще не лучшее решение для Вашей задачи. При этом для других задач технология может быть замечательной.
В Вашем случае лучше развернуть полноценный сервер (можно на той же машине что и клиент) и писать котировки в очередь сообщений, посмотрите в сторону Kafka, например. Клиент будет читать эти котировки с нужного индекса. Это lock-free схема доступа к данным.
Категорически нет. Обмен через файлы ни разу не атомарен, потому требует блокировок как на стороне читателя так и на стороне писателя. Это самый надежный способ получить deadlock и потеряться в отлавливании трудноуловимых и непонятных ошибках.
Спасибо за столь подробный ответ! К сожалению, я совсем забыл, какую тогда задачу решал. Поэтому не могу поделиться своими соображениями по теме.
Бета 2840 доступна, попробуйте пожалуйста.
Добрый день, уважаемые разработчики!
Функция "DatabaseExport" никак не хочет работать...выдает ошибку 5601 (ошибка выполнения запроса, но запрос я не выполняю) когда указываю имя таблицы в параметрах,
а когда указываю SQL запрос, то ошибка 4022 (отмена выполнения программы), возможно ошибка внутри MQL функции, часть кода из моей библиотеки:
И вопрос №2:
Пытаюсь использовать функции ATTACH/DETACH, чтобы передать данные между БД встроенным механизмом SQLite, в результате ошибка транзакции 5601...
При выполнении этой же транзакции в SQLiteStudio, все отлично.
Это сделано специально или что-то не работает?
Добрый день, уважаемые разработчики!
Функция "DatabaseExport" никак не хочет работать...выдает ошибку 5601 (ошибка выполнения запроса, но запрос я не выполняю) когда указываю имя таблицы в параметрах,
а когда указываю SQL запрос, то ошибка 4022 (отмена выполнения программы), возможно ошибка внутри MQL функции, часть кода из моей библиотеки:
К сожалению, функция DatabaseExport так и не получила функционал по экспорту таблицы (хотя изначально этот функционал предполагался) и на текущий момент поддерживает только запросы.
По ошибке 4022, Вы получаете её при тестировании, если да, то в тестере имеется ограничение на размер файла экспорта - 1GB общий размер записанных на диск данных ?
И вопрос №2:
Пытаюсь использовать функции ATTACH/DETACH, чтобы передать данные между БД встроенным механизмом SQLite, в результате ошибка транзакции 5601...
При выполнении этой же транзакции в SQLiteStudio, все отлично.
Это сделано специально или что-то не работает?