问题标签 [denormalized]
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.
arrays - 如何对这些数据进行非规范化以提高其在 MongoDB 中的效率?
所以,我有一个 PostgreSQL 数据库,我决定将它迁移到 MongoDB 以提高性能。我最终构建了以下模型:
两个主要文件,Departamento 和 Distribuidora。在 Departamento 内部,我有一个名为 Funcionarios 的数组,它代表在该部门内工作的员工。
然而,在 Distribuidora 内部,情况要复杂一些。我有一组成对的文档,它们代表一个产品和它们分布的城市。这曾经是我的 RDBMS 中的三元关系,因此了解哪些产品和城市对与 Distribuidora 文档相关非常重要。如果这还不够,每个产品都有一个引用 Departamento 文档 (departamento_id) 的 ID。
我的问题是这个模型缺乏性能优化。要在数组中的元素中进行复杂的查询,我必须重复展开操作,而且我还必须旋转数据以便从两个集合中获取信息,因此查询最终会非常缓慢。
因此,我想尽可能多地对这个模型进行非规范化,最好是在没有数组的单个文档中,但我想不出一个合适的方法来做到这一点。有人可以帮我完成这个麻烦的任务吗?提前非常感谢。
eventual-consistency - 如何在 NoSQL 中保持非规范化的一致性?
假设我有两个集合,每个集合的值彼此独立,但每个集合都相互关联。它们是photos
和users
。用户和照片之间存在一对多的关系。
非规范化数据的示例:
photos
当用户“AABC”将名称从“Donna Smith”更改为“Donna Chang”时,如何确保与集合中的文档保持一致?
作为非事务性的,我理解一致性将是最终的。
一个简单的(天真的)实现可能会在更改用户“AABC”后触发后台作业,以更新 user_id =“AABC”的所有照片。在单个更新的情况下,这会很好。但这是一个多用户环境,并且会同时向各个方向进行更新。例如,如果照片后台更新中途将“Donna Smith”更改为“Donna Chang”,用户“AABC”的名称又改回了“Donna Smith”怎么办?
在网上搜索,我看到很多关于如何对非规范化数据建模的讨论。但是任何关于如何维护它的讨论似乎都是微不足道的,因为“你还需要更新所有相关记录”。在这种情况下,是否有任何 NoSQL 系统可以为您完成繁重的工作?任何框架或实用程序?
我已经阅读了Thomas Wanschik关于“物化视图”主题的优秀博客文章以及针对此场景的背景更新。但我担心的是:
- 后台作业必须延迟超过允许更新的最长时间的预定量(我如何确定该延迟?如果操作需要更长的时间怎么办?),并且;
- 这是我迄今为止找到的关于实际解决方案的唯一讨论。NoSQL 确实很重要,为什么我没有看到更多关于这个的讨论?我错过了什么?
mysql - 对非规范化数据进行简单的 SELECT 查询
电影镜头数据具有非规范化类型:
是否可以编写一个简单的 SQL 来获取规范化的电影类型:
假设我在 MySQL 或 PostgreSQL 中这样做。
cassandra - Cassandra 数据建模中的部分非规范化与非规范化?
我读过这篇关于 Cassandra 数据建模的文章。但我不明白在哪些情况下更倾向于部分去规范化?我读过其他一些文章,它们都使用了非规范化(不是部分)。
r - R-Script DeNormalising 数据帧和 NA 的中值替换
我正在将 csv 文件中的一组主题响应时间读入数据框中,需要对其进行反规范化,如下所示:
- 将所有列折叠为两列,然后
- 将 NA 和零值替换为原始响应时间的中位数。
实际输入:
预期输出:
我已经部分使用:
但是,它在一点上失败了:
- 不是惯用的(矢量化的)。
请指教?
sql - 在一列中减去并在其他列中添加的最简单方法
基本上我正在尝试将存在从一个寄存器移动到另一个寄存器,从原点减去并将其添加到命运中。我有一张这样的“股票”表:
国家城市价值
我收到了一份结构如下的“运动”文件:
数量 originCountry originCity endCountry endCity
有没有办法在不创建两个规范化表和几个查询的情况下做到这一点。
编辑
答案应该是这样的:
数量 originCountry originCity endCountry endCity
负数和业务规则不相关
python - Python:最小的非规范化双重错误
使用 WinPython 3.4.4.2,我得到以下奇怪的结果:
也就是说,与 相同2**-1074
,而2**-1075
在双浮点表示中应该为零。在地址https://www.python.org/shell/使用 Python 3.5.1 时,我得到了预期的 0。
有人可以帮助我了解发生了什么问题吗?
谢谢
mysql - 数据库非规范化?
只是为了提供一些上下文,我正在使用 Pusher(云上的 Websocket 服务)开发一个实时聊天应用程序,其中每个消息都记录在我的服务器中,然后再推送到 websocket 服务器,然后将数据推送到客户端。所以我正在使用 MySQL 来存储消息。
所以一个这样的表是我的消息,它有以下字段id,chat_payload,message_time,user_id,room_id
。
为了填充初始聊天室,我需要检索消息历史记录,其中每个消息对象都将包含username,useravatar,chat_payload,timestamp
.但它们分别useravatar,username
存储在users, user_meta
表中。因此使用连接获取运行中的数据显然看起来很昂贵,因为user_meta
表增长非常快。而且很明显在表中存储用户名、用户头像messages
似乎不正确,因为它会带来更新问题。
因此,考虑到上述情况,任何人都可以建议一个合适的数据库/应用程序设计吗?
firebase-realtime-database - AngularFire:如何通过扩展服务和使用 $$updated 私有方法来更新 $firebaseArray
我的数据库中有两个单独的 Posts 和 Authors 列表,每个 Post 都包含一个 authorId 来引用相应的作者。
以下方法通过系统地包含每个帖子的作者姓名来帮助我检索整个帖子列表:
PS:FirebaseFactory 只是 firebase 方法的包装器。
然后我打电话
在我的控制器中获取完整列表。这很好用。
我正在为 $$updated 方法应该包含什么内容而摸不着头脑:当添加新 Post 时,列表会按预期更新(通过 $$added 方法)。但是,当 Post 数据(例如帖子标题)发生变化时,我的列表不会更新,因为我目前在 $$updated 方法中返回 false。
问题:$$updated 方法中应该包含什么,以便当 Post 数据发生更改时,我的列表会相应更新(并进一步返回作者的姓名!)。谢谢
sql-server - 如何对这个 SQL Server 表进行非规范化?
我有一个非常宽的非规范化表(如果你可以这样说),选项列达到 100+
问题是我们有动态查询试图确定选项列,然后在其中找到选项值
IE
理想情况下,我希望将其转换为这样的东西
我遇到的问题是如何通过查询将该宽表转换为两个表结构,因为它有很多列和行,我无法手动规范所有这些。
是的,我也理解理想情况下,第二个表需要进一步规范化,以将 Option1...Option3 保存在单独的表中,并将 Option1..A1 映射保存在单独的表中,但这是一个开始......
希望这个简单的例子能阐明以下事实
- Option1...100 列需要在单独的表中进行规范化
- 映射到值的选项列每年都会发生变化
有什么想法吗?