问题标签 [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.
architecture - 考虑到数据库中的实际数据,我将如何在 RDBMS 和 DocDBMS 之间进行选择?
我不是在这里寻找一场圣战,我正在考虑分布式架构,并希望输入关于如何在 RDBMS 与 DocDBMS 之间进行选择?
我们不能否认使用 RDBMS(即 MySQL、PostgreSQL、MS Sql Server 等)所具有的强大功能,它们已经开发了 30 多年,并且已经考虑并解决了许多问题。
我们还需要考虑 NoSQL/DocDBMS 运动(MongoDB、CouchDB 等)有其自身的优势,尤其是在数据存储、关联和复制的方式方面。
仅考虑DATA及其STRUCTURE时,我什么时候选择使用基于文档的数据库,什么时候使用关系数据库?
我不想讨论与某人最喜欢的语言或平台相关的一种解决方案与另一种解决方案的优点。请保持讨论指向数据类型(即金融交易、博客、CMS 页面、购物车等)及其结构(数据点之间的关系 - 即与其评论相关的博客文章)。
database - 将 Cassandra 集群部署到一组 Linode VPS 实例是否有任何“陷阱”?
我正在学习 Apache Cassandra 数据库 [原文如此]。
在将 Cassandra 部署到像 Linode 或 Slicehost 产品这样的专用硬件上时,是否有人有任何好的/坏的经验?
我认为 Cassandra 将是一种轻松扩展 Web 服务以满足读/写/请求负载的好方法……只需将另一个运行 Cassandra 节点的 Linode 添加到现有集群即可。是的,这意味着在同一个 VPS 上运行公共 Web 服务和 Cassandra 节点(许多人可能会对此表示反对)。
Cassandra 类似 Linode 的部署的优点:
- 专用 VLAN;Cassandra 节点可以私下通信
- 用于配置新 Linode 的 API(并且可能使用安装 Cassandra 及其依赖项等的“StackScript”对其进行配置)
- 价格合适
缺点:
- 每个主机都是一个VPS,当然不是专用的
- 一旦您决定需要 4GB RAM(参见 SoftLayer 专用),RAM/成本比就不是那么好
- 我想只有 1 个磁盘,其中一个更喜欢 2 个磁盘(1 个用于提交日志,另一个磁盘用于数据文件本身)。可能没有实际意义,因为无论如何这是共享硬件。
编辑:发现这有点帮助:http ://wiki.apache.org/cassandra/CassandraHardware
我看到 1GB 是最低要求,但这是建议吗?例如,我可以使用 Linode 720 进行部署(比如 500 MB 可用于 Cassandra)吗?见http://www.linode.com/
django - Django 和 NoSQL,任何现成的库?
到目前为止,Django 与几个 RDBMS 有很好的集成。NoSQL、无模式和面向文档的 DBMS 正在兴起。这些流行的 DBMS 与 Django 的集成情况如何?是否有任何可用于 Django 的生产就绪或至少可以使用的库?
到目前为止,我手头有这些:
c# - 开发人员必须采取哪些“心理步骤”才能开始从 SQL 迁移到 NO-SQL(CouchDB、FathomDB、MongoDB 等)?
我的思想牢牢地围绕着关系数据库以及如何有效地针对它们进行编码。我的大部分经验是使用 MySQL 和 SQL。我喜欢我听到的关于基于文档的数据库的许多事情,尤其是当最近的播客中有人提到巨大的性能优势时。那么,如果我要走这条路,我必须采取哪些心理步骤才能从 SQL 转向 NO-SQL?
如果这对您的回答有任何影响,我主要是一名 C# 开发人员(今天,无论如何)。我习惯了像 EF 和 Linq to SQL 这样的 ORM。在使用 ORM 之前,我使用泛型和数据读取器滚动了自己的对象。也许这很重要,也许不重要。
这里有一些更具体的:
- 我需要如何考虑连接?
- 如果没有 SELECT 语句,我将如何查询?
- 当我在代码中添加属性时,我现有的存储对象会发生什么?
(请随时在此处添加您自己的问题)
nosql - NoSql 速成班/教程
我已经看到 NoSQL 在 SO 上出现了很多,我对你为什么要使用它有一个深刻的理解(从这里,维基百科等)。这可能是由于缺乏对它的具体和统一的定义(更多的是一种范式而不是具体的实现),但我正在努力思考我将如何设计一个使用它的系统或如何我会在我的系统中实现它。我真的陷入了关系数据库的思维模式,从表和连接的角度思考事物......
无论如何,有没有人知道系统上的速成课程/教程(对于基于 NoSQL 的系统来说是一种“hello world”)或基于 SQL 的现有“Hello World”应用程序的教程并将其转换为 NoSQL(不一定在代码中,而只是高级解释)。
nosql - 对于 Cassandra 集群,我绝对需要至少 3 个节点/服务器还是 2 个就足够了?
当然可以运行一个单节点集群,但我想要某种程度的容错。
目前我可以租两台服务器(8GB RAM,私有 VLAN @1GigE),但不能租 3 台。
我的理解是,Cassandra 集群至少需要 3 个节点,因为 2 个节点之间不可能存在多数,解决版本冲突需要多数。哦,等等,我在想“矢量时钟”和 Riak 吗?确认!Cassandra 使用时间戳来解决冲突。
对于 2 个节点,推荐的读/写策略是什么?我通常应该写入所有(两个)节点并从一个(N=2;W=N/2+1;W=2/2+1=2)读取吗?即使是 2 个节点,Cassandra 也会像往常一样使用提示切换,是吗?
这 2 台服务器位于同一个数据中心 FWIW 中。
谢谢!
database - 是否有任何针对 Cassandra 的数据建模练习,例如 Retwis for Redis?
我正在尝试学习如何映射我的应用程序中的实体/演员/对象/事物以存储在 Cassandra 中。有一个很棒的 Redis 教程,用于建模 Twitter 数据和典型的访问模式,称为 Retwis [1]。我找到了几个 Cassandra 的例子。
您是如何开始对 Cassandra 的数据模型产生直觉的?
mysql - 从 MySQL 切换到 Cassandra - 优点/缺点?
对于一些背景知识 - 这个问题涉及在单个小型 EC2 实例上运行的项目,并且即将迁移到中型实例。主要组件是 Django、MySQL 和大量用 python 和 java 编写的自定义分析工具,它们完成了繁重的工作。同一台机器也在运行 Apache。
数据模型如下所示 - 大量实时数据来自各种联网传感器,理想情况下,我想建立一个长轮询方法,而不是当前每 15 分钟轮询的方法(限制为计算统计数据并写入数据库本身)。一旦数据进来,我将原始版本存储在 MySQL 中,让分析工具对这些数据松散,并将统计信息存储在另外几个表中。所有这些都是使用 Django 呈现的。
我需要的关系特征 -
- 按[Cassandra API 中的 SliceRange 似乎对此感到满意]
- 通过...分组
- 多个表之间的多对多关系[Cassandra SuperColumns 似乎适合一对多]
- Sphinx 在这方面给了我一个很好的全文引擎,所以这也是必要的。【在 Cassandra 上,Lucandra 项目似乎满足了这个需求】
我的主要问题是数据读取非常慢(写入也不那么热)。我现在不想在它上面投入大量资金和硬件,我更喜欢可以随时间轻松扩展的东西。从这个意义上说,垂直扩展 MySQL 并非易事(或便宜)。
所以本质上,在阅读了很多关于 NOSQL 并尝试了 MongoDB、Cassandra 和 Voldemort 之类的东西之后,我的问题是,
在中型 EC2 实例上,我是否会通过转移到 Cassandra 之类的东西在读/写方面获得任何好处?这篇文章(pdf) 似乎确实暗示了这一点。目前,我会说每分钟几百次写入将是常态。对于读取 - 由于数据每 5 分钟左右更改一次,因此缓存失效必须很快发生。在某些时候,它也应该能够处理大量并发用户。即使创建了索引,在 MySQL 对大型表进行一些连接时,应用程序的性能也会受到影响——大约 32k 行的东西需要一分钟以上的时间来呈现。(这也可能是 EC2 虚拟化 I/O 的产物)。表的大小约为 4-5 百万行,大约有 5 个这样的表。
鉴于 CAP 定理和最终一致性,每个人都在谈论在多个节点上使用 Cassandra。但是,对于一个刚刚开始发展的项目,部署单节点 cassandra 服务器是否有意义?有什么注意事项吗?例如,它可以取代 MySQL 作为 Django 的后端吗?【推荐吗?】
如果我确实转移了,我猜我将不得不重写应用程序的某些部分来做更多的“管理”,因为我必须进行多次查找来获取行。
Would it make any sense to just use MySQL as a key value store rather than a relational engine, and go with that? That way I could utilize a large number of stable APIs available, as well as a stable engine (and go relational as needed). (Brett Taylor's post from Friendfeed on this - http://bret.appspot.com/entry/how-friendfeed-uses-mysql)
Any insights from people who've done a shift would be greatly appreciated!
Thanks.
python - 请求关于将对象从动态语言持久化到文档数据库的建议
您对将动态语言中的对象保存在文档数据库中的最优雅方式有任何见解吗?
我在 C# 方面有扎实的背景,并且刚刚开始使用 Python 进行编程。同时,我正在尝试学习 MongoDB 的诀窍。
现在我想知道:将数据保存到 MongoDB 数据库的最优雅的方法是什么?我考虑了几种方法:
使我所有的 Python 类都能够创建表示其状态的字典和列表图。此外,让他们能够从这样的图表初始化他们的状态。当我想持久化一个对象时,我会询问它的图形表示并持久化。当我想获取一个对象时,我将检索一个文档图并将其提供给
__init__
我的类的方法。创建一个单独的 Mapper 类,能够检查给定对象并创建字典和列表图,然后我可以将其存储在 MongoDB 中。映射器还将负责创建其数据已从数据库中检索到的对象。
我尝试了mongoengine,一个文档对象映射器。但是,当它迫使我从特定类(文档)派生我的类时,我感到很失望。它让我想起了微软的 Entity Framework 1.0 和缺乏 POCO 的支持。我不想被迫从特定的类派生。感觉不对,但我不确定这是否真的是动态语言中的问题。
我的 C# 背景是否阻碍了我的思考?我确信我还没有理解动态语言提供的灵活性程度,因此任何关于最佳实践的建议或提示都将不胜感激。
谢谢你。
database - 最简单的数据库实现
我正在寻找一个非常简单的数据库实现;基本上没有复杂的解析 SQL 引擎。我正在寻找的是展示 B+ 树和 ACID 存储的东西(适用于教育目的)。到目前为止,我在当前搜索中发现的是 hamster-db。我正在寻找更简单的代码库。如果您知道有任何这样的开源项目,请告诉我。