首页 > 解决方案 > 数据库设计:非常分层的数据;用于处理的服务器外子集缓存;小到中等大小;(完全初学者)

问题描述

我发现自己有一个项目(非常轻松,失败几乎没有后果),我认为需要某种数据库来解决。问题是,虽然我总体上还很缺乏经验,但除了我可以用谷歌挖掘的教程和设置你的普通家庭云之外,我从未接触过任何数据库。我让自己陷入了不知道自己不知道的事情上。

情况是这样的:

数百个不同的自动化测试系统会频繁地将少量数据通过慢速网络写入数据库。然后,很少有用户会通过慢速网络从数据库中获取大量数据的子集。然后将处理数据,这将需要大量读取,此时需要非常高的性能。

这将是数据(按数量级):

它基本上是一个标记的 B 树,其中测试步骤作为离开节点(因为它们的格式已经标准化)。

一个批次总是属于一个变体,一个对象总是属于同一个变体(但可能是多个批次),一个变体总是属于一个产品。有成千上万个不同的测试步骤。

可能的查询将尝试获取(例如):

据我所知,数十万列宽(包含上述所有内容)似乎不是一个好主意,大约一万亿行也不是一个好主意(两者之间的中间立场似乎仍然非常极端)。

我真的很想利用数据的分层特性,但我在嵌套数据库之类的东西上发现的只是它们根本不是一个东西。

如果你能帮助我,那就太好了:

  1. 搜索什么
  2. 什么是构建和存储这些数据的好方法
  3. 即使我找到了很多关于避免 SQL 恐怖故事的地方,我也可以学习
  4. 如果有一种很好的方法/最佳实践,我应该知道传输查询的数据并将其缓存在本地进行处理

谢谢你,祝你有美好的一天

安德烈亚斯

标签: sqldatabase

解决方案


  1. 搜索“数据库规范化”。
  2. 规范化的关系数据库是一种精细的结构。
  3. 如果您想避免 SQL 的恐惧,您还可以尝试使用 No-SQL面向文档的数据库,例如 MongoDB。我实际上在很多情况下更喜欢这种数据库。
  4. 数据库会缓存你的查询结果,当然,无论你使用哪个工具来查询数据库,都会将数据缓存在工具的内存中(或者如果结果数量很大,它至少会缓存一部分查询结果) . 您还可以将结果写入文件。“缓存”的方式有很多种,它们在不同的情况下都有用。

推荐阅读