什么场景更有意义 - 托管多个安装了 MongoDB 的 EC2 实例,还是使用 Amazon SimpleDB Web 服务?
当有多个带有 MongoDB 的 EC2 实例时,我遇到了自己设置实例的问题。
当使用 SimpleDB 时,我遇到了将我锁定到 Amazon 数据结构中的问题,对吗?
发展上有哪些差异?难道我不应该能够切换服务层的 DAO 来写入 MongoDB 或 AWS SimpleDB 吗?
SimpleDB 有一些可扩展性限制。您只能通过分片进行扩展,它的延迟比 mongodb 或 cassandra 更高,它有吞吐量限制,而且价格比其他选项更高。可扩展性是手动的(您必须进行分片)。
如果您需要更广泛的查询选项并且读取率很高并且没有太多数据,那么 mongodb 会更好。但为了持久性,您需要使用至少2个mongodb服务器实例作为主/从。否则您可能会丢失最后一刻的数据。可扩展性是手动的。它比 simpledb 快得多。自动分片在1.6版本中实现。
Cassandra 的查询选项较弱,但与 postgresql 一样耐用。它与 mongo 一样快,并且在数据量更大时速度更快。 cassandra 上的写入操作比读取操作更快。它可以通过触发 ec2 实例来自动扩展,但是您必须稍微修改配置文件(如果我没记错的话)。如果您有 TB 的数据,cassandra 是您最好的选择。无需对数据进行分片,它从第一天起就被设计为分布式的。您可以为所有数据拥有任意数量的副本,如果某些服务器已失效,它将自动返回活动服务器的结果,并将失效服务器的数据分发给其他服务器。它具有很高的容错能力。您可以包含任意数量的实例,它比其他选项更容易扩展。它具有强大的 .net 和 java 客户端选项。他们有连接池、负载平衡、死服务器标记……
另一种选择是用于大数据的 hadoop,但它不像其他选项那样实时,您可以使用 hadoop 进行数据仓库。 cassandra 或 mongo 都没有事务,因此如果您需要事务,postgresql 更适合。另一种选择是Amazon RDS,但性能较差且价格较高。如果您想使用数据库或 simpledb,您可能还需要数据缓存(例如:memcached)。
对于网络应用程序,如果您的数据很小,我推荐 mongo,如果数据很大,则 cassandra 更好。您不需要 mongo 或 cassandra 的缓存层,它们已经很快了。我不推荐 simpledb,正如你所说,它也会将你锁定在 Amazon 上。
如果您使用 c#、java 或 scala,您可以编写一个接口并为 mongo、mysql、cassandra 或任何其他数据访问层实现它。在动态语言中(例如 rub、python、php)更简单。如果您愿意,您可以为其中两个编写一个提供程序,并且可以在运行时通过仅更改配置来更改存储,它们都是可能的。使用 mongo、cassandra 和 simpledb 进行开发比数据库更容易,并且它们没有架构,这还取决于您使用的客户端库/连接器。最简单的是mongo。 cassandra 中每个表只有一个索引,因此您必须自己管理其他索引,但据我所知,随着 cassandra 0.7 版本的发布,二级索引将成为可能。您也可以从其中任何一个开始,并在将来如果需要的话替换它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)