事件时间序列的数据库建议

2024-01-05

对于我的一个项目,我必须将大量事件集合输入数据库以供以后处理,并且我正在尝试确定哪个 DBMS 最适合我的目的。

I have:

  • 目前大约有 400,000,000 个离散事件

  • 数据库中将存储约 600 GB 的数据

这些事件有多种形式,但我估计单个属性的数量约为 5,000 个。大多数事件每个仅包含大约 100 个属性的值。属性值将被视为任意字符串,在某些情况下,被视为整数。

这些事件最终将合并为一个时间序列。虽然它们确实有一些内部结构,但没有对其他事件的引用,我相信这意味着我不需要对象 DB 或某些 ORM 系统。

我的要求:

  • 开源许可证 - 我可能需要稍微调整一下。

  • 尽管一开始只使用一个系统,但能够扩展到多个服务器,从而实现可扩展性。

  • 快速查询 - 更新并不那么重要。

  • 适用于 C/C++、Java 和 Python 的成熟驱动程序/绑定。最好拥有与其他人兼容的许可证 - 我宁愿不因为技术决定而承诺任何事情。我认为大多数数据库驱动程序在这里都没有问题,但无论如何应该提到这一点。

  • 适用于 Linux。

  • 如果它也适用于 Windows,那就太好了,但不是必需的

我理想的数据库将允许我通过单个查询检索指定时间段内的所有事件。

到目前为止我发现/考虑到的:

  • PostgreSQL http://www.postgresql.org/随着页面大小的增加,每个表中显然可以有多达 6,000 列。如果我对属性计数的估计没有偏离,那么它可能会偏离。

  • MySQL http://www.mysql.com/每个表似乎有 4,000 列的限制。我could使用带有一点 SQL 功能的多个表,但我不想这样做。

  • MongoDB http://www.mongodb.org/是我目前所倾向于的。它允许我保留事件的内部结构,同时仍然能够查询它们。它的 API 看起来也相当简单。我不知道它在性能方面表现如何 - 至少在单个服务器上。

  • OpenTSDB http://www.opentsdb.net/它的度量收集框架听起来很有趣。我可以为每个属性使用单个时间序列(这可能有助于我的一些处理),将属性值作为标签,并另外标记条目以将它们与特定事件相关联。从管理员和应用程序程序员的角度来看,它可能比上面三个有更陡峭的准备曲线。不知道它的性能。

  • Use HBase http://hbase.apache.org/直接地。这可能比更符合我的要求OpenTSDB http://www.opentsdb.net/,尽管 - 从我过去使用 hadoop 的经验来看 - 管理开销可能仍然高于前三个选项。

可能还有其他数据库可以做到这一点,所以请随时告诉我 - 我将不胜感激任何可能对我有帮助的建议或评论。

PS:我作为数据库管理员的经验很少,所以对于任何误解我深表歉意。


使用具有数千列的表是疯狂的。尤其是当它们大多数如你所说为零时。

您应该首先考虑从此转换您的数据结构:

table_1
-------
event_id
attribute_1
attribute_2
[...]
attribute_5000

变成这样的东西:

table_1          event_values             attributes
--------         ------------             ----------
event_id         event_id                 attribute_id
                 attribute_id             attribute_type
                 attribute_value

它可以与任何 RDMS 一起使用(唯一的限制是数据库的总大小和性能)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

事件时间序列的数据库建议 的相关文章

  • GoLang - 坚持使用 ISO-8859-1 字符集

    我正在开发一个项目 我们需要将信息保存在具有 ISO 8859 1 表的旧数据库中 因此 在向数据库写入内容之前 我需要将其从 UTF 8 转换为 ISO 8859 1 每次从数据库检索它时 我都需要将其转换回 UTF 8 我试图使用图书馆
  • 重命名 MySQL 中的表

    重命名表在 MySQL 中不起作用 RENAME TABLE group TO member 错误信息是 1064 You have an error in your SQL syntax check the manual that cor
  • 常用姓名别名/昵称数据库

    我参与了一个 SQL NET 项目 该项目将搜索名称列表 我正在寻找一种方法来返回类似名字的人的一些结果 如果搜索 Tom 结果将包括 Thom Thomas 等 这是文件还是 Web 服务并不重要 设计示例 Table Names has
  • 面向对象的数据库是否比带有 ORM 的关系数据库更好?

    只是认为带有 ORM 的关系数据库在很多方面与面向对象的数据库非常相似 我的经验仅在于带有一点 ORM 的 RDMS 所以在我看来 面向对象的数据库非常相似 但没有经验我不能肯定地说 如果您使用过面向对象数据库和 ORM 您能比较它们吗 与
  • Java - 如何批量插入和更新数据库

    我想在一个PreparedStatement 中批量处理多种类型的数据库调用 这可能吗 有没有办法做类似的事情 PreparedStatement pstmt connection prepareStatement 哪里的 可以是INSER
  • 如何在MySQL数据库中插入数据?

    我有一个 ASP NET 应用程序和一个 MySQL 数据库 我想编写一个类来插入 删除和显示数据库中的数据 我有到数据库的连接 但无法在数据库中插入数据 我的班级插入方法 public string CreateEntry string
  • 在 SQLAlchemy 中选择 NULL 值

    这是我的 PostgreSQL 表 test gt create table people name varchar primary key marriage status varchar test gt insert into peopl
  • 播种方法是插入具有 NULL 值的附加实体

    我突然出现这种奇怪的行为 我在版本控制 tfs 中比较了我的文件 以确保我没有更改任何内容 也没有发现任何不同 我正在用一些元数据播种我的数据库 我发现它有一个我以前从未见过的非常奇怪的行为 我正在插入一个实体 产品 它会插入该实体2 ti
  • 使用 SqlBulkCopy 和 Azure 并行批量插入

    我在云上有一个带有 sql azure 数据库的 azure 应用程序 我有一个辅助角色 需要对文件 最多约 3000 万行 进行解析 处理 因此我无法直接使用 BCP 或 SSIS 我目前正在使用 SqlBulkCopy 但这似乎太慢了
  • 数组 (UUID[ ]) 会破坏 1NF 吗?

    我的问题是包含 UUID 数组的字段是否会破坏范式 http en wikipedia org wiki Database normalization 在包含数组之前位于 NF 中的表中 原表 CREATE TABLE Floor Floo
  • 在实时计算机上更新(或替换)整个数据库表的最佳方法是什么?

    我每周都会收到一个数据源 我将对其进行解析并放入数据库中 数据每周不会有太大变化 但我应该定期更新数据库 除了每周更新外 数据是静态的 目前重建整个数据库不是问题 但最终该数据库将上线 人们可以在我重建数据库时查询该数据库 数据量并不小 几
  • 我想在 Red Hat Linux 服务器中执行 .ps1 powershell 脚本

    我有一个在窗口中执行的 ps1 powershell 脚本 但我的整个数据都在 Linux 服务器中 有什么可能的方法可以让我在红帽服务器中执行 powershell 脚本 powershell脚本是 Clear Host path D D
  • 如何调试 MySQL 存储过程?

    我当前的调试存储过程的过程非常简单 我创建一个名为 debug 的表 在存储过程运行时从其中插入变量值 这允许我查看脚本中给定点的任何变量的值 但是有没有更好的方法来调试 MySQL 存储过程 下列debug msg可以调用过程来简单地将调
  • 非关系数据库设计[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有兴趣了解您使用过的设计策略非关系型 nosql 数据库 也就是说 不使用传统关系设计或 SQL 的 大多数是新的 数据存储类 例如
  • 数百个别名/同义词与数据库表的完全限定名称

    考虑到多个模式中的数百个数据库表 在创建存储过程和视图时 您是否建议使用别名 同义词或完全限定名称 给定一些 schema table 像这样 Orders OrderHeader Production LineThroughput Sal
  • 如何在postgresql中查找具有特定列的表

    我正在使用 PostgreSQL 9 1 我有一个表的列名 是否可以找到具有此列的表 如果是这样 怎么办 你也可以做 select table name from information schema columns where colum
  • PostgreSQL 中字符串列类型的索引数组

    是否可以在类型为的列上创建索引文本数组 尝试使用GIN索引 但查询似乎没有使用这些索引 Example CREATE TABLE users name VARCHAR 100 groups TEXT Query SELECT name FR
  • CloudKit 通过 cron 作业发送推送通知?

    我正在创建一个大学餐饮菜单应用程序 在其中我需要根据每日菜单发送推送通知 最初 我计划通过 Heroku 将用户数据存储在数据库中 并使用 cron 作业将数据库中的数据与每日菜单进行比较 并向用户发送适当的通知 然而 在 Cloudkit
  • Sequelize.js - “不关联到”

    我在从数据库获取完整数据时遇到一些问题 那是我的模型 User module exports function sequelize DataTypes return sequelize define user id type DataTyp
  • 将古吉拉特语文本插入 MySQL 表会产生垃圾字符和不可读的文本

    我有三个 MySQL 表 我正在向其中插入古吉拉特语内容 当我插入两个表时 它们插入得很好并且可读 但在一个表中 它显示垃圾字符 不可读的文本 我怎样才能解决这个问题 MySQL 有每个表的字符集设置 http dev mysql com

随机推荐