问题标签 [schema-design]

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 回答
8099 浏览

mongodb - 什么是多语言电子商务网站的高效 MongoDB 模式设计?

我正在设计一个多语言电子商务网站。产品有不同的属性。每种语言的某些属性不同(例如颜色),所有语言的其他属性都相同(例如 SKU)。属性未预定义,例如汽车具有除浓缩咖啡机之外的其他属性。

我想设计这样的数据库模式:

  1. 用语言 y 搜索和表示类别 x 的所有产品很快
  2. 重复数据量低
  3. 我不想使用带有翻译的文件

我正在考虑使用这样的模式:

这个模式有更好的选择吗?使用这个架构会遇到什么问题?

0 投票
1 回答
1319 浏览

database-design - 星型模式建模 - 多对多

当我学习这个范例时,我正在基于 NFL 统计数据构建一个数据仓库——我有以下建模问题

球员可以为不同的球队效力不同的年份,同样的教练也可以在不同的职业生涯中执教不同的球队;球员也可能在不同年份扮演不同的位置(罕见但可能)

模拟不同年份球员、教练和球队之间分配的最佳方式是什么?

我会将不同年份的花名册信息存储在一个维度中吗?例如 DimTeamRoster 将有一个 TimeKey、TeamKey 和 CoachKey(因为一个团队只能有一个主教练)和一个 FactTeamRoster 和一个 TeamRosterKey、PlayerKey、Positionkey

或者我会有一个 FactTeamRoster,它有一个 TimeKey、TeamKey、PlayerKey、PositionKey?但是这种方法是否有意义,因为这个事实表不会真正存储任何度量,它只是存储那一年的分配

每种方法的其他一些可能的解决方案和优点/缺点/正确性是什么?

0 投票
2 回答
7488 浏览

ldap - 人们在 LDAP 目录中使用带有 inetOrgPerson 的 CN

我一直在使用givenName+" "+surnameCN 字段,昨晚我醒来时尖叫着“John Smith 呢?” 我可以想象任何大型组织雇用多个同名人员。所以这当然行不通。人们改用什么?

编辑注:在inetOrgPersonCN 中是 DN 的一部分。

编辑注意:在这种情况下,我预计会增长到数十万个用户条目。

0 投票
2 回答
1906 浏览

mongodb - Mongodb地图减少2个集合

假设我们有用户和帖子集合。在帖子收集中,投票存储用户名作为键。

我们想按 post.Title 分组,找出不同用户年龄的投票数。

我已经搜索并没有找到访问 mongodb mapreduce 中的 2 个集合的方法。有没有可能实现in re-reduce?

我知道在 post 中嵌入用户文档非常简单,但这不是一个好方法,因为真正的用户文档有很多属性。如果我们包含用户文档的简化版本,它将限制分析的维度。

0 投票
2 回答
3168 浏览

mysql - 如何在 MongoDB 中建模多对多关系(对于 MySQL 用户)

我来自一个MySQL背景,并试图绕过我的头MongoDB。特别是,我正在努力概念化我应该如何n:n以“Mongo 方式”为关系建模。

对于这个例子,假设我们有两个collections:usersinterests. 我们需要能够表示或查询数据中的几件事:

  • 用户兴趣
  • 用户的兴趣等级,例如“喜欢”或“不喜欢”
  • 具有特定兴趣的用户
  • 每个利息评级的计数器(可以增加/减少)
  • 兴趣名称

MySQL中,我会创建一个users_interests索引用户 ID兴趣 ID 的表。对于柜台,我会为每种评级类型设置单独的列,并且每次用户对兴趣进行评级/未评级时,都会进行交易以确保计数永远不会错误。

我试过阅读一些架构设计,但无济于事。

你能帮助一个迷失的灵魂找到路吗?

0 投票
1 回答
569 浏览

php - MongoDB 架构设计。得不到我想要的

我认为我的音乐应用程序的架构设计有问题。

我有 3 个集合ArtistsTracksAlbums。和 3 类artistsalbumstracks

文件来自artists

文件来自albums

文件来自tracks

首先是好的架构设计??!我这样设计这个模式是因为多对多的关系,有时曲目有 2 位艺术家,而专辑有 2 位艺术家。

无论如何,我在查询附加到特定曲目的专辑时遇到问题。

假设我在艺术家页面上

  1. 我需要获取所有艺术家的专辑和曲目,所以我这样做:

    /li>
  2. 我需要循环播放所有曲目并获取他们的专辑名称假设这位艺术家有 3000 首曲目我认为这会很慢......

所以我的问题是:这是一个好的架构设计吗?

0 投票
1 回答
1694 浏览

mongodb - 在 MongoDB 中返回自定义字段

我有一个 mongoDB 集合,其中包含一个数组字段,该字段表示用户所属的列表。

我正在使用 *listed_in* 字段来获取成员列表

我还需要查询特定用户并知道他是否是某些列表的成员

在这种情况下,我将获得 *listed_in* 字段及其所有成员。

我的问题是:有没有办法在 mongoDB 中预先计算自定义字段?我需要能够获得这样的字段,user1.isInList1user1.isInList2

现在我必须在客户端通过迭代 *listed_in* 数组来了解用户是否是“list1”的成员,但 *listed_in* 可能有数千个元素。

0 投票
6 回答
27114 浏览

ruby-on-rails - 在 Rails 模型中使用多个 PostgreSQL 模式

我的 Rails 应用程序有一个 PostgreSQL 数据库。在名为“public”的模式中,存储了主要的 Rails 模型表等。我创建了一个“discogs”模式,其中的表的名称有时与“public”模式中的名称相同——这是原因之一我正在使用模式来组织它。

如何在我的应用程序中从“discogs”模式设置模型?我将使用 Sunspot 让 Solr 也索引这些模型。我不确定你会怎么做。

0 投票
1 回答
1497 浏览

database-design - 在 oracle 中为大表设计模式

我有一个用户表、事务表和 user_transaction 表。用户数约为 75,000 应用程序中可能的唯一事务数约为(事务表中的行在 1 到 300 万之间)。user_transaction 是上述两个表的连接,存储用户在什么日期和时间做了哪些事务。所以这个表对于 1 年的数据来说将是巨大的(我们将从表中清除活动数据并在 1 年后将其归档)年)。我们预计计数约为 50-6000 万行。这将是年底的最终数据大小。

我会说平均大小约为 3000 万条记录。此外,每晚导入作业都会更新所有这些表,这是在这些表中完成插入时的唯一部分,我们只能从我们的应用程序访问数据(使用选择查询)。

设计连接表以更快地从庞大的事务表中检索的最佳方法是什么?我们在表中添加了许多字段以对其进行反规范化并减少连接,并且几乎所有数据都仅在事务和 user_transaction 表中可用。

如果我们想对表进行分区,我们如何进行分区?该应用程序用于最频繁地查询更新的数据。

我们正在考虑按月对事务表进行分区,这样我们每个月就会有 1 个表。

我们考虑的其他选项是每周 1 天有 7 个表,但考虑到我们使用的是休眠,这大大增加了查询的复杂性。

我们如何设计大约 6000 万的巨大桌子

应要求提供更多详细信息:
我将不得不从模式中制作图表,同时这里还有更多信息:关系并不复杂,它大约有 4 个表:用户、事务、users_transaction、资源表。user_transaction 是包含所有其他三个表 id 的连接表,这将是一个巨大的表,因为它将在每个 id 上都有单独的条目,并且还会根据时间戳进行单独的条目。
目前该应用程序的用户数量非常少,例如 <20。(但将来可能会增长)。
表格的主要消费者是:
1)每周自审报告从这些表格中作为包含过去一周用户活动详细信息的电子邮件发送出去。这些将(最终)发送给 75,000 名用户,生成报告并为 1 个用户发送电子邮件目前大约需要 1 分钟(试验阶段的测试)。我们需要认真提高这方面的性能,以使每封电子邮件的时间少于 5 秒。这是一个在晚上运行的后端作业(最多应该消耗 3-4 小时)
2)包含图表的仪表板,这些图表显示了这些表格中的交易汇总视图。这些查询根据日期范围内的各个字段运行和汇总数据。因此,如果所有其他字段都相同(用户 ID、资源 ID、资源事件 ID、位置),我们计划汇总 user_transactions 表存储每天(不包括时间)的计数。
并根据月份对这些汇总表进行分区。(每个月一个)
需要注意的是:该解决方案应该适用于所有数据库(MySQL、DB2 等),而不仅仅是 oracle。

问候, Priyank Devurkar

0 投票
2 回答
4651 浏览

mysql - MongoDB 论坛模型

所以我正在为一个论坛创建一个模型。想想线程和一堆评论在哪里。线程有很多评论。在 RDBMS 世界中,我会这样设计

现在,我想,有了这个,数据/模式将遵循许多正常形式之一(我忘记了)。我认为这是最明智的做法。然而,当谈到在 NoSQL 世界 (MongoDB) 中执行此操作时,设计这种关系的最佳方式是什么?我几乎可以用 RDBMS 的方式做到这一点,但我会失去使用嵌入式对象的优势。出于某种原因,我更倾向于这样做

我想这就是我要问的最明智的方法是什么。为什么?