问题标签 [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 投票
23 回答
46152 浏览

database - 什么是非关系数据库的例子?它们在哪里/如何使用?

我一直在使用关系数据库,但直到最近我才意识到必须有其他类型的关系数据库。

有哪些非关系数据库的例子,它们在现实世界中的哪些地方/如何使用?为什么你会选择使用非关系数据库而不是关系数据库?

编辑:答案中还提到了另外两个类似的问题:

0 投票
8 回答
11567 浏览

sql - 下一代数据库

我正在学习传统的关系数据库(使用PostgreSQL)并进行一些研究,我遇到了一些新型数据库。CouchDBDrizzleScalaris等等,下一个需要处理的数据库技术是什么?

0 投票
7 回答
53758 浏览

database - 为什么我应该使用基于文档的数据库而不是关系数据库?

为什么我应该使用像 CouchDB 这样的基于文档的数据库而不是使用关系数据库。是否存在基于文档的数据库比关系数据库更适合的典型应用程序或领域?

0 投票
9 回答
3450 浏览

python - 可移植的非关系数据库

我想尝试/玩弄非关系数据库,最好的解决方案是:

  • 便携,这意味着它不需要安装。理想情况下,只需将目录复制粘贴到某个地方就可以了。我不介意第一次使用时是否需要编辑一些配置文件或运行配置工具。
  • 可从 python 访问
  • 适用于Windows和Linux

你有什么可以推荐给我的?

本质上,我希望能够将这个系统安装在我几乎没有用户权限的共享 linux 服务器上。

0 投票
4 回答
3952 浏览

performance - GDBM 的替代品或继任者

我们有一个GDBM键值数据库作为负载平衡的面向 Web 的应用程序的后端,该应用程序是用 C++ 实现的。应用程序提供的数据变得非常庞大,因此我们的管理员已将 GDBM 文件从“本地”存储(在网络服务器上,或非常靠近)移动到大型、共享、远程、NFS 挂载的文件系统。

这影响了性能。我们的性能测试(在测试环境中)显示页面加载时间从数百毫秒(对于本地磁盘)跳跃到几秒(通过 NFS、本地网络),有时甚至高达 30 秒。我相信问题的很大一部分是应用程序从 GDBM 文件中进行了大量随机读取,并且这些读取比 NFS 慢,这在生产中会更糟(前端和后端甚至它们之间的网络硬件更多)并且随着我们的数据库变得更大。

虽然这不是一个关键应用程序,但我想提高性能,并提供一些可用资源,包括应用程序开发人员时间和 Unix 管理员。我的主要限制是时间只有几周的资源。

在我看来,我的选择是:

  1. 通过调整参数提高 NFS 性能。我的直觉是我们不会从中得到太多,但我以前错了,我对 NFS 调优并不是很了解。

  2. 移动到不同的键值对数据库,例如memcachedbTokyo Cabinet

  3. 用其他一些协议替换 NFS(iSCSI 已经提到,但我不熟悉)。

我应该如何解决这个问题?

0 投票
4 回答
341 浏览

perl - Perl 中是否存在 DBI 的非关系等价物?

Perl DBI模块让我可以透明地连接到许多不同类型的 SQL 数据库。非关系键值对数据库是否有等效的 Perl 模块?

例如,一个接口可以让我开始使用 BerkeleyDB(甚至只是 Perl 哈希?)但切换到 memcachedb 或 CouchDB 之类的东西,甚至是 Amazon SinmpleDB 或 Google AppEngine Datastore 提供的云数据库。

(这是 Tie::Hash 所做的吗?在这种情况下,我在哪里可以找到实现的摘要?)

0 投票
4 回答
592 浏览

mysql - 数据库问题:将简单的关系表更改为非关系表?

我有一个在 MySQL 数据库上运行的 Web 应用程序(正在开发中)。我正在考虑将我的应用程序迁移到 Google App Engine,并希望更好地了解如何将我的简单关系数据库模型转换为非关系方法。

我是一个长期的关系数据库人员,我没有使用 BigTable 等基于列的数据库的经验。万一谷歌也支持关系数据库的小型部署,我想说明我的问题是一般性的,而不是谷歌特有的——我想了解如何在非关系数据库中表示简单的关系模型。

我的数据库(简化)如下:

我有很多项目,每个项目都有一个名称和 ID。每一项都有多个属性,每个属性都有几个参数(我只说了每个属性的名称和“重要性”,但还有更多)。我有数千万个项目,每个项目都有数百个属性。

使用场景:我收到一个 ItemName 作为输入,在 items 表中查找它的 ID,并通过该 id 获取所有属性。然后我对属性列表(在内存中)进行一些分析,并返回一个结果。

90% 的工作是基于参数的查找,这(如果我理解正确的话)是非关系数据库的痛点。

推荐的方法是什么?

0 投票
3 回答
369 浏览

ruby - 您如何将关系实体表示为 BerkeleyDB 中可检索数据的单个单元?

BerkeleyDB是 Ruby 哈希表或 Python 字典的数据库等价物,但您可以为单个键存储多个值。

我的问题是:如果你想在这样的存储结构中存储一个复杂的数据类型,你该怎么做呢?

在一个普通的关系表中,如果你想表示一个人,你可以创建一个包含特定数据类型列的表:

当它像这样写出来时,您可以看到如何将一个人理解为一组键/值对:

将人员分解为单独的键/值对(name="john")很容易。

但是为了使用 BerkeleyDB 格式来表示 Person,您需要某种方式从其组成键/值对中重新组合 person。

为此,您需要强加一些人为的封装结构来将 Person 作为一个单元组合在一起。

有没有办法做到这一点?

编辑:正如 Robert Harvey 的回答所表明的,BerkeleyDB的Java 版中有一个实体持久性功能。不幸的是,因为我将使用Moneta从一个 Ruby 应用程序连接到 BerkeleyDB ,所以我将使用标准版本,我认为在没有这种支持的情况下,我需要创建一个自定义解决方案。

0 投票
1 回答
313 浏览

data-warehouse - 非关系型数据库建模工具?

大家好,请推荐一些您在 DW、DataMart、BI 和非关系建模上成功使用过的工具。自动创建雪花模式、维度和事实表的示例。这些工具让您熟悉图表和代理键,并且可以选择导出或连接到 SQL Server 2008。

谢谢

0 投票
2 回答
563 浏览

database - C++ 的非关系型数据库

我正在考虑开始一个非常明显需要持久存储的项目。当我偶然发现一篇简要提到 CouchDB 的文章时,我正要不情愿地决定使用 RDBMS。自从我上次查看以来,似乎在数据库技术方面发生了一些进步,所以我想在进入数据库之前先在这里询问一下数据库。

这是我的标准。(我在最后再次列出了标准,所以如果您想跳过解释,只需向下滚动即可。)

  1. 该项目是开源的,我不会要求任何东西,所以最好是数据库是开源和免费的。此外,该软件必须在 Linux 和 Windows 上运行。

  2. 项目的某些部分必须使用 C++。该项目的代码不够大,不足以证明使用第二种语言是合理的。所以基本上整个事情都是C++。

  3. 该项目与网络没有任何关系,因此数据库最好不需要网络库的碎片。

  4. 我要存储的对象属于以下两类之一:基本对象和容器对象。不同之处在于作为容器的对象将包含更多对象,即:零件的一部分问题。我需要一个能够干净有效地处理此类情况的数据库。

  5. 我还希望架构能够迅速发展,至少在最初是这样。我还怀疑一些旧数据根本不适合新模式。所以我想保留不同版本的模式。赢可能,我希望能够将一个模式中的数据转换为另一个模式。

  6. 为了使应用程序按预期方式工作,人们必须相互交换大量数据库。所以我想要导入和导出数据的简单方法,我可以在某种程度上实现自动化。

  7. 最后,如果可以在单元测试中以某种方式模拟数据库,那就太好了。

这些是我的要求。我在下面复制了它们,以使人们更容易回答。

谢谢

非技术要求 1. 开源最好免费。2. 在 Windows 和 Linux 上运行

  1. 有一个 C++ 接口。
  2. 能够处理非 W​​eb 应用程序,最好不使用 REST。
  3. 可以很好地处理“零件的零件”问题。
  4. 可以处理多个索引。
  5. 有模式版本的概念,可以处理多个模式版本,并且可以将表从一个模式迁移到另一个模式。
  6. 应该有一个简单的机制来将数据从一个数据库实例移动到另一个实例。
  7. 最好有一些测试机制。