Database design 如何学习设计高度事务性的系统?

Database design 如何学习设计高度事务性的系统?,database-design,transactions,distributed,high-availability,distributed-transactions,Database Design,Transactions,Distributed,High Availability,Distributed Transactions,在我的职业生涯中,我主要从事数据分析、BI工具等方面的工作。我处理的大多数应用程序主要是只读应用程序。虽然我也处理过简单的CRUD应用程序,但没有什么特别的事务性。 作为一名软件工程师,如果我不知道如何设计高度事务性的系统和数据库,比如亚马逊、航空公司系统等,我觉得我的学习是一个空白。 我想请这里的社区就这个主题提供一些资源、书籍或简单的项目。在教授必要的理论时,可以采取实际操作的方法。我知道这是一个主观问题,但我可以把最有用的答案标为绿色。 期待您的建议并提前感谢。我将把答案分为四大类,即 理

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

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

  • 理论和学术背景
  • 民间消息来源,
  • 软件和工具,以及
  • 练习
  • 书报 这是该领域的基础——如何从0到相当不错的专业水平,但主要是理论水平

    介绍级 吉姆·格雷

    后面几章中的Silberschatz book()介绍了高级事务系统的内部工作,并提供了一些资源等

    数据库特定 -介绍内存设计对高事务负载的好处。H-store的工作激发了VoltDB的发展

    -快速分布式事务 用于分区数据库系统。提供了一个非常好的背景,相关的工作,并深入了解了最先进的技术

    由Hellerstein、Stonebraker和Hamilton创作 涉及很多方面

    限制和界限 关于高可用事务的优点和局限性

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

    流行和当前来源 博客 是一个完美的博客,你正在寻找什么。 例如,这里有一个非常接近你一直在寻找的东西

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

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

    这是一个有趣的会议/研讨会,有很好的议程和出版物

    我甚至会检查尖端系统的东西

    案例研究体系结构 是一个超级事务内存数据库,由ACM研究员迈克·斯通布雷克(Mike Stonebraker)设计,他是最现代数据库概念的“父亲”

    IBM大型机在高容量事务处理领域仍然占有非常突出的地位 处理。在撰写本答覆时,他们的Z13系统用于

    如果您对“大数据”风格的交易感兴趣,有很多选择,但HBase可能是最有趣的选择。 以下是一些建议的HBase阅读资料: 雅虎建立在HBase之上

    另一个有趣的架构是 用于流式处理和实时处理

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

    您可以使用这些基准测试,并针对开源SMP(如postgres、MySQL)和MPP数据库(如Greenplum)进行实践(这是一个关于查询、性能、一些示例设置和性能的非常全面的文档)

    我推荐了面向HBase的事务系统的实用场景和体系结构

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

    对于流处理,这里有一些使用ApacheKafka(和)的好练习。Cloudera具有良好的“入门”功能

    为了实践面向消息的最先进的系统,我会建议,也许也会经历这些。有许多真正的拓扑特征

    对于好的老JMS,您可以将其用于实践,或者 用这些更复杂

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

    很遗憾,这些问题在这里是离题的。我理解,但这可能是一个重要的问题。当然,这很重要,如果不是对我,而是对你。但正如你所说,这是主观的,需要寻找场外资源。这两个都是投票结束的理由。库马尔-我认为这是一个重要而有价值的问题,我将尽可能完整地回答它。只是等待更多的答案!这是个好答案,爱德蒙。谢谢你的回复。它有非常好的用例和文献。然而,我仍然会问-你认为什么是“锻炼”这个的好方法?库马尔-你指的是纯粹的练习练习还是真实的案例研究?是的,无论哪种可能。如果两者都有,那就更好了。Kumar-我添加了一些真正优秀的源代码,涵盖了整个领域——MPPs、HBase(Hadoop的事务性快速R/W系统)、面向消息的中间件、actors中间件、流媒体甚至大型机。希望这能帮助你和其他对这个话题感兴趣的人。