3

我是分布式 NoSQL 数据库(如 Hadoop、Cassandra 等)的新手。我有几个问题需要寻求专家建议:

  1. 您能否列出从目前的传统数据库(如 MySQL)转变为这些基于集群的大型数据库时通常会面临的问题/挑战?
  2. 当需要适应这些开源项目的更新版本时,有哪些困难(如果有的话)?
  3. 您能否列出通常存储/保存在 memcached 中以快速呈现页面的内容?
  4. 我如何才能理解开源项目的源代码,以便我可以在它的基础上进行构建并回馈社区?

以上问题可能听起来很愚蠢和基本,但请专家们尽其所能详细回答上述问题。

4

2 回答 2

0

我的经验是:

  1. 当来自关系背景时,主要的挑战是用 No-SQL 术语来思考。例如,HBase(建立在 Hadoop DFS 上)只会给你升序,如果你想做一个降序查找,你需要维护一个反向索引;即 ID 1 指向书 A,反向索引 (max - 1) 指向 1。文档是一个问题,但是 - 与所有 OSS 一样,社区非常重要。除了 Git 和 Jersey,我想说 HBase 社区非常有帮助,因此可以弥补文档的不足,并且 HBase 文档一直在改进。另一个挑战是搜索。我们经常使用 SQL RDBMS 进行搜索,例如,HBase 根本不适合该目的。建议在使用 HBase 进行可靠存储的同时使用其他软件进行搜索,例如 Elastic Search、Apache Solr、Apache Lucene 等。
  2. 这实际上取决于项目到项目,如果 HBase 有很大的改进,从 0.20.X 到 0.90.X(它的发布非常出色)。AFAIK 数据存储格式没有变化,API 也没有发生太大变化,但是就像任何主要版本的主要 OSS 一样,API 发生了变化,但细微的变化没有 API 变化。虽然在升级方面没有丰富的经验,但从我在这方面的小冒险中我注意到检索数据没有问题。
  3. 这很棘手,并且很大程度上取决于此处所讨论的应用程序类型。正如您提到的 memcached,我想分享我们目前正在经历的经验。除了直接的主键查找之外,我们不使用 HBase 进行任何搜索。所有其他搜索都通过 Apache Solr(基于 Lucene)进行。所以搜索结果被 Solr 缓存了。在应用层,正如我们使用 Java 一样,我们使用 Ehcache 来存储原始对象。在 Web 缓存中,我们使用Varnish Cache,使用 ESI,我们将页面分割成每个用户的内容,例如登录、注销、帐户、购物车等,以及一般内容,例如新闻、事件、产品等,以实现高吞吐量。
  4. 我想同意 Mark Tozzi 的观点。
于 2011-01-04T06:15:48.470 回答
0

我可以提供一些想法:

1:文档和示例一直是我使用 Hadoop 和相关项目的项目的主要挑战。与 MySQL 相比,通常很难找到可用的功能以及如何使用它们。邮件列表在这方面提供了很大的帮助。学习从批处理和“全表扫描”的角度进行思考也是一种调整,习惯 Map Reduce 编程并非易事,尽管有许多工具可以防止您编写原始 map reduce。

2:很多 Hadoop & Friends 代码库基本上仍然是 alphaware,有时版本之间会发生很大变化。您肯定需要一个测试集群先进行升级,然后看看有什么问题。在升级过程中,API 的剧烈变化并不意外。

3:我没有专门使用memcached,我使用Hadoop进行后端ETL处理,而不是渲染页面。在这里真的帮不了你。

4:了解项目的最佳方式是获取代码并开始查看它。练习使用它一段时间,最终你会发现一些你认为可以做得更好的东西,或者你想要的功能。这是一个参与的好地方。请务必注册开发人员邮件列表,并注意现有的错误列表和功能请求,以查看是否有人已经在从事类似的工作。这些项目中的大多数,您都需要让具有提交权限的人将您的代码放入其中,但这并不太难。阅读您有兴趣参与的特定项目以获取更具体的信息。

于 2011-01-03T16:50:48.460 回答