如何学习设计高度交易系统?

时间:2015-12-29 12:14:00

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

在我的职业生涯中,我一直致力于数据分析,BI工具等。我工作的大多数应用程序都是主要的只读应用程序。虽然我也曾在简单的CRUD应用程序上工作,但没有什么特别的交易。 作为一名软件工程师,我觉得如果我不知道如何设计高度交易的系统和数据库,如亚马逊,航空公司系统等的工作方式,我的学习中就会出现空白。 我想请社区人士就这个问题提出一些资源,书籍或简单项目。在教授必要的理论的同时可以采用实践方法的东西。我知道这是一个主观问题,但我可以将最有用的答案标记为绿色。 期待您的建议,并期待感谢。

1 个答案:

答案 0 :(得分:9)

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

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

    这是该领域的基础 - 如何从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 - 快速分布式事务 用于分区数据库系统。提供非常好的背景,相关工作,并深入了解最新技术。

    Hellerstein,Stonebraker和Hamilton的

    Architecture of a Database System 涵盖了很多方面。

    限制和边界

    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 大型机在高容量交易领域仍然占有非常突出的地位 处理。在撰写此答案时,toutingextreme, encrypted transaction processing volumes他们的Z13系统Omid

    如果您有兴趣进行交易"大数据"风格,有很多选择,但HBase可能是最有趣的。 以下是HBase的一些建议阅读来源: 雅虎的Transactions over HBase建立在HBase之上 Twitter, now Apache Storm

    另一个有趣的架构是 Apache KafkaTPC用于流媒体和实时处理。

    基准和练习

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

    您可以使用这些基准测试并针对开源SMP(例如postgres,MySQL)和MPP数据库(例如Greenplum(a how MPP databases process queries)进行操作,以获得有关查询,性能,一些示例设置的精彩而全面的文档,和these)。

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

    对于最先进的消息和面向演员的交易系统,您可能需要购买一两本书。    对于Akka(作为Spark的内部),您可以使用here并在每章末尾进行练习。 培训课程parts 1也有一些练习。

    对于流处理,以下是Apache Kafka(http://www.confluent.io/blog/stream-data-platform-2/guide)的一些很好的练习。 Cloudera有一个很好的"入门" Getting Started with Storm

    为了实践面向消息的最先进系统,我建议exercises,也许可以通过这些online reference。有很多真实拓扑。

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

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