【问题标题】:How to learn about designing highly transactional systems?如何学习设计高度事务性的系统?
【发布时间】:2016-04-03 07:48:32
【问题描述】:

在我的职业生涯中,我主要从事数据分析、BI 工具等方面的工作。我工作的大多数应用程序主要是只读应用程序。虽然我也处理过简单的 CRUD 应用程序,但没有什么特别的事务性。 作为一名软件工程师,如果我不知道如何设计高度事务性的系统和数据库,比如亚马逊、航空公司系统等如何工作,我觉得我的学习是空白的。 我想请这里的社区推荐一些关于这个主题的资源、书籍或简单的项目。在教授必要理论的同时可以采取动手方法的东西。我知道这是一个主观问题,但我可以将最有用的答案标记为绿色。 期待您的建议和感谢。

【问题讨论】:

  • 好吧,不幸的是,这些问题在这里是题外话。
  • 我明白,但这可能是一个重要的问题
  • 当然这很重要,如果不是为了我,而是为了你。但正如你所说,这是主观的,正在寻找场外资源。两者都是投票关闭的理由。
  • Kumar - 我认为这是一个重要且有价值的问题,我将尝试尽可能完整地回答它。
  • 等待更多答案!

标签: database-design transactions distributed high-availability distributed-transactions


【解决方案1】:

我将把答案分为四大类,即

  1. 理论和学术背景,
  2. 热门来源,
  3. 软件和工具,以及
  4. 练习。

书籍和论文

这是该领域的基础——如何从 0 到相当不错的专业水平,但主要是理论上的。

介绍级别

Transaction Processing: Concepts and Techniques (The Morgan Kaufmann Series in Data Management Systems) 吉姆·格雷

Silberschatz 书 (Database System Concepts) 在后面的章节中涵盖了高级事务系统的内部工作原理,有一些资源等。

数据库特定

H-store paper - 描述内存设计对高事务负载的好处。 H-store 的工作激发了 VoltDB 的发展。

Calvin paper - 快速分布式事务 用于分区数据库系统。提供了非常好的背景、相关工作以及对最新技术的洞察力。

Architecture of a Database System Hellerstein、Stonebraker 和 Hamilton 涵盖很多方面。

限制和界限

Great paper 谈高可用性事务的优点和局限性。

CAP Theorem paper - 关于大规模系统的一致性、可用性和分区的设计权衡。 非常重要。

Parallel Processing and Parallel Databases

流行和当前来源

博客

High Scalability 是您正在寻找的完美博客。 例如,这里是great entry on the evolution of Amazon's architecture。非常接近您一直在寻找的内容。

FacebookLinkedInTwitter 工程博客是很好的资源。我还会查看Google Research 网站和他们的 Google+。 Netflix 也不错。

会议

VLDB 和 SIGMOD 会议(包括 SIGMOD blog)是研究人员/学术界和企业展示大多数最先进数据系统的地方。

HPTS 是一个有趣的会议/研讨会,具有良好的议程和出版物。

我什至会检查 USENIX series 是否有最先进的系统资料。

案例研究架构

VoltDB 是一个超事务内存数据库,由 ACM 研究员、最现代数据库概念之父 Mike Stonebraker 设计。

IBM 大型机在大容量交易领域仍然占有举足轻重的地位 加工。在撰写此答案时,他们是touting 他们的 Z13 系统 extreme, encrypted transaction processing volumes

如果您对“大数据”风格的交易感兴趣,有很多选择,但 HBase 可能是最有趣的一种。 以下是 HBase 的一些推荐阅读资源: 雅虎的Omid 基于 HBase Transactions over HBase

另一个有趣的架构是Twitter, now Apache Storm Apache Kafka 用于流式处理和实时处理。

基准和练习

如果您想尝试一些事情,请查看TPC 基准系列。有事务、ETL、BI 和决策支持/混合负载分析基准。 这些都是面向关系的。

您可以使用这些基准测试并针对开源 SMP(例如 postgres、MySQL)和 MPP 数据库(例如 Greenplum)(link 到关于查询、性能、一些示例设置和@ 987654348@)。

我为面向 HBase 的事务系统推荐了 these 实用场景和架构。

对于最先进的消息和面向参与者的事务系统,您可能需要购买一两本书。 对于 Akka(作为 Spark 的内部),您可能可以使用 Akka in Action 并完成每章末尾的练习。 还有一些来自培训课程的练习here

对于流处理,这里有一些使用 Apache Kafka 的很好的练习(parts 1http://www.confluent.io/blog/stream-data-platform-2/)。 Cloudera 有一个很好的“入门”guide

要练习面向消息的最先进的系统,我建议Getting Started with Storm,也许可以通过这些exercises。有许多真实拓扑的特色。

对于好的旧 JMS,您可以使用此 online reference 进行练习,或者 使用这些Active MQ exercises 更复杂。

如果你想用大型机折磨自己,试试这个emulator。 它模拟 IBM 的 OS/370-390。

【讨论】:

  • 这是一个很好的答案,埃德蒙。感谢您的答复。它有很好的用例和文献。但是,我仍然想问 - 你认为什么是“锻炼”这个的好方法?
  • Kumar - 您是指纯粹的练习练习还是真实案例研究的复制品?
  • 是的,无论哪种方式。如果两者兼而有之,那就更好了。
  • Kumar - 我添加了对涵盖整个领域的一些真正优秀的资源的引用 - MPP、HBase(Hadoop 的事务性、快速 R/W 系统)、面向消息的中间件、参与者中间件、流媒体甚至大型机。希望这对您和任何对该主题感兴趣的人有所帮助。
猜你喜欢
  • 2020-08-08
  • 2011-11-01
  • 2012-06-04
  • 1970-01-01
  • 2018-05-20
  • 2014-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多