问题标签 [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.
database - 什么是生产就绪的 NonSQL 数据库?
随着高流量网站中非 sql 数据库使用率的上升,我有兴趣将它用于我的项目。现在我听说过几个名字,比如Voldermort、MongoDB和CouchDB。但是这些非 SQL 数据库中有哪些是生产就绪的?我看过下载页面,似乎它们都没有准备好生产,因为还不是 1.0 版。除了这 3 个名称之外,还有其他名称可以推荐用于生产吗?
sql - nosql是什么意思?有人可以用简单的话向我解释一下吗?
在这篇Stack Overflow Architecture这篇文章中,我读到了一个叫做 nosql 的东西,我不明白它是什么意思,我试图在谷歌上搜索,但接缝我无法得到它的确切含义。
谁能用简单的话解释一下 nosql 的含义?
mysql - 活动流的传统关系数据库的替代品
我想知道其他一些非关系数据库是否适合活动流 - 有点像你在 Facebook、Flickr ( http://www.flickr.com/activity ) 等上看到的。现在,我'正在使用 MySQL,但它非常费力(我有数千万条活动记录),而且由于它们基本上是只读的,一旦写入并且总是按时间顺序查看,我认为替代数据库可能会运作良好。
这些活动是这样的:
- 下午 6 点:约翰最喜欢培根
- 下午 5:30:简评论了雪崩
- 5:15 PM:简将培根的照片添加到她的相册
问题是,与 Twitter 和其他一些系统不同,我不能简单地将活动附加到每个对活动感兴趣的用户的列表中——如果可以的话,Redis 会很合适(使用它的列表操作)。
我需要能够执行以下操作:
- 以相反的日期顺序为您关注的一组或部分人(“John”和“Jane”)提取活动
- 以相反的日期顺序拉动事物(如“培根”)的活动
- 按活动类型过滤(“收藏”、“评论”)
- 存储至少 3000 万个活动
- 理想情况下,如果您添加或删除了您关注的人,您的活动流将反映更改。
我一直在用 MySQL 做这个。我的“活动”表尽可能紧凑,键尽可能小,并且索引适当。它有效,但感觉就像是这个工作的错误工具。
有没有人在传统的 RDBMS 之外做这样的事情?
2009 年 11 月更新:现在回答我自己的问题还为时过早,但我目前的解决方案是坚持使用 MySQL,但增加 Redis 以快速访问新的活动流数据。我的答案中的更多信息:如何在社交网络中实现活动流...
2014 年8 月更新:多年后,我仍然使用 MySQL 作为记录系统,并使用 Redis 快速访问每个用户的最新活动。多亏了pt-online-schema-change,处理大型 MySQL 表上的模式更改已成为一个非问题
mongodb - mongodb 的唯一 ID
如果我正在构建一个博客,我可以使用博客标题作为唯一标识符并通过 URL 解析它。但是,如果我想使用数字怎么办。你知道 twitter 如何拥有 www.twitter.com/username/statuses/9834542 吗?有没有人想出一个很好的方法来完成这项工作?使用“_id”是不可能的,因为它太长了。
sql - HBase 中的高级查询
鉴于以下 HBase 模式场景(来自官方常见问题解答)......
您将如何为两个实体(例如学生和课程)之间的多对多关联设计 Hbase 表?
我会定义两个表:
学生:学生 ID 学生数据(姓名、地址、...)课程(此处使用课程 ID 作为列限定符)
课程:课程 ID 课程数据(姓名、教学大纲、...)学生(此处使用学生 ID 作为列限定符)
此架构使您可以快速访问查询,显示学生的所有班级(学生表、课程家庭)或班级的所有学生(课程表、学生家庭)。
您将如何满足要求:“给我所有共享至少两门共同课程的学生”?您能否在 HBase 中构建一个“查询”来返回该集合,或者您是否必须检索所有相关数据并自己在代码中处理?
database-design - 设计 Cassandra 数据模型的最佳实践是什么?
有哪些需要避免的陷阱?您是否有任何交易中断?例如,我听说导出/导入 Cassandra 数据非常困难,这让我想知道这是否会妨碍将生产数据同步到开发环境。
顺便说一句,很难找到关于 Cassandra 的好的教程,我只有一个http://arin.me/code/wtf-is-a-supercolumn-cassandra-data-model仍然很基础。
谢谢。
orm - 没有 JOIN 的生活......理解和常见做法
许多“BAW”(大网站)正在使用依赖于带有索引的大表的数据存储和检索技术,并使用不会/不能在其查询中使用 JOIN 的查询(BigTable、HQL 等)处理可伸缩性和分片数据库。当您拥有大量非常相关的数据时,它是如何工作的?
我只能推测这种连接的大部分必须在应用程序方面完成,但这不是开始变得昂贵吗?如果您必须对几个不同的表进行多次查询以获取要编译的信息怎么办?与首先使用连接相比,多次访问数据库会不会变得更加昂贵?我想这取决于你有多少数据?
而对于常用的 ORM,他们倾向于如何处理无法使用 join 的问题?在当今大量使用的 ORM 中是否对此提供支持?还是大多数必须接近这种数据水平的项目都倾向于自行推出?
所以这不适用于我正在做的任何当前项目,但这是我几个月来一直在想的事情,我只能推测什么是“最佳实践”。我从来没有需要在我的任何项目中解决这个问题,因为它们从未达到需要的规模。希望这个问题也能帮助其他人..
正如下面有人所说,没有连接的 ORM “不起作用”。是否有其他数据访问层可供开发人员使用此级别的数据?
编辑: 为了澄清一下,Vinko Vrsalovic说:
“我相信 snicker 想要谈论 NO-SQL,其中事务数据被非规范化并用于 Hadoop 或 BigTable 或 Cassandra 方案。”
这确实是我要说的。
那些获得 xkcd 参考的人的奖励积分。
.net - 用于 .Net 项目的文档数据库/键值存储
是否有任何文档数据库和/或键值存储(例如 Project Voldemort、MongoDB 等)可以很好地与 .Net 项目配合使用?到目前为止,我看到的大多数选项似乎更适合非 Microsoft/Java/开源技术,我想知道是否有人对 Microsoft 堆栈的此类解决方案有任何经验/建议。
nosql - 谁能解释伏地魔项目或类似键值存储有用的场景?
我可以看到自己使用Project Voldermort来缓存来自传统 RDBMS 查询的结果。但在这种情况下,与其他(Java)缓存系统(如 EHcache Jcache 等)相比,它几乎没有提供任何主要优势。
我还能在哪里使用 Project Voldermort 或类似的 Key Value 商店?您如何在业务应用程序中使用它?
.net - .NET 的基于文档的数据库
我想在我的 web 应用程序中使用某种 nosql 数据库,它是用 asp.net mvc 编写的,但找不到任何有用的东西。我查看了 MongoDB 和 CouchDB,但我希望为我的查询提供比它们更好的 api(强类型不是魔术字符串)。.NET 是否存在类似的东西?