初创公司常犯的数据模型错误

数据建模很难。以下是在开发模型时应避免的一些失误。

在帮助构建了几家初创公司的分析堆栈之后,人们开始看到一些模式。 有时这些模式是令人愉快的:几乎每个人都喜欢从不知道发生了什么,到对上周发生的事情有一个模糊的概念的那一刻。 其他模式则不那么令人兴奋,通常涉及围绕数据模型或模式的决策。

重要的是要注意,我们将在下面讨论的反模式是初创公司特有的。 其中一些模式实际上对于后期公司来说是不错的主意,但对于资源有限的小型、尚未达到产品市场契合度的初创公司来说,这些是不需要犯的错误。

事不宜迟,以下是早期分析中痛苦的五大来源

1. 使用测试或虚假数据污染数据库

无论是测试帐户、员工帐户、不同的数据程序,还是通过猫科动物心灵感应接收的订单,太多的公司包含的数据都需要您在许多或大多数查询中忽略某些事件或交易。

通过使用测试数据污染数据库,您在公司的所有分析(和内部工具构建)中引入了税收。 您可以将此税收与交易效率或开发人员生产力进行权衡。 有时这种税收是值得的,有时则不值得。 对于大型公司来说,交易效率是一个足够重要的目标,您可以花一些工程师或分析师的时间来清理结果。

如果您规模较小,则很可能负担不起,您可能应该在其他地方做出权衡。

2. 事后重建会话

围绕用户行为、满意度和价值的重要问题的大部分都围绕会话指标。 无论它们被称为“会话”、“对话”、“支持联系人”还是其他名称,这些指标都指的是与用户相关的一些离散事件,这些事件应该组合在一起并作为一个单一概念来处理。 然而,令人震惊的是,初创公司的数据模型通常无法在业务词汇表中捕获这个基本概念。

会话通常是事后(即事后)重建的,这通常会导致很多脆弱性和痛苦。 会话组成的精确定义通常会随着应用程序本身的变化而变化。 此外,通常有很多关于客户端用户会话或服务器处理客户端请求的上下文。 在您的应用程序中分配会话、支持票证或对话 ID 要比事后尝试重建会话容易得多。

3. 软删除

在规模上,在负载很大的数据库中删除行是一件坏事。 软删除是一种常见的模式工具,可以减轻删除的性能损失以及随后的压缩(或清理)。 此外,软删除使您可以轻松地取消删除行以恢复已删除的数据。

另一方面,软删除要求每个读取查询都排除已删除的记录。 如果您只考虑应用程序数据调用,这似乎还不错。 但是,当乘以您将运行的所有分析查询时,这种排除很快就会开始成为严重的拖累。 此外,软删除引入了另一个不同的用户可以做出不同假设的地方,这可能会导致您需要调试的不一致的数字。

4. 滥用半结构化数据

半结构化数据(例如,编码为 JSON 的字段)在随着时间的推移存在许多不同结构的情况下可能很有用。 随着数据库变得越来越大,半结构化数据还可以帮助避免在繁重的读取或写入负载下迁移大型表的麻烦。

但是,当尝试从数据库中获取数据时,半结构化数据也可能导致很多令人头疼的问题。 通常,半结构化数据的模式仅通过约定强制执行,可能会不可预测地更改,或者由于瞬时错误而关闭,并且通常需要大量的事后清理才能有用。

有时,半结构化数据字段是在编写功能后才考虑您需要的结构的借口。 在这种情况下,您实际上拥有结构化数据,只是未强制执行、容易出错,并且通常难以使用。 一个简单的测试:如果 JSON 字段的每个实例都具有相同的四个字段,则您可能应该分解结构。

5. “适合工作的数据库”综合征

公司技术堆栈中存在大量不同数据库通常表明以下三种情况之一

  • 真正庞大、复杂的公司,拥有各种各样的需求和部门。
  • 一个功能强大、性能一流的工程和运维团队,致力于解决非常困难的问题,需要高度优化应用程序的各个方面。
  • (最常见的是)一个小型团队,不断在他们只略微了解的技术中救火。

每添加一个数据库,您都会承担大量的运营开销。 此外,每个额外的数据库都是另一组您需要放入分析数据库的数据。 这些数据库将具有略有不同的语义、数据类型和您必须整理的自然数据模型。

因此,抵制使小型功能更易于实现的冲动,因为您将使整个运营和分析变得更加困难。

提示:让获取业务指标变得容易

在考虑您的数据模型是否满足您的分析和交易需求时,识别以下内容很有用

  • 业务关心的 10 个重要指标
  • 应用程序中最常运行的 10 个更新查询
  • 应用程序中最常见的 10 个读取模式

您正在寻找一种数据模型,该模型可以最大限度地减少所有这些不同查询的痛苦。 一般来说,业务指标的查询是最重要的,因此如果为应用程序更新和读取引入一些复杂性将使查询业务指标更容易,那就这样做。 您将最大限度地提高整体生产力,因为应用程序端的工作查询通常比常见的分析或商业智能问题少得多。

此外,应用程序的查询通常在源代码控制中完成,包装在自动化测试中,并且通常更强大。 业务指标的查询通常是分散的,由许多人编写,并且通常受到的控制较少。 因此,尽您所能让您的企业更容易获得做出更好决策所需的指标。

下一步:初创公司常犯的十个分析错误

在引导分析时,您会犯错误。 以下是如何减少错误的方法。

下一篇文章