问题标签 [non-relational-database]

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 投票
2 回答
23918 浏览

mongodb - 对于 N:M 关系,在 MongoDB 中推荐的级联删除等效项是什么?

假设以下“模式/关系”设计,使用级联删除操作处理删除的推荐做法是什么?

关系模式:

MongoDB:

考虑到学生注册课程的这种经典设计,在使用 MongoDB 时,在学生中包含课程集合(反之亦然)似乎是一个合适的数据模型(这对于关系/注册表来说没有任何意义)。但是来自关系世界的我应该如何处理删除课程的语义?也就是说,当一个课程被删除时,所有的“注册”记录也应该被删除。也就是说,我应该从每个学生记录的集合中删除课程。看起来我必须触发 2 个查询:一个用于删除课程,然后从每个学生的收藏中删除它。有没有办法让一个查询来执行这种“级联删除”之类的语义而无需额外的查询?数据模型需要改变吗?

注意:对于所有其他用例,上述数据模型工作得很好:

  • 删除学生=>只需删除该学生以及随之删除的相关课程集合。
  • 愿意放弃课程=>的学生只需将其从学生课程集中删除即可
  • 添加学生/课程=>本质上只是将其添加到相应的“表”中。

唯一棘手的事情是处理课程的删除。我应该如何在 MongoDB 中处理这种情况,因为我来自关系背景并且无法弄清楚这一点。

0 投票
1 回答
356 浏览

mongodb - 如何正确使用像 mongo db 这样的键值数据库

我听说很多大公司都在使用像 mongo db 这样的非关系型数据库。我想知道人们如何以及为什么在工业规模上使用它们。我正在设计一个类似 ebay 的项目。我想弄清楚什么最有效。

0 投票
1 回答
230 浏览

mysql - 如何在 XPages 中存储/检索大量数据集?

目前,我们正在开发一种解决方案,我们希望跟踪(用于分析)用户点击/打开的文章以及给定文章列表中的“喜欢”的文章。随后,用户需要能够在他/她的个人用户配置文件的部分中查看并重新单击/打开文章(不需要搜索)。每天大约有 100 篇新文章发布。每日访问者(用户)的增加(!)数量约为每天 2000 人。这些文章当前存储和维护在 MySQL Db 中。

我们可以在 MySQL Db 中为每篇阅读/“喜欢”的文章创建一条新记录。“最坏情况”会每天创建 (2500 * 100 = ) 250000 条记录。当然,这不会持续太久……那么在给定场景的情况下,您将如何在 XPages 中存储(处理)它?

阅读关于 MIME/Bean 的“文章”后我的想法:)将“阅读文章对象”保存在一个范围内并(定期)将它们存储/保存为用户配置文件文档中的 MIME 怎么样?每天仅创建 100 个 articleObjects(或每年 36500 个)。此外,可以提出一种机制,随着时间的推移,articleObjects 从一个字段转移到另一个字段,因此活动范围将仅包含上个月左右的“读取 articleObjects”。

0 投票
0 回答
394 浏览

nosql - Cassandra:复杂查询的列族?

每个消息来源都告诉我,在 cassandra 中支持复杂查询很复杂,您通常需要创建一个新Column Family的来支持特定查询(例如关系数据库中的 JOINS)。

我不明白为什么您实际上需要另一个列族进行查询。

IBM 在此处演示了一个示例:http: //www.ibm.com/developerworks/library/os-apache-cassandra/

该系统具有Books以下列:Author, Price, tag1, tag2, tag...

如果我想执行诸如“获取所有写过带有 sci-fi 标签的书籍的作者”之类的查询,他们建议创建一个名为TagsToAuthor. 为什么这是必要的。我相信您可以在不创建新列族的情况下执行以下 2 个解决方案:

  • 创建一个Tag列族,列:Book1, Book2, Book..., Author1, Author2,Author...
  • 创建一个Tag列族并创建一个BookTag包含列的列族:book_id& tag_id。虽然 Cassandra 没有连接功能,但您可以简单地从Tag列族中获取标签 id,然后通过查询获取 book_id 的列表BookTag,然后使用这些 id 进行查询Book。就像在普通的关系数据库中一样。

这些解决方案有什么缺点?

0 投票
3 回答
1252 浏览

graph - Neo4j - 在图中存储医学症状

我正在使用 Neo4j 图形数据库来存储医学症状和疾病。其背后的目的是根据用户输入系统的症状推荐一个人可能患有的疾病。现在我已经存储了以下各种症状。医学症状

这是一个非常基本的图形结构,我通过密码查询匹配模式,例如发烧、头痛和流感的原因相交,从中检索疾病。我想要实现的是构建一个涉及位置和年龄因素等的复杂结构,并编写各种算法以通过有效遍历来检索连接最多的节点。我无法在互联网上找到如此复杂的结构,所以任何建议都将不胜感激。尽管它不像问题那样编码太多,但请提供一些建议,因为它只是一个大学项目,我必须在这方面走得更远。

0 投票
1 回答
1433 浏览

sql-server - 我可以将实体框架与非关系 SQL Server 数据库一起使用吗?

我正在与一个为慈善券公司经营者开发桌面应用程序的人合作一个项目。他们的客户拥有账户,将钱存入账户,并向慈善机构写慈善券(有点像支票)。

他希望我写一个网站,慈善机构和客户都可以登录并查看他们的帐户详细信息,发放的代金券等。

由于大部分数据将来自他的应用程序到我的网站,我们同意在我的数据库中使用他的主键 ID,因此很容易匹配数据。

我们对此非常感兴趣,而且我发现他是关系数据库的坚定反对者。他的数据库根本没有任何外引用键,只有表中的 ID。他对每个表进行单独查询以查看相关数据是否存在。

我想使用实体框架,但不确定是否可以,因为我无法确定他发送给我的数据是否完整。例如,他可能会向我发送优惠券的详细信息,其中将包含客户 ID 和慈善机构 ID,但客户可能尚未发送,因此优惠券上的客户 ID 不会存在于客户表中。

有什么想法我能做什么?我的表之间不能有外部链接,因为这会在遇到不完整数据时引发错误,但如果我没有任何链接,那么我就失去了使用 EF 的全部好处。

到目前为止,我唯一的想法是让表不相关,然后为实体添加部分类,其属性看起来像导航属性,但这将检查“外部”数据是否存在,如果存在,则返回它。

这可能有效,但似乎需要付出很多努力。关于我如何处理这种情况的任何更好的建议?

0 投票
1 回答
652 浏览

c# - 缺少关系数据时可以使用实体框架吗?

我正在创建一个网站,数据将从一个外部应用程序发送,该应用程序具有一个充满数据的数据库,网站只需要其中的一部分。“部分”是指每个表中的一些行,但不是全部。

手头的业务是管理慈善券的业务,他们有客户,他们有账户。慈善机构可能希望登录该网站并查看有关支付给他们的款项的信息,而客户可能希望登录并查看有关其帐户的信息。

但是,想要在线登录的客户数量仅占拥有帐户的客户的一小部分。我们希望避免上传所有客户和慈善机构信息,因为这将是大量数据,必须保持最新,而且大部分不会被使用。

当我们有一张已发行的代金券,但客户的账户中没有足够的钱来支付它时,就会出现问题。在这种情况下,代金券被保留,等待客户存款。慈善机构希望查看持有的代金券列表,但不会显示客户姓名,他们只看到代金券的详细信息,例如日期、金额和编号。

理想情况下,我希望网站数据库是完全相关的,但这会导致数据丢失的问题。例如,如果我们上传持有凭证的详细信息,而客户的详细信息不在网站数据库中(因为他们无法通过网站访问),那么作为外键引用,插入到 HeldVouchers 表将失败客户表将指向不在数据库中的客户。

我可以使所有外部引用都可以为空,但这仍然没有帮助,因为客户 ID 不会为空,它将包含主数据库中客户的 ID。

我可以在上传时检查,如果为不在数据库中的客户上​​传了持有的凭证,那么我可以将 CustomerID 设置为空。这很好,但如果该客户随后想要访问该网站,并且我们上传了他的详细信息,那么我们将不得不更新 HeldVouchers 表。这将导致大量额外的工作,以及大量的额外上传。

有人知道如何处理这个问题吗?到目前为止,我唯一的想法是使 Web 数据库完全非关系(我真的不喜欢这样做),然后将扩展方法添加到将模拟 EF 生成的实体的实体中,除非它们会直接转到适当的 DbSet 并拉出与“外键”引用匹配的任何实体。

我尝试了这个,并提出了一个有效的通用扩展方法,但至少有两个非常严重的缺点......

(此方法返回相当于一个集合的导航属性。我有一个类似的查找单个实体的方法)。

如果你有一个 Charity 对象(巧妙地命名为“charity”),并且想要获得持有的代金券,你可以做这样的事情......

第一个缺点是,我能看到允许将 Func 传递到扩展方法中并且不让 Linq-To-Entities 抛出杂乱无章的唯一方法是在应用 Func之前枚举 DbSet 。如果那里有很多数据,这可能会显着减慢查询速度。

也许更严重的(因为我不认为性能是一个主要问题)是扩展方法需要一个可以工作的上下文。目前,我将实体放在与 EF 模型不同的项目中,因为这允许我引用解决方案中任何项目的实体,而这些项目不需要引用模型的项目。这有助于保持层分离,并允许测试等。

但是,如果扩展方法需要上下文,则实体项目需要对模型项目的引用,这会导致循环引用(因为模型需要了解实体)。我不能将扩展方法放在模型项目中,因为那样我必须从每个想要使用实体的项目中引用它,这违背了将实体拆分到自己的项目中的整个目的。

有人有什么想法吗?抱歉,这是一个有点长的问题,但我想确保我清楚地解释了这个问题。

0 投票
1 回答
1317 浏览

python - 如何为 1.6.1 安装 django non-rel

我正在使用 django 版本 1.6.1,python 2.7.5,并使用 mongodb 2.4.6。所以我只需要在 django 设置文件中设置 mongo 引擎。为此,我必须安装 django 非 rel 包。但我仅找到 django 1.5 的非 rel。如何为 1.6.1 安装 djnago 非 rel

我找到了 django non-rel 1.5 的这个链接

http://django-mongodb-engine.readthedocs.org/en/latest/topics/setup.html

0 投票
2 回答
19852 浏览

mongodb - Mongo db 在另一个使用 $in 的查询中使用查询结果

我在 mongo db 中有以下模型:

用户集合

地址集合

现在我想获取 20 岁以上用户的所有地址。我的想法是查询 20 岁以上用户的所有 id,并使用此查询的结果使用 $in 运算符查找地址。

我的问题是,有没有办法把它变成一个查询?有没有更好的方法来查询这个?(obs:这只是一个例子,我的问题是我无法将地址嵌入到用户中)

0 投票
2 回答
269 浏览

python - python 有非关系型数据库吗?

我正在搜索类似 sqlite 但不是关系的东西。换句话说,我想使用三重存储(一组宾-谓-主三元组)而不是表。这意味着我想使用 SPARQL 查询而不是 SQL。

想到的第一个想法是RDFLib。但是,我发现此选项存在两个问题:

  1. RDFLib 不是数据库,因此,它不是为并行处理而设计的(例如,由许多 Web 用户引发的并行请求)。如果两个用户同时尝试在三重存储中添加或删除,可能会导致不一致。
  2. RDFLib 旨在与 RDF 一起使用,RDF 是三重存储的特定实现(语法)。例如,每个宾语、谓语和主语都必须有 URI,而我没有。在我的三重商店中,我希望有这样的三胞胎:(("Washington","is capital of", "USA")所以,没有 URI)。