问题标签 [nosql]
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.
sql - 构建社交网络类型应用程序的模式?
我需要设计/架构/开发基于网络的社交网络类型的应用程序。
基本功能:
- 用户在系统上创建帐户
- 用户同意互相“加为好友”
- 用户在系统内创建内容
- 用户指定哪些朋友可以查看/编辑他们创建的内容
这个核心功能肯定已经创建过很多次了吗?有没有关于如何实现这类事情的最佳实践模式?
我最感兴趣的是这个数据库的外观。
从 SQL 的角度来看(任何数据库),这会是什么样子?
从 NOSQL 的角度来看(任何 NOSQL 数据库)会是什么样子?
我最感兴趣的是,如何在数据库中解决“内容可见性”的问题?即数据库/应用程序如何确保只有经过批准的朋友才能看到用户创建的内容?
谢谢
graph - InfoGrid 应用程序的基本示例
我正在尝试将这个名为InfoGrid的软件用于我正在构建的项目。有人可以指点我一些基本的入门文章。我在网站上没有看到任何文档。
有足够声誉的人,请编辑问题并将标签InfoGrid添加到此问题。
nosql - 在 windows 平台上使用 NOSQL 时最好的选择是什么?
我是一名 .NET 程序员,想看看 RDBMS 的替代方案。目前最成熟的选择是什么(最成熟的驱动程序和数据库中的大多数功能)?
我看过 MongoDB,对此我很满意。
sql - 使用 NOSQL 进行连接操作
我浏览了一些关于 Bigtable 和 NOSQL 的文章。非常有趣的是,它们避免了 JOIN 操作。
作为一个基本示例,让我们以 Employee 和 Department 表为例,假设数据分布在多个表/服务器上。
只是想知道,如果数据分布在多个服务器上,我们如何进行 JOIN 或 UNION 操作?
nosql - Amazon.com 如何使用键值数据存储?
我听说亚马逊使用键值数据存储——它不使用传统的关系规范化数据库。作为一个只使用过传统方法的人来说,这是如何工作的?您不需要执行以下操作吗?
select * from book where book_id = n
或者一个:
select * from book where author_id = y
如果没有规范化的数据库,您如何构建具有如此多数据和如此多关系的站点/应用程序?
json - 比 SQLite 更简单
你知道任何类似 SQLite 的数据库,它以易于阅读的纯文本格式(如多行 json 或 yaml)存储其数据吗?
我想将一些数据与我的项目一起存储在版本控制系统中,但如果我使用 sqlite,我无法合并不同工作副本中发生的数据更改。
我不想只使用某种配置文件,因为我希望我的程序能够修改这些数据并有效地查询它,而无需将所有数据加载到内存中。
可以通过某种 sql 方言访问数据库中的数据,但这不是必需的。
编辑:
我正在寻找可以为 json/yaml/whatever 构建和维护索引文件的东西,它允许尽可能快地访问数据片段,因为正确的数据库可以做到这一点。
我还需要修改数据的能力,因此仅允许查询的解决方案是不够的。
gis - NoSQL 和空间数据
你们有没有使用 NoSQL(非关系)数据库存储空间数据的经验?使用此类数据库为桌面应用程序(与使用 SpatiaLite 或 PostGIS 相比)保存数据是否有任何潜在优势(速度、空间......)?
我看过关于将 MongoDB 用于空间数据的帖子,但我对一些性能比较感兴趣。
.net - 嵌入式非关系 (nosql) 数据存储
我正在考虑为我的 Windows 桌面应用程序使用/实现某种嵌入式键值(或文档)存储。我希望能够存储各种类型的数据(GPS 轨迹就是一个例子),当然还能够查询这些数据。数据量将无法同时全部加载到内存中。
我正在考虑使用 sqlite 作为键值存储的存储引擎,类似于y-serial,但用 .NET 编写。我还阅读了有关FriendFeed 使用 MySQL 存储无模式数据的信息,这是关于如何将 RDBMS 用于非关系数据的一个很好的指导。sqlite 似乎是一个不错的选择,因为它的简单性、可移植性和库大小。
我的问题是嵌入式非关系存储是否还有其他选项?它不需要是可分发的,也不需要支持事务,但它必须可以从 .NET 访问,并且它应该具有较小的下载大小。
更新:我发现一篇题为SQLite as a Key-Value Database的文章将 sqlite 与 Berkeley DB 进行了比较,Berkeley DB 是一个嵌入式键值存储库。
database-design - 用于处理动态分类的专用多面搜索引擎 - 仅有助于提高性能还是提高灵活性?
我一直在考虑使用类似 ebay 的分类法和依赖于特定产品类别的属性来建模典型的电子商务网站。
第一次尝试是在 EAV 和 Table Per Class db 继承建模之间进行选择。我选择后者是因为性能,但这意味着为每个特定(类别树中的叶子)产品类别创建专用表,并将特定类别属性(如电视的分辨率)建模为单独的列。
如果您需要将属性添加到现有类别或添加新类别,则此设置虽然高效,但并不灵活。对于每个此类更改,需要以下内容:
- 更改/创建表
- 按特定属性过滤此类类别的新表格
- 用于生成用于搜索和过滤的数据库查询的新代码
- 一些新的视图模型/DTO 和用于展示新类别产品的视图
为了应对这种复杂性,我认为需要在 xml 甚至 excel 文件中(甚至在应用程序之外)对这些属性进行某种元表示,以便在每次更改时都可以自动生成所有提到的代码(sql/orm 查询,应用程序代码、模板)。所以它可以帮助开发,但仍然需要测试和额外的部署。
那时我了解到 ebay 并没有真正使用关系数据库进行搜索,而且他们的分类非常灵活,可以很快添加新的叶子类别。此外,它们的类别可能不是在关系数据库中建模的分层树中的类别,而只是搜索属性(方面)。
在快速浏览了最有希望的专用分面搜索设置(单独的 Solr 实例)后,我不确定它是否可以帮助我灵活地应对分类变化,因为通常 Solr 只是以某种方式反映关系数据库,因此特定的类别属性仍然必须在 DB 中建模为 DBMS 元数据,例如。用于过滤属性的动态生成 UI 表单会很困难,除非:
1)我将使用 EAV fasion 将数据保存在 RDBMS 中,并通过使用 SOLR 搜索来克服其性能问题(但仍然存在 EAV 混乱、没有数据完整性执行等问题)
2)我会在 RDBMS 中只保留属性字典(即它们的名称和类型),并将特定属性值存储在 SOLR 中,使用它作为一种非关系数据存储,而不是搜索工具。我也不相信这个解决方案(即使它是可能的),因为应用程序将与 solr 紧密耦合(即产品版本管理员 CRUD 将直接与 SOLR 交互)。
你怎么认为?您认为对于任何类型的(高性能)分类法灵活性代码生成是不可避免的吗?你会怎么处理?也许只是为了代码生成目的,在数据库中以 EAV 方式的一些单独的数据字典?我想我也可以使用 MongoDB 之类的东西,但是 UI 代码生成(运行时与否)仍然需要某种元数据。
这里有很多问题,但我不想把它分解成更小的问题,因为在处理更大类的此类问题时,我对通用设计方法感兴趣。
scalability - 动态水平可扩展键值存储
是否有一个键值存储可以为我提供以下信息:
- 允许我简单地添加和删除节点,并将自动重新分配数据
- 允许我删除节点,但仍然有 2 个额外的数据节点来提供冗余
- 允许我存储最大 1GB 的文本或图像
- 可存储高达 100TB 数据的小型数据
- 快速(因此将允许在其上执行查询)
- 让所有这些对客户透明
- 适用于 Ubuntu/FreeBSD 或 Mac
- 免费或开源
我基本上想要一些我可以使用“单一”的东西,而不必担心拥有 memcached、一个数据库和几个存储组件,所以是的,我确实想要一个你可以说的数据库“银弹”。
谢谢
祖拜尔
到目前为止的答案:BackBlaze 之上的 MogileFS - 据我所知,这只是一个文件系统,经过一些研究,它似乎只适用于大图像文件
东京暴君 - 需要光云。当您添加新节点时,这不会自动缩放。我确实对此进行了研究,但对于适合单个节点的查询似乎非常快
Riak - 这是我自己调查的一个,但我还没有任何结果
Amazon S3 - 有人在生产中使用它作为他们唯一的持久层吗?从我所见,它似乎用于存储图像,因为复杂的查询太贵了
@shaman 建议 Cassandra - 绝对是我正在研究的一个
到目前为止,似乎没有满足我提到的标准的数据库或键值存储,即使在提供 100 分的赏金之后,问题也没有得到回答!