Chr*_*een 5 ms-access database-design sql-server data
我工作的公司从许多不同的设备生成大量原始文本文件的测试数据。每个设备都属于一个“进程”,而“进程”的数量只有几十个。目前我们有一个程序,它获取这些数据并生成/添加到适当过程的 Access 数据库(当前为 .mdb,但我们希望更改为 .accdb,因为它更新更好?)。
然后,我们使用 Excel 在数据透视表中查看数据库中的数据。数据库文件本身很少接近 1 GB(可能一年几次),此时我们将数据库存档并创建一个新数据库,因为这是大小限制。我们从来不需要同时访问多个进程的数据,因此我们从来没有遇到过它们位于单独数据库中的问题。
我们 IT 部门的某人建议我们切换到 SQL 数据库,其中将存储所有流程的所有数据,并且数据只会有一个额外的列标记其所属的流程。
我担心的是,在通过 Excel 访问这些数据时,我们一次只能查询一个进程,但数据库必须过滤所有其他进程,这肯定会花费更长的时间,因为它必须查询数十个进程。多倍的数据?
坚持使用我们当前的多个数据库系统(每个进程一个数据库,我们一次只能访问一个数据库)而不是将它们全部收集到一个大型数据库中,有什么缺点吗?相反,拥有像这样的单一大型数据库系统有优势吗?我是否错了,使用大型 SQL 数据库比使用多个小型 Access 数据库更快?
J.D*_*.D. 12
在我看来,Microsoft Access 是一种过时的数据管理方式,尤其是在组织内。与现代数据库系统相比,除了数据存储在本地化文件中(而不是集中在服务器上)之外,还有很多限制和缺乏功能。但人们仍然使用它来这样做,我想这就是为什么微软仍然支持它作为应用程序。
我担心的是,在通过 Excel 访问这些数据时,我们一次只能查询一个进程,但数据库必须过滤所有其他进程,这肯定会花费更长的时间,因为它必须查询数十个进程。多倍的数据?
当架构和索引正确时,这不会是值得担心的事情。B树索引(Microsoft SQL Server 中索引的标准类型)的搜索时间为O(Log2(n))。这意味着,如果您的表有 10 亿行,则只需搜索 B 树的大约 30 个节点(最多)即可找到任何特定的数据子集 ( Log2(1 billion) = 30)。
因此,正如 IT 部门的人员提到的,如果您在列上对表建立索引Process(因为听起来您一次只查看一个数据流程),理想情况下只需要几毫秒即可找到流程数据的任何子集,不管桌子有多大。然后,从磁盘加载该数据将花费与当前在 Microsoft Access 中大致相同的时间,因为数据量相同。
有趣的是,为了强调这一点,我曾经使用的数据库有 TB 大的表,其中有数十亿行,在一台不比现代笔记本电脑配置更多的服务器上,并查询SQL Server 定位数据的时间不到一秒。
教育:全功能数据库(Access 没有)有一个叫做索引*的东西。配置后,这些允许您通过索引值提取数据,而无需访问表的其余部分。您可以在几毫秒到几秒内轻松从具有数百万或数十亿行的表中获取所需的行。所以这不是避免改变的理由。
相反,让我们列出当前方法的缺点和优点:
当前设置的优点
缺点
因此,正如您所看到的,大多数变革的原因都是围绕增强的功能。只有您和您的同事才能决定这些增强的功能是否值得更换系统的成本。
(* MSAccess 实际上支持索引,但鉴于 MDB 的结构,它们远不如 SQL Server 上的索引有效)
| 归档时间: |
|
| 查看次数: |
1881 次 |
| 最近记录: |