【问题标题】:how to design database for country wide data?如何为全国范围的数据设计数据库?
【发布时间】:2019-08-01 16:52:00
【问题描述】:

我必须根据一个国家/地区的州设计数据结构。
该国有 30 多个州,每个州都将写入和读取本州的数据。问题是我是否应该有一个分区表,该表将由 state_code 分区,还是为每个州制作不同的表?我正在使用 PostgreSQL。我没有分区表的经验。每个州都会有大量数据。

数据将是这些村庄中每个区、街道、村和学校的空间数据。

它还将包含每个学校的每个孩子的数据。这将是孩子的基本信息。

将对每个孩子进行筛选,并根据大约 30-40 个参数将每个学生分类到他面临的问题类别中。

与每个学生的健康问题相关的数据也将在那里。这将包括行为问题和身体健康问题。

访问学校的卫生队也将被存储。例如,团队成员及其信息。

我想现在事情更清楚了。每个州将有超过 100 万行。

【问题讨论】:

  • 您好,欢迎来到 Stack Overflow。请阅读stackoverflow.com/help/how-to-ask - 就目前而言,我们没有足够的信息来回答您的问题。您将存储哪些数据? “巨大”是什么意思?您预计会出现什么样的查询?
  • 无法按原样回答问题。最重要的因素是:你存储什么样的数据,目标是什么?每个数据模型都有一些用途。 没有通用解决方案。另外,“巨大”是什么意思?预期的流量是多少?金额本身并不意味着什么。例如,您可以拥有数 TB 的日志。那么,如果您不打算查询它们怎么办?您的问题中缺少很多细节。
  • 要添加到@freakish 的评论中,包括 PostgreSQL 在内的现代 RDBMS 旨在处理大量数据。所谓的“大数据”我认为大数据术语量明智地处理数据这不适合计算机内存..因此,如果您只有 8Gb 的计算机内存,则 9 Gb 的数据可以是“大数据”..当数据可以获得“大数据”标签时,有更多的定义,但每个人都希望拥有数据被称为“大数据”时的不同定义或意见
  • 我正在编辑问题。
  • 超过 30 个州的行数超过 100 万行” - 归结为 3000 万或 1 亿行。如今,这并不被认为是“巨大的”。即使有 1 亿行,您也不一定需要分区来进行快速查询。只需创建一个正确规范化的模型,它可以有效地支持您要运行的查询,并确保您创建正确的索引来支持这些查询。只有如果您确实遇到了性能问题,请考虑诸如分区和/或反规范化之类的事情。

标签: postgresql database-design data-modeling database-partitioning


【解决方案1】:

如果您希望查询对数据运行顺序扫描,那么按状态分区将是一个好主意——如果有一个WHERE 条件将查询限制在一个分区,由于 PostgreSQL 的 ,它会变得更快约束排除 特征。

如果您想管理数据库内部的用户和安全性,您可以使用row level security 来保证没有人看到来自不同状态的数据。这与约束排除很好地配合。

【讨论】:

  • 这就是我的想法……所以如果我按状态 ID 对它进行分区……每个分区在读写时都会被视为一个单独的表?如果发生并发写入,会发生什么?
  • 是的,总是会有 where 条件......因为一个州的用户不会查看其他州的数据
  • 每个分区一个单独的表。对单个表的并行插入并不比对多个表慢,因此分区不会给你带来任何好处。
  • 我可以做一件事...暂时将其作为一个表...稍后如果需要...创建一个新的分区表并迁移数据...感谢您的回答。 ..我得到了解决方案。
  • 稍后分区并移动所有这些行会很痛苦,并且可能需要停机。
猜你喜欢
  • 2014-05-20
  • 1970-01-01
  • 2016-07-16
  • 2015-02-09
  • 2020-01-18
  • 2011-11-20
  • 1970-01-01
  • 2016-09-20
  • 2010-11-18
相关资源
最近更新 更多