小编Jac*_*las的帖子

二进制文件应该存储在数据库中吗?

存储与数据库中数据相关的二进制文件的最佳位置是什么?你应该:

  1. 使用 blob 存储在数据库中
  2. 使用数据库中的链接存储在文件系统上
  3. 存储在文件系统中但重命名为内容的散列并将散列存储在数据库中
  4. 我没有想到的东西

(1) 的优点是(除其他外)事务的原子性得以保留。代价是您可能会显着增加存储(和相关的流/备份)要求

(3) 的目标是在某种程度上保留原子性 - 如果您可以强制您正在写入的文件系统不允许更改或删除文件,并且始终具有正确的哈希作为文件名。这个想法是在允许引用哈希的插入/更新之前将文件写入文件系统 - 如果此事务在文件系统写入之后但在数据库 DML 之前失败,那很好,因为文件系统“假装”是所有的存储库可能的文件和哈希值 - 是否有一些文件没有被指向并不重要(如果你小心的话,你可以定期清理它们)

编辑:

看起来一些 RDBMS 以各自的方式涵盖了这一点 - 我很想知道其他人是如何做到的 - 特别是在 postgres 的解决方案中

database-design blob

147
推荐指数
10
解决办法
9万
查看次数

将数组参数传递给存储过程

我有一个进程可以抓取一堆记录(1000 条)并对它们进行操作,当我完成后,我需要将其中的大量记录标记为已处理。我可以用一个大的 ID 列表来表明这一点。我试图避免“循环更新”模式,所以我想找到一种更有效的方法来将这个 ID 包发送到 MS SQL Server 2008 存储过程中。

提案#1 - 表值参数。我可以定义一个只有一个 ID 字段的表类型,然后发送一个包含要更新的 ID 的表。

建议 #2 - XML 参数 (varchar) 和 OPENXML() 在 proc 主体中。

建议 #3 - 列表解析。如果可能的话,我宁愿避免这种情况,因为它看起来笨拙且容易出错。

其中有什么偏好,或者我错过了什么想法?

sql-server-2008 sql-server

63
推荐指数
7
解决办法
27万
查看次数

select count(*) 和 select count(any_non_null_column) 有什么区别?

我似乎记得(在 Oracle 上) utteringselect count(*) from any_tableselect count(any_non_null_column) from any_table.

如果有的话,这两个陈述之间有什么区别?

null oracle aggregate count

60
推荐指数
3
解决办法
4万
查看次数

DBA 如何变得更“程序员友好”?

dba.se 版本programmers.se 版本的问题“反对或支持将应用程序逻辑置于数据库层的论据是什么?”的答案和评论。在某些工作场所中,DBA 和程序员之间的鸿沟非常具有启发性。

DBA 可以采取哪些不同的方式来更好地与程序员合作解决此类问题?

我们应该吗:

  • 研究我们的程序员使用的工具和语言来了解他们面临的困难,尤其是在使用精心设计的数据库时?
  • 鼓励程序员更好地了解数据库以及在数据库级别拥有业务逻辑的优势?
  • 改变我们定义数据接口的方式——例如通过使用对程序员更友好的事务 API(例如,解决向后兼容性等问题)?

database-design best-practices

46
推荐指数
11
解决办法
6443
查看次数

我可以在本地安装 SQL Server Management Studio 吗?

我可以在桌面上安装 SQL Server Management Studio 以访问 SQL Server 2012 实例上的数据库吗?

如果是这样,我在哪里可以找到安装程序?Google 搜索仅返回“express”版本,而我正在寻找完整的 SQL Server Management Studio。

sql-server ssms installation sql-server-2012

44
推荐指数
2
解决办法
10万
查看次数

每个表都应该有一个单字段代理/人工主键吗?

我了解代理/人工密钥的一个好处 - 它们不会改变,而且非常方便。无论它们是单场还是多场,都是如此——只要它们是“人造的”。

但是,有时将自动递增的整数字段作为每个表的主键似乎是一个策略问题。拥有这样一个单字段键是否总是最好的主意,为什么(或为什么不)?

需要明确的是,这个问题不是关于人工 vs 自然的——而是关于是否所有人工键都应该是单字段的

database-design primary-key surrogate-key

36
推荐指数
3
解决办法
5875
查看次数

如何实现只能在单行上设置的“默认”标志

例如,有一个类似这样的表:

create table foo(bar int identity, chk char(1) check (chk in('Y', 'N')));
Run Code Online (Sandbox Code Playgroud)

标志是否实现为 a char(1)、 abit或其他无关紧要。我只是希望能够强制执行它只能在单行上设置的约束。

constraint database-agnostic referential-integrity

32
推荐指数
10
解决办法
2万
查看次数

Oracle - 有什么方法可以查看对特定表的未提交更改吗?

我目前正在通过批处理进行调试,该批处理执行大量 DML 语句,但不会立即执行提交。能够在事务未提交的情况下查看来自另一个会话的“待处理”更改会很好。这可能吗?

例子:

Insert into table myTable (col1, col2) values ("col1", "col2");

--Somehow view the pending transaction maybe by system view?....

...other DML statements....

commit;
Run Code Online (Sandbox Code Playgroud)

oracle oracle-10g transaction

25
推荐指数
5
解决办法
4万
查看次数

如何生成随机字节

我希望能够生成bytea任意长度(<1Gb)的随机字段来填充测试数据。

这样做的最佳方法是什么?

postgresql testing random bytea

21
推荐指数
3
解决办法
5017
查看次数

Oracle 创建 ER 图和数据字典

我是 Oracle 数据库的新手,想为我们现有的数据库开发数据字典和 ER 图。您有任何提示、脚本和工具吗?

oracle database-design

19
推荐指数
4
解决办法
2万
查看次数