标签: database-recommendation

数据转换实现

我正在使用我公司的数据库,为许多外部应用程序提供数据。所以我需要将相同的数据转换成很多动态视图。我可以看到一位前数据库开发人员已经实现了许多长链视图-函数-过程调用序列,以进行所有外部应用程序更常见的转换。我认为,这种架构和如此长的请求(存储过程调用一些函数,然后 funcs 调用一些视图,这个视图基于其他视图等等)是一个性能问题,至少查询优化器没有解决这些问题(请确认我的猜测)。这是好方法吗?它是性能下降的原因吗?如果是,我如何重新实现数据库的对象。此刻,我看到了执行此操作的以下步骤:

  • 分析源数据结构(自己的数据)
  • 分析所有外部系统(数据库必须提供什么格式)
  • 每个外部子系统的单独视图、函数、存储过程(我必须避免长链,对于许多子系统 db 对象,如果它是问题的原因)

谢谢你。

performance sql-server-2008 database-design database-recommendation

5
推荐指数
1
解决办法
119
查看次数

用于练习数据库管理的小样本数据库?

我正在寻找一个便携式示例数据库

  • 可以从脚本创建
  • 有一个简单的 ER 模型
  • 用于数据库管理实践目的的数据很少。

我知道那里有 Adventureworks、Northwind 和 pubs 示例数据库,但我正在寻找更小的东西。

知道在哪里可以找到这种数据库吗?

sql-server-2008 sql-server database-recommendation

5
推荐指数
1
解决办法
2万
查看次数

在表中存储日期增量

我正在开发一个 ASP/MS SQL 项目,该项目根据日期和时间执行大量计算。在一种情况下,系统将根据全天最接近的半小时增量查找值。

在设计数据库时,我应该创建一个仅包含增量的查找表,例如:00:00:00, 00:30:00, 01:00:00,然后创建另一个带有值和 FK 到小时的表增量?或者我应该在另一列中包含时间增量吗?或者我不应该在函数或存储过程中包含增量并构建业务逻辑?

database-design sql-server database-recommendation

5
推荐指数
1
解决办法
594
查看次数

不同角色的数据建模

这是我在这里的第一篇文章,所以我希望它足够清楚。我想为销售、购买、出租和修理某种产品的人制作一个应用程序。

我需要创建一个数据库来保存产品和帐户的数据(包括登录名和个人信息)。我的问题是,“帐户”可以是卖方、买方、承租人、修理工,可以是全部、无或某些。卖家、买家、租房者和修理者会有不同的领域,就像卖家可以发布产品,并保存一些只有卖家才能拥有的信息,修理者只能发布他的列表,但卖家,也可以是固定器。买家也可以出售产品并喜欢其他人。卖家和买家之间的区别在于卖家必须是一家公司,等等……

我对数据库的想法是这样的:

产品

product_id
product_name
owner_id (account_id)
Run Code Online (Sandbox Code Playgroud)

帐户

account_id
email
password
Run Code Online (Sandbox Code Playgroud)

卖方

seller_id
account_id
business_name
address
[some fields that only sellers would have...]
Run Code Online (Sandbox Code Playgroud)

买方

buyer_id
account_id
first_name
last_name
address
[some fields that only buyer would have...]
Run Code Online (Sandbox Code Playgroud)

承租人

renter_id
account_id
business_name
address
[some fields that only renter would have...]
Run Code Online (Sandbox Code Playgroud)

固定器

fixer_id
account_id
business_name
address
years_experience
[some fields that only fixers would have...]
Run Code Online (Sandbox Code Playgroud)

然后是其他表,如 account_favorite(用于保存有关哪些产品已被选为收藏的信息)。

现在,我觉得我这样做的方式不是正确的方式。还想如果将来我考虑其他事情,例如“收集器”,我将不得不创建一个新表。因为这是一个会被很多人使用的应用程序,所以我必须关心速度,但我也必须关心人们维护和分析数据。我希望这篇文章很清楚,如果不清楚,请问我。

database-design database-recommendation design-pattern

5
推荐指数
1
解决办法
1126
查看次数

搜索 5 亿条二进制数据记录

我将把500,000,000张图片的签名插入到数据库中。签名将使用libpuzzle生成。每个签名是 338 个字节。(所以 160 GB)加上一个搜索表(阅读下文)。我更愿意将主数据库保留在带有标准 HDD 的 VPS 服务器上(由于成本问题,没有 SSD)。

最重要的方面是搜索时间,插入时间无所谓。

过去,我在 MySQL 中尝试了所有这些(记录更少),并且所有内容都使用一个数据库,主要搜索采用如下方案:

--
-- Table structure for table `signatures`
--

CREATE TABLE IF NOT EXISTS `signatures` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `compressed_signature` varchar(338) NOT NULL,
  `picture_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `picture_id` (`picture_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1107725 ;

-- --------------------------------------------------------

--
-- Table structure for table `stored_pictures`
--

CREATE TABLE IF NOT EXISTS `stored_pictures` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `url` varchar(255) …
Run Code Online (Sandbox Code Playgroud)

mysql schema database-recommendation

5
推荐指数
1
解决办法
1310
查看次数

我们是否适合 SQL Server Enterprise 和表分区?

我们目前有一个包含数百万条记录(最大表中有 1400 万条记录)的生产数据库。

数据库的一个功能是提供时间表信息,因此单个表可以有 200 万个时间表,但可以连接到其他 5 个“明细”表,并且每个明细表都有 50 万到 14 百万条记录。

此外,我们正在运行一些无法在短期内更改或替换的遗留软件。我们遇到的问题是,不幸的是,有一些查询(也是遗留的且无法更改)正在执行大量表扫描。因此,查找 100 个时间表会导致扫描数百万行。

我不是贸易 DBA,但我相信我已经索引了所有我可能索引的内容,尽我所知的逻辑和研究。另外,我相信我已经设置了适当的重新索引作业等。

我们SQL Server 2008 (10.0.5500.0)在具有 32GB RAM(16GB 专用于 SQL Server)的机器上运行。机器上没有太多其他资源,因此大部分资源都用于 SQL Server。

我们的下一个计划是可能向机器添加更多 RAM,并且可能将 SQL Server 使用的 RAM 增加到 32GB。我们的数据库大小在磁盘上约为 56GB。

我的问题是,您认为我们应该考虑升级到 SQL Server 2014 Enterprise 以便我们可以对时间表表进行分区吗?我是表分区的新手,但据我所知,它可以用来按站点和年份对我们的表进行分区?这样 1400 万行将被 10-20 个站点拆分,然后按年份进一步拆分,这样查询将扫描 10k-20k 行而不是 14m。或者我只是完全错过了这里的标记?

任何其他建议将受到欢迎。

谢谢你。

performance sql-server database-recommendation partitioning query-performance

5
推荐指数
1
解决办法
305
查看次数

网站排名的最佳数据库设计

我正在从事一个项目,我需要以两种方式对网站进行排名 - 全球排名及其在特定国家/地区的排名。计算两者的基础有多种因素。大约有 200 个国家需要计算排名。

我正在使用 MySQL

我有两个问题——

全球排名

每当添加任何新网站时 -

  • 如果我将网站排名存储在数据库中,我需要重新计算所有网站的排名。每次添加新网站时,这都需要进行大量处理。
  • 或者另一种选择是为每个网站分配一个分数,每当进行查询时,通过order by根据分数进行分配排名,并返回其位置。这似乎不像order by昂贵的操作那样可扩展。

国家排名数据库和更新

  • 我应该如何存储每个网站的每个国家/地区排名?

  • 添加新网站时如何更新所有这些排名?在这里,更新的成本甚至比全球排名更高。

  • 我应该on-the-fly在查询时生成它然后缓存结果吗?

Play 商店等网站如何显示个性化和基于国家/地区的结果?

mysql performance database-design database-recommendation query-performance

5
推荐指数
1
解决办法
924
查看次数

NoSQL、CouchDB 与 CouchBase,我该怎么办?

我开始在我的生产站点上遇到一些问题,当有一个网页需要加载一个非常大的 ResultSet(目前来自关系数据库,MySQL)时,它需要永远,而且这些结果集只会越来越大。

我开始寻求更好的解决方案,我遇到的是将数据保存在 NoSQL 数据库中的想法。(我已经在使用 Mongo,但由于我的环境中存在大量 DML,Mongo 效率低下。)因此,在网上搜索时,我考虑了以下 2 个选项:

  1. 沙发数据库
  2. 沙发基地

当查看以上两个时,我可以说两者都是基于 JSON 文档的(好吧,这是一个好的开始),但是当进入一些技术背景时,我确实在寻找更好的缓存(我不想杀死我的服务器的 I/O)然后是 MongoDB 的主-主复制能力(我看到 CouchDB 可以根据源->目标/目标->源轻松复制)。

有人可以向我提供您的一些意见,如果您尝试过上述解决方案,我将很高兴听到您的经验。

nosql database-recommendation memory couchdb couchbase

4
推荐指数
1
解决办法
8297
查看次数

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

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

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

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

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

sql-server database-recommendation cursors btree

4
推荐指数
1
解决办法
869
查看次数

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

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

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

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

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

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

database-recommendation

4
推荐指数
1
解决办法
1265
查看次数