Данная статья рассчитана на программистов, проявившим интерес к использованию SQL в своих проектах. В статье читателям представляется функциональность SQLite, а также рассматриваются ее преимущества. Статья не требует знание функций SQLite, но минимальные знания SQL приветствуются.
它有很多第三方图形用户界面/IDE - 而 sqlite 本身只是一个纯粹的数据库引擎和将其嵌入应用程序的 API...
API 确实适用于一切,包括 NET。我会去找 GUI - 你可能会喜欢)。
https://www.mql5.com/zh/articles/862
谢谢,读过了。目前这篇文章的作者有一个非常好的观点,他的出现,.....并破坏了一切)。
使用它的可能性是存在的,这很好。另外,SQLite 不适用于严肃项目。无论如何,我都不推荐使用它。我自己就遇到过不止一次的碰撞问题。例如,如果一个交易机器人连接到不同的图表,但使用的是同一个基础,而地址指向一个通用表(例如注册/更改会话、账户),那么无论如何都会出现 "表已锁定 "这样的错误。即使所有事务都已完成,游标都已关闭,数据库也是在共享模式下打开的,也无济于事。SQLite 开发人员也知道这个问题。
在我看来,MS Access 是支持 SQL 的最好的文件数据库。不管你如何责骂小软件公司的人,但我离开 SQLite 转而使用 MS Access,我一点也不后悔。即使在 Win98 中也安装了 OleDB 驱动程序 Jet 4.0,因此项目可以在所有 OC Windows 上运行。
我在前面已经写过,Access 可能真的是最好的,这也是我所使用的。在极端情况下,MS SQL Server,尤其是现在有了免费发布的版本。而 MySQL 太笨重,只有服务器分发版 ~450 MB
谢谢,我读了。这篇文章的作者说得非常好,他一进来,.....。毁了一切)。
使用它的可能性是存在的,这很好。另外,SQLite 不适用于严肃的项目。无论如何,我都不推荐使用它。我自己就遇到过不止一次的碰撞问题。例如,如果一个交易机器人连接到不同的图表,但使用的是同一个基础,而且访问的是一个通用表(例如注册/更改会话、账户),那么在任何情况下都会出现类似 "表已锁定 "的错误。即使所有事务都已完成,游标都已关闭,数据库也是在共享模式下打开的,也无济于事。SQLite 开发人员也知道这个问题。
在我看来,MS Access 是支持 SQL 的最好的文件数据库。不管你如何责骂小软件公司的人,但我离开 SQLite 转而使用 MS Access,我一点也不后悔。即使在 Win98 中也安装了 OleDB 驱动程序 Jet 4.0,因此项目可以在所有 OC Windows 上运行。
我在前面已经写过,Access 可能真的是最好的。在极端情况下,MS SQL Server,尤其是现在有了免费发布的版本。
MS Access 是最差的选择之一。在 VDS 上,它几乎无法移动。同样的 SQLite 有什么不能说的--它非常快。有一个问题(但这与 MySQL 和其他任何系统都是一样的)--现在的模式是 "一个 Expert Advisor= 一笔交易,再加上某个地方的指标、图表和终端",但这很容易改变,再加上代码库中的一切都不是为竞争性工作而设计的,这意味着资源的垄断使用,没有必要的阻塞、同步等。顺便说一下,它属于 "变态 "部分--在一个真实账户上运行多个智能交易系统(即使它们是相同的实例)。
如果您想获得更高的可靠性,可以使用 Oracle(您会感到惊讶,但对于机器人来说,它是免费的)和 APEX,为其编写一个连接器。
PS/ 为什么要争论--在 MQ 没有推出通用的 SQL 连接器之前,所有与 DBMS 正常工作的尝试都注定要失败。这正是社区力量无法实现组件的情况。
如果您希望获得更高的可靠性--请将 Oracle(您会感到惊讶,但对于机器人的需求来说,它是免费的)和 APEX 放到一起,并为其编写一个连接器。
是的,我知道 Oracle。我甚至还有几张他们的证书。遗憾的是,它们并没有什么用处。
至于 Access,它的速度并不慢。我用它将报价翻译成 TS(连接:终端 - 基础 - TS)。数据库中有历史记录、当前报价、状态、日志等。这是针对 intrade 的。没有人抱怨数据库的速度。
出于Eugeniy Lugovoy 所述的原因,SQLite 恐怕无法解决类似的问题。
是的,我知道甲骨文公司。我甚至还有几张他们的证书。不幸的是,它们并没有派上用场。
至于Access,它并不慢。我用它将报价翻译成 TS(连接:终端-基础-TS)。历史记录、当前报价、状态、日志等都在数据库中。这是针对 intrade 的。没有人抱怨数据库速度。
出于Eugeniy Lugovoy 所述的原因,SQLite 恐怕无法解决类似的问题。
如果这不是秘密,TC 使用什么机制从 Assets 读取数据?
TC - 标准 C# ADO.NET。C 缓冲区、其更新和写入数据库。终端通过(记不清了)ODBC 向数据库写入数据,但更可能是通过 Jet。如果你感兴趣,我稍后再看。终端有向数据库导出的内置功能(如果计算机上有驱动程序,可以导出任何数据)。
PS 看起来像 OLEDB
.
大家好!伙计们,我好久没来这里了。这里的讨论真的很热:)让我来解释一下吧)
几年前,我参与了一些项目,这些项目的要求大相径庭(通过第三方软件进行额外的市场分析、在网络上发布并保留历史记录、应用遗传算法、模拟交易等),但在数据库中保存数据是权宜之计。由于要求不同,数据库管理系统的选择也相应不同。最后,我决定为每个 DBMS 编写 MT4 RDBMS 驱动程序,以便使用本地驱动程序,而不是 ODBC/OLEDB。例如,mysql - libmysql,oracle - OCI/Instant client,SQLite - 带 api 的 DLL,但微软数据库(Access/MS SQL)只有 OLEDB 选项。所有这些都已经写好并存在到现在,在这里我只为 MySQL 基础数据库撰写了这篇文章,因为在我的主观看法中,它与后苏联地区的数据库还是比较接近的。
总的来说,我在数据库方面工作的时间足够长,工作强度足够大,SQLite 的出现、发展和普及不能不对我产生影响:)我在 v3 下编写了一个 rapper,在一个单独的线程中一切正常(即当一个图表称重 EA 时),但是,当在多个图表上测试时,我意外地得到了一个表锁。我特意编写了测试 EA,只按自己的符号更新数据(行),即表是相同的,但行是不同的,这样就不会造成锁定。尽管 vrapper 本身使用互斥来执行操作,即直到一个更新未完成(+自动提交),另一个更新才会开始。我搜索了论坛,发现确实存在这样的问题。我在 OLEDB 下重写了翻录程序(除了调用所需 DBMS API 的命令外,所有翻录程序的结构几乎相同),并在 MS Access.... 上进行了检查。同样的脚本 - 没有问题。MS SQL - 没问题,PostgreSQL - 没问题,连接 Oracle - 也都没问题。
虽然已经是很久以前的事了,但对 SQLite 的感觉依然存在...我没有再做试验。我记得唯一一个类似的数据库(文件和 SQL 压缩)是 MSSQL Compact Edition,但我的手并没有伸向这个方向。
最后,我只剩下两个项目--一个是 MySQL(包括 MariaDB),一个是 OLEDB,虽然与本地驱动程序(例如,相同的 DBMS Oracle)相比,OLEDB 的可能性有限,但它们足以实现生产项目。在这方面,我看重的是解决方案的稳定性和性能,以及维护成本的最小化。如果将来需要切换到另一个数据库管理系统,成本也会降到最低--如果进行简化,只需根据新子数据库的语法重写查询即可,一般来说,项目逻辑不会受到影响。
谢谢大家,祝大家好运!
我费了好大劲才 "开箱验货"--结果不行。
你好,帕维尔、
请提供以下有关您环境的信息:
- 操作系统的版本和位数
- 终端的版本、构建和位数
- MySQL 版本
很奇怪,内核 不包含创建互斥的函数,libmysql 也不包含确定受操作影响的行数的函数......
我将尝试创建一个类似的环境并进行检查。
Win 7 x64 - 最新版 mt5 x64 (v5 b1455)
我无法进入 MySQL,但这并不可惜。
服务器:通过 UNIX 套接字连接本地主机
服务器类型:Percona 服务器
服务器版本:5.5.35-33.0-log - Percona Server (GPL), Release rel33.0, Revision 611
协议版本:10
用户:***
服务器编码:UTF-8 Unicode (utf8)