存储与数据库中数据相关的二进制文件的最佳位置是什么?你应该:
(1) 的优点是(除其他外)事务的原子性得以保留。代价是您可能会显着增加存储(和相关的流/备份)要求
(3) 的目标是在某种程度上保留原子性 - 如果您可以强制您正在写入的文件系统不允许更改或删除文件,并且始终具有正确的哈希作为文件名。这个想法是在允许引用哈希的插入/更新之前将文件写入文件系统 - 如果此事务在文件系统写入之后但在数据库 DML 之前失败,那很好,因为文件系统“假装”是所有的存储库可能的文件和哈希值 - 是否有一些文件没有被指向并不重要(如果你小心的话,你可以定期清理它们)
编辑:
看起来一些 RDBMS 以各自的方式涵盖了这一点 - 我很想知道其他人是如何做到的 - 特别是在 postgres 的解决方案中
我正在观看一些 Brent Ozar 视频(例如这个视频),他建议不要在表格前加上‘tbl’
或‘TBL’
。
在网上我发现一些博客说它没有增加文档,而且“阅读它需要更长的时间”。
问题和考虑
我有几个关于在 PostgreSQL 中使用索引的问题。我有一个Friends
带有以下索引的表:
Friends ( user_id1 ,user_id2)
Run Code Online (Sandbox Code Playgroud)
user_id1
并且user_id2
是user
表的外键
这些是等价的吗?如果不是,那为什么?
Index(user_id1,user_id2) and Index(user_id2,user_id1)
Run Code Online (Sandbox Code Playgroud)如果我创建主键(user_id1,user_id2),它会自动为它创建索引吗?
如果第一个问题中的索引不相等,那么在上面的主键命令上创建了哪个索引?
我在 MySQL 数据库中有两个表 - parent
, child
. 我正在尝试根据父表向我的子表添加外键引用。有没有之间的任何显著差异ON UPDATE CASCADE
和ON DELETE CASCADE
我的父表
CREATE TABLE parent (
id INT NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB;
Run Code Online (Sandbox Code Playgroud)
我的问题是:以下 sql 查询有什么区别。
ON DELETE CASCADE
CREATE TABLE child (
id INT,
parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id)
REFERENCES parent(id)
ON DELETE CASCADE
) ENGINE=INNODB;
Run Code Online (Sandbox Code Playgroud)ON UPDATE CASCADE
CREATE TABLE child (
id INT,
parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id)
REFERENCES parent(id)
ON UPDATE CASCADE
) …
Run Code Online (Sandbox Code Playgroud)我们处理来自客户的常规数据馈送,该客户刚刚将其数据库从一种看起来很熟悉的表单(每个实体一行,每个属性一列)重构为一个我似乎不熟悉的表单(每个实体每个属性一行):
之前:每个属性一列
ID Ht_cm wt_kg Age_yr ...
1 190 82 43 ...
2 170 60 22 ...
3 205 90 51 ...
Run Code Online (Sandbox Code Playgroud)
之后:所有属性的一列
ID Metric Value
1 Ht_cm 190
1 Wt_kg 82
1 Age_yr 43
1 ...
2 Ht_cm 170
2 Wt_kg 60
2 Age_yr 22
2 ...
3 Ht_cm 205
3 Wt_kg 90
3 Age_yr 51
3 ...
Run Code Online (Sandbox Code Playgroud)
这个数据库结构有名字吗?有哪些相对优势?旧方法似乎更容易对特定属性(非空、非负等)设置有效性约束,并且更容易计算平均值。但是我可以看到在不重构数据库的情况下添加新属性可能会更容易。这是构建数据的标准/首选方式吗?
在 PostgreSQL 中存储电子邮件地址的正确数据类型是什么?
我可以使用varchar
(甚至text
),但我想知道电子邮件是否有更具体的数据类型。
有没有办法将 postgres 表数据作为 json 导出到文件?我需要逐行输出,例如:
{'id':1,'name':'David'}
{'id':2,'name':'James'}
...
Run Code Online (Sandbox Code Playgroud)
编辑:postgres 版本:9.3.4
我不敢相信他们让事情变得如此困难。我不知道如何查看我的数据库中的数据。
有没有一种简单的方法可以使用 pgAdmin III 查看我的表中的数据?或者,是否有我可以使用的程序不烂?
我希望在数据库中存储一个排序列表。我想有效地执行以下操作。
我能想到的简单方法是在表中存储某种“等级”属性,并通过对该属性进行排序来进行查询。但是在这种方法中,插入/修改具有等级的记录成为一项代价高昂的操作。有没有更好的方法?
具体来说,我希望使用 Amazon 的 SimpleDB 来实现该表。但是关系数据库的一般答案也应该有帮助。
负载配置文件更新:
由于我正在为 Web 应用程序规划此功能,因此这取决于使用该应用程序的用户数量。
如果有 100k 活跃用户(超级乐观:P),那么我每天非常近似的估计是
500k 次选择,100k 次插入和删除,500k 次更新
我希望该表总共增长到 500k。
我希望优化更新、插入和比较操作。项目的排名会不断变化,我需要保持表格更新。
postgresql ×5
blob ×1
datatypes ×1
dump ×1
eav ×1
export ×1
foreign-key ×1
index ×1
innodb ×1
json ×1
mysql ×1
mysql-5.5 ×1
ontology ×1
pgadmin-3 ×1
plpgsql ×1
primary-key ×1
schema ×1
sql-server ×1