AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[database-recommendation](dba)

Martin Hope
lyeaf
Asked: 2023-11-28 02:59:47 +0800 CST

什么数据库可以存储20~十亿行

  • 5

我计划归档邮件,但不确定应该使用哪个。

它应该能够容纳最多 200 亿行(这就是我期望的总数)

每行将包含三列:user_id、消息、日期

user_id 是一个 30 个字符的字符串。该消息的长度介于 1 - 20 000 个字符之间。我预计平均为 140 个字符。(UTF-8,它应该允许表情符号、不同的字母表等)

我只想要 user_id 的索引,而不是消息/日期的索引。

我只计划进行 INSERT 查询,并且非常简单 SELECT * WHERE user_id = XXXXX 会有很少的 SELECT,我预计峰值为 10 个/分钟。SELECT 不需要太快,1 到 20 秒之间的任何时间都可以。

但是会有很多INSERT。大概每秒5000-10000次。

我的服务器将配备: CPU:AMD Ryzen™ 9 7950X3D RAM:128 GB DDR5 ECC 驱动器:1x 7.68 TB NVMe SSD 数据中心(来自 Hetzner)

database-recommendation
  • 2 个回答
  • 109 Views
Martin Hope
Artem Sevos
Asked: 2023-04-07 18:34:53 +0800 CST

为具有 1Gb RAM 的小型虚拟服务器选择关系数据库

  • 9

我正试图找到一个像样的关系数据库,它可以在小型服务器上运行,易于管理并且受到社区的喜爱。

我的个人 Ubuntu 服务器需要一个轻量级关系数据库,只有 1Gb 内存。它会用于偶尔的读写,因此不需要高性能。

我考虑过流行的选项,如 MySQL 和 PostgreSQL,但它们消耗太多资源,甚至 MariaDB 也可能太重,因为其他项目也应该在我的服务器上运行。

我考虑过 Firebird,但事实证明它对我来说不是很直观,而且如果没有很多社区生成的指南,故障排除也很困难。

我想知道是否值得为小型宠物项目学习像 Firebird 这样的利基数据库。是否有需要最少 RAM、具有直观管理、驱动程序和 ORM 以及社区支持的替代方案?

database-recommendation
  • 3 个回答
  • 561 Views
Martin Hope
Babszem
Asked: 2023-03-27 01:23:16 +0800 CST

高度互连实体的最佳数据库解决方案?

  • 5

我正在构建一个服务(或者更确切地说是一组微服务)来充当类似社交网络的网站的后端。简而言之,这意味着我的数据如下:

  • 数百万个实体
  • 具有数十种属性
  • 随着时间的推移,实体之间可能存在数千个连接(例如在 Facebook 上,某人可能有数千个“朋友”)。
    • (有不止一种类型的连接,每一种都可能有数千个)
    • 连接示例:
      • 实体 A 认识实体 B
      • 实体 A 已阻止实体 B
      • ETC。
      • 从概念上讲,每个实体都维护着其他实体的一长串标识符
  • 我需要能够在哪里进行搜索
    • 我可以根据要匹配的一组属性搜索所有实体
    • 同时过滤掉发起实体已经存在的连接

我试图弄清楚什么是存储这些数据的最佳数据库解决方案。我不精通数据库技术,所以我需要一些建议来考虑。

我知道 SQL / 关系数据库可以轻松地针对前 2 个标准(实体数量和属性数量)进行扩展,但我不确定它们是否适合管理连接。

我需要一种合适的数据库技术,它也可以以分布式方式设置——并且最好在云环境中可用。如果那是 SQL 数据库,我将如何存储和管理连接?

database-recommendation
  • 1 个回答
  • 51 Views
Martin Hope
Pavneet Singh
Asked: 2020-12-01 16:12:20 +0800 CST

将具有动态列数和行数的时间序列数据存储到合适的数据库中

  • 0

我有一个时间序列熊猫数据框,它每分钟动态增加列并添加新行:

最初的:

timestamp                100     200     300
2020-11-01 12:00:00       4       3       5

下一分钟:

timestamp                100     200     300   500
2020-11-01 12:00:00       4       3       5     0
2020-11-01 12:01:00      14       3       5     4

数据框每分钟都有这些更新的值等等。

所以理想情况下,我想设计一个支持这种动态列结构的数据库解决方案。列数可能会增长到超过 20-30k+,并且由于它是一分钟的时间序列,因此每年将有 500k+ 行。

我已经读过关系数据库对列数有限制,所以这可能在这里不起作用,而且,因为我正在为新列设置数据并将默认值(0)分配给以前的时间戳,所以我输了MySQL 上的默认参数。

最终,我将查询 1 天、1 个月的数据以获取列的数据及其值。

请为这种类型的动态行和列数据建议一个合适的数据库解决方案。

database-design database-recommendation
  • 1 个回答
  • 258 Views
Martin Hope
Imran Faruqi
Asked: 2020-11-09 03:00:19 +0800 CST

除了 MS SQL Server,我们在任何其他数据库中是否有类似文件表/文件流的支持?

  • 0

我正在寻找 Microsoft SQL Server 的文件表/文件流功能的替代方案。原因是我真的很想使用 SQL Server 文件表,但我在 Linux 上使用 docker。

不幸的是,微软在文件表方面没有为 Linux 提供任何支持。请参阅仍然打开的此问题。不过最好使用 MySQL 或 PostgreSQL。

SQL Server 文件表使用操作系统的文件系统来存储文件并在 SQL 表中同步这些文件值。它比保存 BLOB 快得多。此外,如果我运行数据库备份,它会被备份。因此,它使用文件系统来提高速度,同时保持与数据库的同步。我还可以通过文件系统和/或事务访问文件。

database-recommendation filestream
  • 1 个回答
  • 1994 Views
Martin Hope
Optic_Ray
Asked: 2019-04-17 01:52:10 +0800 CST

如何在不覆盖整个文件的情况下将表中特定单元格上的数据库操作(写入、更新、更改)写入磁盘?

  • 4

当我想使用 python 写入或更改 excel 文件/表的特定单元格时,我将使用 pandas read_csv 然后更改特定单元格中的值并使用 to_csv 写回文件。但是写回文件似乎是用仅在单个单元格中不同的文件的更新版本覆盖整个文件。当我在万亿行和万亿列的表中更改一个或两个单元格时,这是一个问题。

当我们在数万亿个表中的单个单元格上进行写入/更改数据库操作(如在 SQL 中)时,它似乎是在磁盘中仅对已修改的单元格进行更改,而不是覆盖整个文件。

数据库如何促进仅写入/更新磁盘表中的特定单元格而不是覆盖整个文件?

顺便说一句,我没有使用 SQL 数据库,因为我的表包含数字列名,而 SQL 不支持它。如果您知道任何支持数值作为列名的 SQL/NOSQL 数据库,请告诉我。

sql-server database-recommendation
  • 1 个回答
  • 882 Views
Martin Hope
McJagger
Asked: 2017-10-27 18:30:54 +0800 CST

基于 SQL 的正则表达式规则引擎

  • 0

我有一张表,可用于根据提供的条件确定操作。这就是现在的样子。

IPAddress, MACAddress, Hostname, ScriptName, Argument1, Argument2, Argument3
10.2.1.* ,  .*       , .*      , diagnostics.sh, -runAll,        ,     

在此表中,前三列是条件,后四列是操作。条件单元格的值是我在其上执行 REGEX_LIKE 的正则表达式值,因此当我查找要在设备上运行的正确脚本时,我会查看它的 IP(或 MAC,我得到一个或另一个,而不是两个)并且主机名,如果正则表达式匹配,那么我会得到需要运行的脚本名称和该脚本的参数。

有些脚本只有一个参数,有些有两个,还有一些有三个。

我该如何修改它以便我可以任意列出条件和操作。例如,我得到了条件的键、值映射(属性名称、属性值),一旦满足规则,我就会检索与该设备相关的操作键、值元素列表。

为简单起见,初始化后不会对该数据库进行任何更新。它在启动时通过从平面文件中读取规则进行初始化,并在运行时用于确定已满足所提供输入的规则。

这是我认为更适合这个的模式,但我不知道这是否正确,我也不知道如何获得匹配规则。

Table Name: Column List
Attributes: attributeId, name, value
Conditions: conditionId, ruleId, attributeId
Actions   : actionId, ruleId, attributeId
Rules     : ruleId
database-recommendation h2
  • 2 个回答
  • 60 Views
Martin Hope
Darwin Cabiling
Asked: 2017-07-07 18:06:02 +0800 CST

MySQL 审计和一般日志

  • 6

请问MySQL Audit log plugin和general log的区别?我正在寻找在 MySQL 服务器中完成的任何活动。

mysql database-recommendation
  • 1 个回答
  • 6672 Views
Martin Hope
Davinel
Asked: 2017-06-14 17:24:49 +0800 CST

用于未锚定 LIKE 条件的良好数据库

  • 2

基本上我需要一个适合查询的数据库,比如LIKE %abc%.

我已经尝试过使用 GIN 索引的 PostgreSQL,它非常好,但也许还有更好的东西?我还尝试了 MongoDB,发现像“/abc/”这样的查询工作得非常糟糕,而 Mongo 索引只支持“/^abc/”。

我的数据库结构非常简单。

PostgreSQL 中的示例查询:

SELECT DISTINCT(id), title FROM data AS data
INNER JOIN datatosynonym AS dts ON dts.data_id = data.id
WHERE dts.synonym_simple LIKE "%abc%"

在 MongoDB 中

db.data.find({synonymssimple: /abc/})

其中 synonymssimple 是一个字符串数组。

PostgreSQL 中的示例数据

数据表:

id | title | timestamp
 1 |  Abc  | 1145836800
 2 |  Qwe  | 1145836800

数据同义词表:

id | synonym_simple | data_id
 1 |       abc      |   1
 2 |       bac      |   1

我的基准测试显示以下结果:

  1. 具有 b-tree 索引和 %abc% 查询的 PostgreSQL - 每个查询约 15 毫秒
  2. 具有 b-tree 索引和 abc% 查询的 PostgreSQL - 每个查询约 1ms
  3. 具有 GIN 索引和 %abc% 查询的 PostgreSQL - 每个查询约 1.5 毫秒
  4. 具有 GIN 索引和 abc% 查询的 PostgreSQL - 每个查询约 1 毫秒
  5. 没有索引和 /abc/ 查询的 MongoDB - 每个查询约 25 毫秒
  6. 具有 b-tree 索引和 /abc/ 查询的 MongoDB - 每个查询约 80 毫秒
  7. 具有 b-tree 索引和 /^abc/ 查询的 MongoDB - 每个查询约 0.25 毫秒

遗憾的是我不能使用 /^abc/ 查询。

database-recommendation index-tuning
  • 1 个回答
  • 195 Views
Martin Hope
Eric B
Asked: 2017-04-20 10:31:07 +0800 CST

我可以使用哪些数据库来表示有序集?

  • 4

在 SQL 数据库中,表示任意排序集的唯一方法是为每条记录赋予一个“顺序”,每次更新或移动此顺序中的项目时,您都必须更新或以某种方式维护整个等级列表每晚工作或类似的东西。

例如,我可以[C, B, D, A]在 SQL 数据库中以这种方式表示有序集:

ID  Name   Order
1   A      4
2   B      2
3   C      1
4   D      3

如果我想将一个项目移动到集合中的不同位置,或者添加一个新项目,我可能需要更新很多项目。一般来说,这种方法有很多维护开销。

查询数据库中的数据对 SQL 来说不是问题,问题是重新排序集合的显着维护开销。SQL 中没有简单的操作可以将项目移动到集合中的新位置。排序是任意的和用户定义的。

我意识到这可以使用 SQL 来完成,执行某些操作(如前置项目或将项目移动到新位置)非常笨拙。即使是这个颠倒集合顺序的示例操作也需要相当冗长、复杂的查询。我正在寻找的数据库类型可能本身就支持这样的操作,或者至少更优雅。

所以,如果我正在设计一个非常涉及有序集的应用程序(例如 Trello),那么 SQL 似乎不是我理想的数据库技术。是否有任何数据库的语法以更自然的方式支持有序集?

这些是来自 Cassandra 文档的一些 CQL3 查询,它们似乎与我正在寻找的内容很接近。这将一个项目添加到有序集合中。

UPDATE users SET top_places = [ 'the shire' ] + top_places WHERE user_id = 'frodo';

这个将设置集合中位置 2 的项目的值。我怀疑我可以使用它来轻松执行任意交换/重新排序。

UPDATE users SET top_places[2] = 'riddermark' WHERE user_id = 'frodo';

不幸的是,文档还指出

虽然我们将来可能(或可能不会)稍微放宽该规则,但这仍然意味着集合并不意味着过大。它们不能替代对表格进行适当的建模。

这似乎表明有序集在 CQL3 中还不是(还)一等公民。

database-design database-recommendation
  • 3 个回答
  • 997 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve