1

基本上,我有大量包含一些数据的文件。每个都不同,有些缺少一些变量(null)等,经典的东西。

有趣的是,由于每个文件最多可以有 1000 个变量,并且至少有 800~ 个不为空的值,我想:“嘿,我需要 1000 列”。另一件要提的是,它们是整数、布尔值、文本,应有尽有。它们的大小和类型不同。在所有文件中,每个变量都小于 100 字节,等等。它们各不相同。

我发现了这个问题Work around SQL Server maximum columns limit 1024 and 8kb record size 我不熟悉 sql server 的容量和表设计,但问题是:回答这个问题的人说他们应该重新考虑设计,但我不能这样做. 但是,只要我还有 1000 个变量,我就可以转换我已经拥有的东西。

我愿意使用任何 sql server,但我不知道什么最适合我的要求。如果做其他事情更好,请告诉我。

我需要对这些数据做的是,在其中查看、比较和搜索。我不需要修改这些的能力。我想按原样使用它们并将它们保存为纯文本文件并从中读取,这需要“几秒钟”的 php 运行时才能从这些文件中的“少数”文件中查看数据,这太多了。甚至不考虑我需要检查大约 1000 个或更多这些文件来进行任何搜索的事实。

所以问题是,拥有 1000++ 个实体和 1000 个变量的最快方法是什么,并搜索/比较我希望在其中的任何变量等?如果是 SQL,哪个 SQL 服务器最适合这类东西?

4

4 回答 4

1

听起来你需要一种不同类型的数据库来完成你正在做的事情。考虑一个文档数据库,例如 MongoDB,或其他允许以不同于传统表结构的方式操作数据的非 SQL 数据库风格之一。

我刚刚看到说明你也只是在阅读。我在类似的数据集上使用 Solr 运气不错。

于 2013-12-05T20:19:02.173 回答
1

您想使用EAV 模型。这很常见

于 2013-12-05T21:44:00.103 回答
0

您要求最好,我可以给出答案(我是如何解决的),但不能说它是否是“最好”的方式(在您的环境中),我遇到了收集数千台 PC 库存数据的问题(不国家安全局——开玩笑)

我的灵魂是:

每台 PC 一张桌子(文件给你?)

表文件:每个文件一行,PK FILE_ID

Table File_data 文件中每列一行,PK FILE_ID, ATTR_ID, ATTR_NAME, ATTR_VALUE, (ATTR_TYPE)

表 File_data 是 - 不知何故 - 大(> 1e6 行),但数据库处理得那么快

高温高压

编辑:

最近我的回答很短。我想在我的(并且仍在工作的)解决方案中添加一些额外的信息:

“每个信息源”表有两个以上的字段,PK, FILE_ID即。ISOURCE, ITYPE,其中 ISOURCE 和 ITYPE 描述了从哪里(我有很多来源)以及它是/是什么基本信息类型。这有助于将结构放入查询中。在搜索 USB 设备时,我不需要包含来自“开关”或“监视器”的数据(编辑:今天可能:是的)

属性表也有更多字段。我在这里提到两个字段:ISOURCE, ITYPE,是的,与上面相同,但含义略有不同,背后的想法相同

您必须在这些字段中输入的内容绝对取决于您的数据。

我敢肯定,如果您仔细观察,您必须收集哪些信息,您会发现一些“关键价值”

于 2013-12-05T21:46:39.593 回答
-1

对于存储,XML 可能是最好的选择。SQL 中对 XML 的支持非常好。对于查询,如果它们是直接 SQL 查询,那么 1000 多行并不多,而 XML 会很快。如果您正朝着一百万行以上的方向发展,您可能希望从 XML 中提取最具选择性的数据并分别对其进行索引。

链接:http ://technet.microsoft.com/en-us/library/hh403385.aspx

于 2013-12-05T20:31:13.343 回答