项目中的敏捷方法论和 Cassandra 中的查询驱动方法论?

Agile-methodology in Project and Query-Driven methodology in Cassandra?

我们想开始一个新项目。我们的数据库将是 Cassandra;我们基于敏捷在 Scrum 团队中开展项目。
我的问题是,最重要的问题之一是变化,敏捷可以处理这个问题。

Agile software development teams embrace change, accepting the idea that requirements will evolve throughout a project. Agilists understand that because requirements evolve over time that any early investment in detailed documentation will only be wasted.

但是我们有:

Changes to just one of these query requirements will frequently warrant a data model change for maximum efficiency.

Basic Rules of Cassandra Data Modeling 文章中。
我们如何管理我们的项目,同时收集这两个规则?第一个接受更改,但是第二个希望我们知道将在我们的项目中回答的每个查询。 新需求,导致新查询,这将改变我们的数据库,并且会影响质量(吞吐量)。

How can we manage our project gathering both rules together? the first one accept changes easily, but, the second one, want us to know every query that will be answered in our project. New requirements, causes new queries, that will changes our DB, and it will influence the quality

第一条规则并不建议您轻松接受更改,只是您接受需求更改将成为生活中的事实。即,您需要决定如何处理它,而不是试图忽略它或要求预先签署最终要求。

我建议您将 'definition of done'(您同意的一段代码必须满足的条件视为在冲刺中完成)的一部分,以包括更改数据库代码的要求。这可能意味着对此代码的更改会获得更高的估计,以允许您完成冲刺中的工作。通过这种方式,您可以接受变化,并制定计划以确保它不会干扰您的工作。

考虑可以减少数据库更改影响的方法。

执行此操作的一个好方法是进行自动回归测试,以涵盖依赖于数据库的功能。作为持续集成的一部分,定期构建数据库模式也很有用。这有助于消除重构数据模型的恐惧,并鼓励您根据需要经常进行更改。

工作周期则变为:

Developer commits new code and new data model

Continuous integration tears down the test database

Continuous integration creates a new database based on the new data model

Continuous integration adds in some appropriate dummy data

Continuous integration runs a suite of regression tests to ensure nothing has been broken by the changes.

Team continues working with the confidence that nothing is broken

您可能觉得编写自动化测试和配置持续集成是一项巨大的时间和资源承诺。但是从您在项目期间和未来接受变更的难易程度来考虑回报。

这种为了简化变更而进行的前期投资是敏捷方法的基石。