DynamoDB 相对于其他 NoSQL 数据库有哪些优缺点?

发布于 2024-12-27 17:57:35 字数 204 浏览 2 评论 0原文

我们在 Heroku 上为 SaaS 产品使用 MongoDB 数据库插件。既然 Amazon 推出了云数据库服务 DynamoDB,我想知道这将如何改变 NoSQL 产品格局?

特别是对于基于云的服务或 SaaS 供应商来说,与 MongoDB 相比,使用 DynamoDB 有何优缺点?使用其中一种与另一种相比是否有成本、性能、可扩展性、可靠性、驱动程序、社区等方面的优势?

We use MongoDB database add-on on Heroku for our SaaS product. Now that Amazon launched DynamoDB, a cloud database service, I was wondering how that changes the NoSQL offerings landscape?

Specifically for cloud based services or SaaS vendors, how will using DynamoDB be better or worse as compared to say MongoDB? Are there any cost, performance, scalability, reliability, drivers, community etc. benefits of using one versus the other?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

宫墨修音 2025-01-03 17:57:35

对于初学者来说,它将由亚马逊的专家团队完全管理,因此您可以打赌,它几乎无需最终用户(开发人员)的输入即可很好地扩展。

此外,由于它是由亚马逊构建和管理的,您可以假设他们将其设计为能够与他们的基础设施很好地配合,因此您可以假设性能将是一流的。除了专门为其基础设施构建之外,他们还选择使用 SSD 作为存储,因此从一开始,磁盘吞吐量将显着高于 AWS 上由 HDD 支持的其他数据存储。

我还没有看到任何驱动程序,我认为现在判断社区对此有何反应还为时过早,但我怀疑亚马逊将为所有最流行的语言提供驱动程序,社区可能会很好地接受这一点 - 并反过来创建额外的驱动程序和工具。

For starters, it will be fully managed by Amazon's expert team, so you can bet that it will scale very well with virtually no input from the end user (developer).

Also, since its built and managed by Amazon, you can assume that they have designed it to work very well with their infrastructure so you can can assume that performance will be top notch. In addition to being specifically built for their infrastructure, they have chosen to use SSD's as storage so right from the start, disk throughput will be significantly higher than other data stores on AWS that are HDD backed.

I havent seen any drivers yet and I think its too early to tell how the community will react to this, but I suspect that Amazon will have drivers for all of the most popular languages and the community will likely receive this well - and in turn create additional drivers and tools.

死开点丶别碍眼 2025-01-03 17:57:35

通过 Heroku 的附加组件使用 MongoDB 也可以有效地将 MongoDB 转变为 SaaS 产品。

实际上,人们会将所选提供商提供的任何服务与亚马逊可以提供的服务进行比较,而不是将一种持久性解决方案与另一种进行比较。

这是很难做到的。每个提供商都会以不同的价格点提供不同级别的服务,人们可以考虑在本地自己的硬件上运行它以进行开发,这是一种受欢迎的选择。

Using MongoDB through an add-on for Heroku effectively turns MongoDB into a SaaS product as well.

In reality one would be comparing whatever service a chosen provider has compared to what Amazon can offer instead of comparing one persistance solution to another.

This is very hard to do. Each provider will have varying levels of service at different price points and one could consider the option of running it on their own hardware locally for development purposes a welcome option.

没︽人懂的悲伤 2025-01-03 17:57:35

我认为要考虑的关键区别是 MongoDB 是一款可以在任何地方安装的软件(包括 AWS 或其他云服务或内部),而 DynamoDB 是一种 SaaS,专门作为 Amazon (AWS) 的托管服务提供。如果您想保留在内部托管应用程序的选项,那么 DynamoDB 不是一个选择。如果不考虑在 AWS 外部托管,那么 DynamoDB 应该是您的默认选择,除非需要更高的考虑非常具体的功能。

I think the key difference to consider is MongoDB is a software that you can install anywhere (including at AWS or at other cloud service or in-house) where as DynamoDB is a SaaS available exclusively as hosted service from Amazon (AWS). If you want to retain the option of hosting your application in-house, DynamoDB is not an option. If hosting outside of AWS is not a consideration, then, DynamoDB should be your default choice unless very specific features are of higher consideration.

梦罢 2025-01-03 17:57:35

以下链接中的表格总结了 DynamoDB 和 Cassandra 的属性:

http://www .datastax.com/dev/blog/amazon-dynamodb

DynamoDB 需要改进才能变得更可用,即可以对主键以外的列进行索引。

更新 1 (06/04/2013)

2013 年 4 月 18 日,Amazon 宣布支持本地二级索引,这让 DynamoDB 变得非常棒:

http://aws.amazon.com/about-aws/whats-new/2013/04/18/amazon-dynamodb-announces-local-secondary-indexes/

There's a table in the following link that summarizes the attributes of DynamoDB and Cassandra:

http://www.datastax.com/dev/blog/amazon-dynamodb

Something that needs improvement on DynamoDB in order to become more usable is the possibility to index columns other than the primary key.

UPDATE 1 (06/04/2013)

On 04/18/2013, Amazon announced support for Local Secondary Indexes, which made DynamoDB f***ing great:

http://aws.amazon.com/about-aws/whats-new/2013/04/18/amazon-dynamodb-announces-local-secondary-indexes/

谎言月老 2025-01-03 17:57:35

我必须诚实;当我听说新的 DynamoDB 并参加昨天的网络研讨会时,我感到非常兴奋。但现在很难做出决定,因为他们所说的一切都还很模糊;我不知道通过他们的服务将允许/使用哪些功能。

我确实知道的一件事是缩放是自动处理的;这真是太棒了,但仍然有很多未知因素,在掌握所有事实并且我们可以开始使用它之前,很难真正做出出色的分析。

到目前为止,我仍然认为 mongo 在我一直在从事的项目中对我(个人)来说工作得更好。

与大多数数据库决策一样,这实际上取决于一个又一个项目的决策,以决定什么最适合您的需求。

我焦急地等待有关该产品的更多信息,尽管它目前处于测试阶段,但我不会仅仅为了成为测试人员而跳槽采用最新和最好的产品:)

I have to be honest; I was very excited when I heard about the new DynamoDB and did attend the webinar yesterday. However it's so difficult to make a decision right now as everything they said was still very vague; I have no idea the functions that are going to be allowed / used through their service.

The one thing I do know is that scaling is automatically handled; which is pretty awesome, yet there are still so many unknowns that it's tough to really make a great analysis until all the facts are in and we can start using it.

Thus far I still see mongo as working much better for me (personally) in the project undertaking that I've been working on.

Like most DB decisions, it's really going to come down to a project by project decision of what's best for your need.

I anxiously await more information on the product, as for now though it is in beta and I wouldn't jump ship to adopt the latest and greatest only to be a tester :)

一场信仰旅途 2025-01-03 17:57:35

我认为 DynamoDB 和其他 NoSQL 产品之间的主要区别之一是预配置的吞吐量 - 您为表上的特定吞吐量级别付费,并且只要您保持数据良好分区,您就可以始终期望满足该吞吐量。因此,随着应用程序负载的增长,您可以进行扩展并保持性能大致恒定。

I think one of the key differences between DynamoDB and other NoSQL offerings is the provisioned throughput - you pay for a specific throughput level on a table and provided you keep your data well-partitioned you can always expect that throughput to be met. So as your application load grows you can scale up and keep you performance more-or-less constant.

绅士风度i 2025-01-03 17:57:35

Amazon DynamoDB 似乎是一个相当不错的 NoSQL 解决方案。它速度很快,而且非常容易使用。除了拥有 AWS 帐户之外,实际上不需要任何设置或维护。与 MongoDB/CouchDB/Cassandra 相比,目前的功能集和 API 相当小,但我可能希望随着收到开发者社区的反馈,功能集和 API 会随着时间的推移而增长。目前,所有官方 AWS 软件开发工具包都包含 DynamoDB 客户端。

Amazon DynamoDB seems like a pretty decent NoSQL solution. It is fast, and it is pretty easy to use. Other than having an AWS account, there really isn't any setup or maintenance required. The feature set and API is fairly small right now compared to MongoDB/CouchDB/Cassandra, but I would probably expect that to grow over time as feedback from the developer community is received. Right now, all of the official AWS SDKs include a DynamoDB client.

秋日私语 2025-01-03 17:57:35

优点

  1. 快如闪电(内部使用 SSD)
  2. 真的(真的)可靠。 (写入失败的可能性较低)
  3. 无缝扩展(无需手动分片)
  4. 作为 Web 服务工作(无需服务器、无需配置、无需安装)
  5. 轻松与其他 AWS 功能集成(可以将整个表存储到 S3 或使用 EMR 等)
  6. 复制是在内部管理的,因此意外丢失数据的可能性可以忽略不计。

缺点

  1. 查询非常(非常)有限。
  2. 扫描是痛苦的(我记得有一次通过 Java 扫描运行了 6 个小时)
  3. 预定义的吞吐量,这意味着超出设定吞吐量的突然增加将受到限制。
  4. 当表在内部分片时,吞吐量会被分区。 (这意味着如果您的吞吐量为 1000 并且将其分为两部分,并且如果您仅读取最新数据(从一个部分),那么您的读取吞吐量仅为 500)
  5. 没有连接,允许有限索引(基本上是 2)。
  6. 没有视图、触发器、脚本或存储过程。

它非常适合作为可扩展应用程序中会话存储的替代方案。另一个好的用途是在广泛的系统中进行日志记录/审计。对于频繁增强或更改的功能丰富的应用程序来说,这不是优选的。

Pros

  1. Lightning Fast (uses SSDs internally)
  2. Really (really) reliable. (chances of write failures are lower)
  3. Seamless scaling (no need to do manual sharding)
  4. Works as webservices (no server, no configuration, no installation)
  5. Easily integrated with other AWS features (can store the whole table into S3 or use EMR etc)
  6. Replication is managed internally, so chances of accidental loss of data is negligible.

Cons

  1. Very (very) limited querying.
  2. Scanning is painful (I remember once a scanning through Java ran for 6 hours)
  3. pre-defined throughput, which means sudden increase beyond the set throughput will be throttled.
  4. throughput is partitioned as table is sharded internally. (which means if you had a throughput for 1000 and its partitioned in two and if you are reading only the latest data(from one part) then your throughput of reading is 500 only)
  5. No joins, Limited indexing allowed (basically 2).
  6. No views, triggers, scripts or stored procedure.

It's really good as an alternative to session storage in scalable application. Another good use would be logging/auditing in extensive system. NOT preferable for feature rich application with frequent enhancement or changes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文