问题标签 [document-oriented-db]
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.
ruby-on-rails - 面向文档或图形数据库
这是一个 RoR 项目。
我们要存储用户活动,例如上传照片、投票给某人、关注某人等。列出活动时,我们还需要列出您朋友的活动。那么,在这种情况下使用什么更好:面向文档的数据库(couchdb、mongo db)、图形数据库(neo4js),或者其他方法?
感谢您提前帮助伙计们:)
nosql - ARM Debian 的文档数据库
最近我开始编写一个应用程序,它的文档数据库似乎是数据存储的完美匹配。
我想使用 MongoDB,但后来我发现我的“主机”没有合适的包(Sheeva Plug with debian)。
我在网上寻找与 mongoDB 类似的东西,但找不到令人满意的结果。
任何人都知道在 ARM 上运行的任何文档数据库吗?欢迎添加 Python 模块。
附言。CouchDB 是不行的。我知道 git 上有非 x86 Mongo 包,但它也不是。
php - MySQL、Mongo DB 和 Apache Solr
我们想建立一个具有高流量和数据的高度可扩展的网站(想象一下 youtube 或 facebook)。我们计划在 PHP 和 MySQL 中进行开发。
我们可能需要存储数以百万计的数据,还需要更快地搜索。我们听说我们必须使用面向文档的数据库和索引服务器来优化性能。我们正在考虑将 Mongo DB 和 Apache Solr 作为选项。
有人能解释一下这些技术有何不同吗?我们知道 Apache Solr 用于优化搜索性能,但这是否意味着在 MongoDB 中搜索数据很慢。
我们对这些技术的实现有点困惑。有人可以向我们解释解决方案吗
database - 有没有比在 SQlite 数据库中查询 HTML 数据更有效的方法?
也许我的问题将被关闭,因为它不够“建设性”,但无论如何......我已经搜索过答案,但其中大多数都太笼统了。对于我的硕士论文项目,我必须抓取大量(即数千个)网页并将它们完全存储在数据库中。这是必要的,因为我必须以不同的方式分析它们,尝试几种机器学习算法并以不同的方式解析它们。目前,我正在为此使用 SQlite 数据库,并结合 Django 作为首选的 Web 框架。
我已将单个网页的整个 HTML 数据放入 DjangoTextField
中,即对于每个网页,数据库表中都有单独的行,所有网页的内容都存储在表的单个列中。现在的问题是查询和排序数据,尤其是迭代数据非常慢。到目前为止,我已经抓取了大约 1000 个网页,并且数据库文件的大小已经超过 2 GB。此外,我的 4 GB RAM 被完全填满,我的电脑(Macbook Pro 2009 年中,Core2Duo 2.26 Ghz,500 GB 硬盘,OSX 10.8)变得无响应。如果我限制要预缓存的项目数量,那么处理数据会变得更慢,因为查询数量会增加。由于我必须抓取更多数据,因此我当前的设置无法很好地扩展。
我现在的问题是: 如何更有效地存储我的 HTML 数据,以便更快地查询数据?切换到另一个 RDBMS(如 MySQL 或 PostgreSQL)是否有意义?或者你会推荐一个面向文档的数据库系统,比如 MongoDB?到目前为止,我只有使用 SQlite 的经验,所以我真的不知道该使用什么。随着我硕士论文的截止日期越来越近,我没有时间尝试许多不同的设置。
为了帮助您帮助我,这里有一些进一步的要求:
- 与 SQlite 相比,查询大型 HTML 数据的性能更高,同时不会占用我计算机的所有内存(工作负载无法分配到其他计算机)
- 与 Django 或多或少的良好集成
- 这只是研究工作,因此它永远不会在生产环境中运行,而只能在我的计算机上运行(也许也在我教授的计算机上)
如果你能帮助我决定我应该走哪个方向,那就太好了,因为我对这些巨大的可能性感到不知何故迷失了方向。非常感谢您!:)
nosql - 在无模式数据库中迁移数据格式的好方法是什么?
如果您使用无模式数据库(特别是面向文档的数据库,如 CouchDB、Couchbase、MongoDB)并且想要更改特定对象的数据表示格式,您可能会使用旧格式保留现有记录并以新格式创建新记录。它被宣布为无模式数据库的主要优势之一(我认为是因为您可以避免停机)。另一方面,处理多种格式的同种数据既不方便又低效。那么在无模式数据库中将数据从一种格式迁移到另一种格式的好方法/策略是什么?
database-design - 与 NoSQL 数据库的多对多关系
我想使用 NoSQL 数据库为我的 node.js 应用程序实现分类结构(地理术语)。我有一个与 MySQL 相似的分类结构,但现在是前进并学习新东西的时候了,所以我决定尝试不同的方法并为我的测试应用程序使用 NoSQL(面向文档)。分类结构很简单 - 有五个不同的级别:国家(即英国)→ 地区(英格兰)→ 县(默西塞德郡)→ 城市/城镇/村庄(利物浦)→ 城市的一部分(Toxteth)。
显而易见的选择是使用树形结构,但细节在于细节——历史上一些城镇属于其他县。这个想法是用这些术语标记出生在某些城市或城镇的人,然后用地理标签过滤他们,所以我必须尊重利物浦或曼彻斯特(以及其他)在某些人出生时是兰开夏郡的一部分这一事实. 否则,任何用户使用我的地理过滤器获得的结果都是不正确的。
示例:John Doe 于 1957 年出生在布莱克本(兰开夏郡)。保罗·布朗于 1960 年出生在利物浦(兰开夏郡,现为默西塞德郡)。乔治亚·多伊 (nee Jones) 5 年后出生在威勒尔(柴郡,现在的默西塞德郡)。他们的儿子林戈于 1982 年出生在利物浦(当时的默西塞德郡)。
约翰出生于兰开斯特,保罗是兰开斯特和默西塞德,乔治亚同时来自柴郡和默西塞德,林戈来自默西塞德。所以当我按县搜索时,它们应该相应地分类。但是,由于遵循国家现代结构的简单一对多结构,它们永远不会被过滤掉。
如何使用 NoSQL(首先是面向文档的)解决方案来实现尊重其结构复杂性的集合?我用谷歌搜索了它并对 stack* 进行了一些研究,但仍然不知道下一步该做什么。在我看来,有几种可能的方法可以解决它:
使用类似 SQL 的数据结构:
/li>使用带有一些引用的树结构:
/li>使用没有引用的树结构(一对多)并手动将“alternate parent”标签添加到文档中:
/li>坚持使用 SQL。
- 尝试实现无数据库分类。
请给我关于这件事的建议。我是任何 NoSQL 的新手(目前我没有设计过这样的数据库),所以对我来说有一个真正的设计问题。
而且我是堆栈的新手*,所以如果我在这篇文章中做错了什么,请随时纠正我:) 谢谢!
编辑 我选择@Jonathan 回答作为解决方案。我认为它更适合我的需求(将有其他文档存储在我的数据库中并用这些术语标记它们),尤其是 @Valentyn 建议的 mapReduce 功能。
但是,如果您的应用程序不需要文档集合,@Philipp 建议的图形数据库(基于关系而不是文档)可能是最好的解决方案。
mongodb - 关系数据库与列式数据库和文档数据库——它们不是一回事吗?
我知道面向文档的 NoSQL DB 是 KV 模型的“扩展”,因为它们允许您查询的不仅仅是单个查找键。但是一旦某个东西是“文档”,我觉得它已经包含了一个关系模型:
对我来说,我看不出这个 JSON 与一个json_objects
带有fizz
andbuzz
字段的表以及与第二个表的外键关系之间的区别widgets
。
像 Cassandra 这样的“柱状”数据库听起来就像是直接的关系/表数据库。
所以我问:面向文档和面向列的 DB 有什么不同,以及它们的区别(与 RDBMS 不同)是什么?它们最适合解决哪些问题,使它们在某些情况下优于关系数据库?提前致谢!
mongodb - MongoDB 中的高可用性
大家都说mongoDB是CAP定理中的CP!但是使用主从复制,它也具有高可用性(如果主节点失败,其余成员将自动尝试选择新的主节点)。我的问题是,在哪些情况下(以及如何)它可以具有 AP(具有最终一致性)?
database-design - 关于设计文档更改、版本控制和合并数据库的方法的建议
我的任务是开发一个跟踪文档更改、版本和合并的 Web 应用程序。以下是涉及的细节:
- 机构/组织详情
- 立法细节
- 文件详细信息(包含机构和立法详细信息)
要求:
- 文档可以被删除、简化、修改、删除和与任何文档合并。机构和立法也是如此。
- 当文件正在进行审查或机构/法规被删除、更改或合并时,就会发生变化。
- 必须跟踪所有这些更改,并且用户必须能够查看对上述所有项目的历史更改。
我最初的想法是使用邻接列表和每个文件、机构和立法的版本,但我想探索解决这个问题的其他方法。
我欢迎所有 RDBMS 或非 RDBMS / NoSQL 解决方案或建议。
TIA
nosql - NoSQL 数据库之间的差异
NoSQL 术语有 4 个类别。
- 键\值存储
- 面向文档
- 图形
- 面向列。
从我的角度来看,所有这些数据建模都有相同的定义,有什么区别?
Key\value 数据库以类似于 OOP 中的对象的结构维护数据。访问数据是基于唯一键。
面向列是一种类似于键\值的方法!但是在 key\value 中,您无法通过查询访问 value。我的意思是,查询是基于键的。
比较 2 个不同类别的第一张和第二张图片。
面向文档将数据存储在集合中,例如行。访问数据是基于唯一键。集合存储数据,如键\值。但是,您可以按值访问数据。
如您所见,在这 3 个类别中,我们定义了一个唯一键以指定唯一对象和一些键\值对以获取更多信息
图 db 有点不同。
那么,定义和现实世界有什么区别?