问题标签 [datadesign]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
52 浏览

datadesign - 为什么有些热门网站在注册时不需要中间名或首字母?

以下是一些不要求提供中间名或首字母的主要网站:

  1. 亚马逊网站
  2. google.com
  3. etsy.com
  4. 雅虎网
  5. 等等

我的印象是中间名是我们全名的一部分,并使我们的身份尽可能独特。

我知道这不是直接的编程问题,但这或多或少与数据设计有关。

0 投票
1 回答
144 浏览

relational-database - 使用自定义日期范围存储要过滤的重叠日期范围

我需要有关如何在我的数据仓库中构建重叠日期范围的帮助。我的目标是以允许对报告进行日期级别过滤的方式对数据进行建模。

我有维度—— DimEmployeeDimDate和一个名为FactAttendance的事实。这个事实中的记录存储如下——</p>

事实考勤

用图形表示——</p>

休假管理系统

需要根据这些数据创建报告,最终用户可以通过选择日期范围来过滤它。假设用户选择日期范围 D1 到 D20。在进行此选择时,用户应该看到至少一名员工休假天数的值。在这个特定的示例中,我应该看到底部添加了浅蓝色段,即 11 天。

我正在考虑的一种方法是在每个员工的每个日期为每个休假存储一行。这种方法的唯一问题是它会以指数方式增加事实表中的记录数。此外,事实上还有其他列会有冗余数据。

仓库中通常如何处理此类重叠的日期/时间问题?有没有更好的方法不涉及插入大量行?

0 投票
4 回答
5564 浏览

c# - 使接口扩展类

我有以下情况,但我觉得我做错了什么...... 在此处输入图像描述

Field根据这篇文章,我使用了一个界面。Field接口继承自类Style,Field1、2、3继承自Field接口。我想Label用几个不同类型的字段构造一个对象,每个字段都有自己的样式。我不确定我是否以正确的方式这样做,特别是因为我在尝试编译时收到以下错误:Type 'Style' in interface list is not an interface

我的代码:

解决这个问题的最佳方法是什么?

编辑

我知道从接口继承一个类是不可能的,但这里最好的方法是什么?

0 投票
0 回答
55 浏览

elasticsearch - elasticsearch数据存储设计

我有来自设备的传感器数据。好像: [status:1,temperature:20,date:20160101] [status:1,temperature:21,date:20160101] [status:1,temperature:21,date:20160101] [status:1,temperature:21,date:20160101] [status:2,temperature:5,date:20160101] [status:2,temperature:5,date:20160101] [status:2,temperature:5,date:20160101] [status:1,temperature:21,date:20160101] [status:1,temperature:21,date:20160101]

每个数据中还有时间戳字段,我准备将它们存储到elasticsearch,我有2个要求

1.查询不同状态的温度表并进行分页 [status:1,temperature[20,21,21,21]] [status:2,temperature[5,5,5]] [status:1,temperature[21,21]]

  1. 查询日平均温度 avgTemperature(date)

有没有合适的方法将这些数据存储在es中?或者提供一些关于这个案例的建议。

0 投票
2 回答
414 浏览

mysql - 建立设备数据库。将所有设备属性放在一个表中还是在多个单独的表中更好?

我正在建立一个用于监控设备的数据库,但我陷入了僵局。

我有 40 种不同类型的设备,每一种都记录不同的信息,并且有一些共同点(例如设备名称、采样日期)但大多不同的属性(例如 signal_50_100Hz、device_arm_attached)。

在我看来,有两种选择:

  1. 构建一个包含并耗尽所有设备的所有属性的大表。

    • 缺点:并非所有设备都具有所有属性的值,并且并非所有属性都与所有设备相关。大部分表可能最终是空的,我可能必须构建一个表来记录每个设备的属性名称,以便生成合理的输出。
    • 优点:拥有一张表大大简化了事情,并且使以后更容易聚合和汇总值,编写的 SQL 更少,更通用,更容易理解。
  2. 为每种设备类型创建一个单独的表,在每个表中分别列出每个属性。

    • 缺点:每次拿到新设备都需要编写自定义SQL,rehash整个系统,没有通用接口。大量表要独立构建和管理。
    • 优点:一切都简洁明了,如果需要,可以解耦以独立存在。没有额外的包袱,并且一种设备类型不会通过通用属性集与其他设备类型耦合。

该数据库的目的是不断地将来自这些监控设备的信息汇总到一个视图中,然后根据分析人员的需要进行查询。

我喜欢为每个设备创建不同的表,然后使用通用视图将这些表中的相关数据聚合成更可用和更通用的形式。这将允许我保留数据(为了保留),并根据需要从一个通用的、抽象的层、一个大视图中聚合它。

您认为这种方法有什么问题吗?哪种方法更有意义?我还可以采用哪些其他策略?有没有人对如何更好地解决这个问题有任何一般性建议?

0 投票
1 回答
1018 浏览

vue.js - Vue.js 循环计算属性

我有一个应用程序需要更新两个相互依赖的字段的值。

例如:

这两个“花费”值取决于静态“总”值。我将存储花费的美元,百分比将从最初得出。

现在如果用户更新百分比,我需要更新美元值。如果他们更新美元价值,我需要更新百分比。

到目前为止,它显然不起作用。正在进行循环更新。您如何设计数据以在 Vue.js 中实现此功能?

0 投票
1 回答
638 浏览

hadoop - 在 Hadoop HDFS 中高效地存储每日转储

我相信 Hadoop 的一个常见使用模式是通过加载来自操作系统的数据的常规(例如每日)快照来构建一个“数据湖”。对于许多系统,每天的变化率通常小于 5% 的行(即使更新了一行,也只有少数字段可能发生变化)。

Q:这样的历史数据如何在HDFS上结构化,既节省空间,又高效访问。

当然,答案将取决于通常如何访问数据。在我们的 Hadoop 集群上:

  • 大多数作业只读取和处理最新版本的数据
  • 少数作业处理一段时间的历史数据(例如 1 - 3 个月)
  • 一些作业处理所有可用的历史数据

这意味着,尽管保留历史数据很重要,但不应该以严重减缓那些只想知道昨天收盘时数据的情况的工作为代价。

我知道一些选项,但似乎都不太令人满意:

  1. 将每个完整转储独立存储为新的子目录。这是最明显的设计,简单,并且与 MapReduce 范式非常兼容。我确信有些人使用这种方法,但我想知道他们如何证明存储成本是合理的?假设每天加载 1Tb,那么每年向集群添加 365Tb,其中大部分是重复数据。我知道现在磁盘很便宜,但大多数预算制定者习惯于基础设施与业务增长成比例地扩展,而不是随着时间的推移线性增长。

  2. 仅存储与前一天的差异(增量)。当源系统更喜欢以增量形式发送更新时,这是一个自然的选择(这种思维方式似乎可以追溯到数据以 CD-ROM 形式在系统之间传递的时间)。它更节省空间,但更难正确处理(例如,你如何表示删除?),更糟糕的是,它意味着消费者需要扫描整个历史,“事件溯源”式,才能到达在系统的当前状态。

  3. 将行的每个版本存储一次,并带有开始和结束日期。这种模式被称为“时变数据”等术语,在数据仓库中非常频繁地出现,并且在需要存储历史值时更普遍地出现在关系数据库设计中。当一行发生变化时,更新以前的版本以设置“结束日期”,然后插入以今天为“开始日期”的新版本。不幸的是,这并不能很好地转化为 Hadoop 范式,在这种范式中,只支持追加数据集,并且没有更新行的原生概念(尽管可以通过覆盖现有数据文件来实现该效果)。这种方法需要相当复杂的逻辑来加载数据,但不可否认的是,使用这种结构来消费数据非常方便。

(值得注意的是,每天都在变化一个特别不稳定的字段,以使后一个选项降级到与选项 1 相同的空间效率)。

那么......是否还有另一种将空间效率与易用性相结合的选择?

0 投票
1 回答
80 浏览

time-series - 实验性数据组织 - Elastic Search 会起作用吗?

抱歉,如果这是一个抽象的问题,我会尽力提供更多细节。

我运行“实验”(例如各种软件的测试运行),每个实验都有自己的一组元数据(基本上是键/值对,如开始时间、结束时间、名称、资源基数、系统类型等)和一个或多个与各种性能指标相关的时间序列数据(例如,每隔 10 秒从开始到结束的 CPU 和内存使用情况)。数据量不会很大;每月最多几个千兆字节。

我想将这些数据存储在单个系统中(例如,不是 MySQL 中的元数据和一些专门的时间序列数据库中的性能数据)。elasticsearch 会适合这个吗?我将如何最好地索引数据?

编辑:为了更清楚,这里有一些关于如何组织数据的想法。对于元数据,使用metadata索引,例如实验 aa_12:

将实验名称作为 _id 会使偶尔的更新更容易(我想)。

然后对于与该实验相关的时间序列,使用perfdata如下索引:

所以我可以查询,例如,“在实验 Z 期间给我主机 Y 的指标 X”并使用 kibana/timelion 获取指标图。我现在担心的是perfdata索引可能会增长到包含大量条目(总体上不是很大,但仍然有几十万/百万个条目)。上面说的有道理吗?

0 投票
0 回答
19 浏览

firebase - nosql (firebase) 的数据设计建议

我是 noSQL-Thing 的新手(我使用 firebase Realtime-Database 作为初学者),我正在编写一个 react-js 应用程序来管理会议及其议程点。

会议具有一些属性(名称、计划持续时间、开始时间、...)和议程项目(名称、计划持续时间、...)。

所以,我的第一个直觉是用 AgendaItems 地图制作一个班级会议 - 但地图没有保存在火力基地中。

然后我尝试了一个简单的数组 - 这有效,但我读到“数组在 firebase 中很糟糕”

那么,这里最好的策略是什么?(我知道这可能是一个非常基本的问题)

而且,您会在同一个类中放置更多“高级”功能吗?- 例如:“nextAgendaItem”、“addAgentaItem”来封装这些实现,或者你会建立一个自己的“HandlerClass”女巫有一个会议作为成员

0 投票
3 回答
78 浏览

c - 嵌套类字符串结构中的嵌入与指针

在设计包含文本数据的结构时,我一直在使用两种基本方法,如下所示:

其中 STRING 是一些可变长度的字符串存储类型。指针版本的优点是我可以存储表示数据丢失的 NULL。例如,可能没有为某些地址提供 address2。在嵌入字符串的类型中,我必须使用“空白”字符串,即长度为 0 的字符串。

使用指针(可能)会有更多的代码负担,因为我必须在使用之前检查每个成员是否为 NULL。然而,优势并不是那么大,因为通常也必须检查嵌入式版本。例如,如果我正在打印一个地址,我必须检查一个零长度的字符串并跳过该行。使用指针,用户实际上可以指示他们想要“空白”而不是缺失值,尽管很难看到这样做的用途。

在创建或释放结构时,指针会添加一堆额外的步骤。我的直觉是标准化嵌入式样式以节省这些步骤,但我担心可能存在隐藏的问题。这是没有根据的恐惧,还是我应该出于某种令人信服的原因使用指针?

请注意,内存使用是一个问题,但它非常小。指针版本需要更多内存,因为除了结构之外,我还存储指向结构的指针。但是每个字符串结构平均可能需要 40 个字节,所以如果我存储 4 个字节的指针,那么指针版本可能会多消耗 10% 的内存,这并不重要。可能使用空指针不会节省大量内存,因为大多数字段都已填充。

问题是关于地址而不是字符串

一些受访者似乎很困惑,认为我在询问全局权衡,例如如何最小化我的总工作量。事实并非如此。我问的是如何设计地址,而不是字符串。address 的成员可以有固定的数组,或者在其他情况下没有。就我的问题而言,我不关心容器的后果。

我已经说过,我能看到的唯一问题是使用指针需要更多时间,但我得到了能够存储 NULL 的好处。然而,正如我已经说过的,这种好处似乎并不显着,但也许是出于某种原因。这就是我的问题的本质:拥有这种灵活性是否有一些隐藏的好处,我没有看到并且希望我以后有。

如果你不明白这个问题,请阅读我在下面写的初步答案(经过一些额外的思考),看看我正在寻找的答案。