Discussion de l'article "SQLite Gestion native des bases de données SQL dans MQL5" - page 7

Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Il sera de 2840 dans la version bêta demain :
Très heureux, merci
La Beta 2840 est disponible, n'hésitez pas à l'essayer.
Il sera de 2840 dans la version bêta demain :
exemple :
Nous inclurons le nouveau type json dans l'assistant de création de base de données plus tard.
Si quelqu'un a trouvé la solution, qu'il nous montre la mise en œuvre d'une telle tâche.
Dans le cadre de cette tâche, ai-je bien compris que dans les deux cas (lors de la lecture de la base sur Terminal2 et de l'écriture dans la base sur Terminal1), cela doit être bloqué par le mécanisme de transaction?
Quel est le moyen le plus économique de déterminer que la base de données a été mise à jour ?
C'est fondamentalement faux. Vous décrivez une application client-serveur distribuée, avec un schéma de 1 écrivain, n lecteurs. Lors de la conception de tels systèmes (et de tout système distribué en général), il convient d'essayer d'éviter les verrous en utilisant des méthodes d'organisation des données et d'accès à celles-ci qui ne soient pas soumises à des verrous. Si la technologie utilisée ne permet pas d'éviter les verrous, il ne s'agit peut-être pas de la meilleure solution pour votre tâche. Cependant, pour d'autres tâches, la technologie peut être excellente.
Dans votre cas, il est préférable de déployer un serveur complet (vous pouvez le faire sur la même machine que le client) et d'écrire des citations dans la file d'attente des messages, comme Kafka, par exemple. Le client lira ces citations à partir de l'index requis. Il s'agit d'un schéma d'accès aux données sans verrou.
Il s'avère donc que l'échange de données offre moins de possibilités que l'échange de fichiers ?
Catégoriquement non. Le partage via des fichiers n'est pas du tout atomique, il nécessite donc des verrous à la fois du côté du lecteur et du côté de l'auteur. C'est le moyen le plus sûr d'obtenir un blocage et de se perdre dans des erreurs difficiles à trouver et incompréhensibles.
C'est fondamentalement faux. Vous décrivez une application client-serveur distribuée avec un schéma de 1 auteur, n lecteurs. Lors de la conception de tels systèmes (et de tout système distribué en général), il convient d'essayer d'éviter les verrous, en utilisant des méthodes d'organisation des données et d'accès à celles-ci qui ne soient pas soumises à des verrous. Si la technologie utilisée ne permet pas d'éviter les verrous, il ne s'agit peut-être pas de la meilleure solution pour votre tâche. Cependant, pour d'autres tâches, la technologie peut être excellente.
Dans votre cas, il est préférable de déployer un serveur complet (vous pouvez le faire sur la même machine que le client) et d'écrire des citations dans la file d'attente des messages, comme Kafka, par exemple. Le client lira ces citations à partir de l'index requis. Il s'agit d'un schéma d'accès aux données sans verrou.
Catégoriquement non. Le partage via des fichiers n'est en aucun cas atomique, il nécessite donc des verrous à la fois du côté du lecteur et du côté de l'auteur. C'est le moyen le plus sûr d'obtenir un blocage et de se perdre dans des erreurs difficiles à voir et incompréhensibles.
Merci pour cette réponse si détaillée ! Malheureusement, j'ai complètement oublié le problème que je résolvais à l'époque. C'est pourquoi je ne peux pas partager mes réflexions sur le sujet.
La version bêta 2840 est disponible, veuillez l'essayer.
Questions sur cette solution
- Y a-t-il des problèmes lorsque plusieurs EAs utilisent la même base de données sqlite simultanément ?
- Si MT5 tombe en panne, certaines données peuvent-elles être perdues ? Quelle est la fréquence d'écriture des données sur le disque ?
Bonjour, chers développeurs !
La fonction "DatabaseExport" ne veut en aucun cas fonctionner...elle donne l'erreur 5601 (query execution error, but I do not execute the query) quand je spécifie le nom de la table dans les paramètres,
et lorsque je spécifie la requête SQL, elle donne l'erreur 4022 (annulation de l'exécution du programme), probablement une erreur à l'intérieur de la fonction MQL, une partie du code de ma bibliothèque :