我有一个状态机,它需要为不同的用户推送/弹出一些文件名。我传统上会使用堆栈作为数据结构的选择,但这需要使用数据库来完成,因为我没有办法在传入的 Web 请求之间保留数据结构。
我想知道使用数据库实现堆栈功能的好方法是什么?
我需要支持:
编辑:
我正在对一个想法进行原型设计,因此我将 sqlite3 与 python 一起使用。
谢谢!
我正在寻找一个分层数据库管理系统,我遇到的唯一一个是 IBM 的 ims。是否有可以使用的开源系统?。
我偶然得到了这个:
db=> select name from site;
ERROR: column "name" does not exist
LINE 1: select name from site;
^
db=> select site.name from site;
name
---------------
(1,mysitename)
(1 row)
Run Code Online (Sandbox Code Playgroud)
第二个查询返回一个包含整行的元组。使用 postgres 9.0.1。
编辑:按请求定义站点。我真的不重要,这个怪癖适用于任何桌子。
db=> \d site
Table "public.site"
Column | Type | Modifiers
--------+---------+---------------------------------------------------
id | integer | not null default nextval('site_id_seq'::regclass)
title | text | not null
Run Code Online (Sandbox Code Playgroud) 我正在为我们的 Cassandra 装置评估最佳设计。
互联网上关于使用 Cassandra 提供的前两个访问级别——键空间和列族的信息并不多。
我想知道如果您选择创建大量的键空间或列族(> 10.000),是否会受到惩罚以及会受到什么惩罚。
某处的一篇旧博客文章建议 Cassandra 为每个列族保留内存。这篇文章是关于 0.6 版本的,当前版本是 1.0。这仍然是一个真正的问题吗?
在 Cassandra 中使用数以千计的列族或键空间的惩罚是什么?
我试图了解我们的软件供应商决定将日期和时间保存在不同的列中。例如,当行被创建或更新时。时间和日期都是 DateTime 列。我们使用的是 SQL Server 2005。
数据库保存我们 ERP 系统的数据,我相信最大的表包含大约 300 万行。大多数表大约在 100 000 - 1 000 000 行之间。
我个人会默认为单个时间戳选择单个 DateTime。这将允许更容易的时差计算,并且可以轻松地从时间戳中提取日期和时间部分。它也将占用更少的空间。
将日期和时间分开是不好的做法还是我不明白这个设计中有什么非常棒的东西?
我想对 SQL Server 2008 数据库中具有不同用途的对象使用单独的架构。现在我们使用一种相当令人麻木的命名约定来指示表或存储过程的用途,前缀意味着我们必须扫描五六个字符才能看到唯一名称的开头。我想对仅用于驱动 UI(菜单、人员角色等)的表以及维度表与事实表等使用单独的模式。
我的问题是,使用多个模式(模式?)与旧的 dbo 对立,是否会对性能产生影响?
让我们想象一个网站,它是一个人的目录。每个人可能有一张个人资料照片和一份传记。
我承认我的SQL查询可能会更好,但一般来说会更快并且使用更少的处理能力。
检查文件是否存在,然后打开它或
检查 MySql 以查看 bio 是否存在并显示它。
我很确定在上述情况下,文件系统会影响 mysql 数据库。
如果我将数据库设为只读分隔的 txt 文件怎么办?
在这种情况下什么更快?
有没有一点,如果txt文件有太多记录,最好使用MySql?
我正在更新我们网站的产品数据库。它内置于 MySQL 中,但这更像是一个通用的数据库设计模式问题。
我打算切换到超类型/子类型模式。我们当前/以前的数据库主要是单个表,其中包含有关单一类型产品的数据。我们正在考虑扩大我们的产品范围以包括不同的产品。
这个新的设计稿是这样的:
Product product_[type] product_attribute_[name]
---------------- ---------------- ----------------------------
part_number (PK) part_number (FK) attributeId (PK)
UPC specific_attr1 (FK) attribute_name
price specific_attr2 (FK)
... ...
Run Code Online (Sandbox Code Playgroud)
我有一个关于产品属性表的问题。这里的想法是产品可以具有给定属性的列表,例如颜色:红色、绿色、蓝色或材料:塑料、木材、铬、铝等。
此列表将存储在表中,该属性项的主键 (PK) 将在特定产品表中用作外键 (FK)。
(Martin Fowler 的著作Patterns of Enterprise Application Architecture称之为“外键映射”)
这允许网站界面拉取给定属性类型的属性列表,并在下拉选择菜单或其他一些 UI 元素中将其吐出。该列表可以被认为是属性值的“授权”列表。
拉动特定产品时最终发生的连接数量对我来说似乎过多。您必须将每个产品属性表连接到产品,以便您可以获取该属性的字段。通常,该字段可能只是名称的字符串 (varchar)。
这种设计模式最终会创建大量表,并且您最终会为每个属性创建一个表。抵消这种情况的一个想法是为所有产品属性创建一个更像是“抓包”表的东西。像这样的东西:
product_attribute
----------------
attributeId (PK)
name
field_name
Run Code Online (Sandbox Code Playgroud)
这样,您的表可能如下所示:
1 red color
2 blue color
3 chrome material
4 plastic material
5 yellow color
6 x-large size
Run Code Online (Sandbox Code Playgroud)
这可以帮助减少表蠕变,但它不会减少连接的数量,而且将这么多不同类型组合到一个表中感觉有点错误。但是你可以很容易地获得所有可用的“颜色”属性。
但是,可能有一个属性具有比“名称”更多的字段,例如颜色的 RGB 值。这将要求该特定属性可能具有另一个表或具有用于名称:值对的单个字段(这有其自身的缺点)。
我能想到的最后一种设计模式是将实际属性值存储在特定产品表中,根本没有“属性表”。像这样的东西:
Product product_[type] …Run Code Online (Sandbox Code Playgroud) 假设我有两列类型NUMBER(没有精度和比例)和VARCHAR(300). 我看到这些列对于我的数据来说太大了,所以我想将它们修改为NUMBER(11)和VARCHAR(10)。所以如果我运行这个 SQL 语句:
ALTER TABLE FOO
MODIFY(BAR NUMBER(10));
Run Code Online (Sandbox Code Playgroud)
NUMBER(10),oracle 会告诉我吗?有没有官方文档回答我的问题?
我已经阅读了几个显示时间有效性和时间特征的 oracle 教程。但是,在我阅读的示例中,演示表中没有使用主键。
http://docs.oracle.com/cd/E16655_01/appdev.121/e17620/adfns_design.htm#ADFNS1005 http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/12c/r1/ilm /temporal/temporal.html
是否应该将主键添加到这些表中?我问是因为我想知道这些时态表中的一个应该如何被另一个表引用。我可以将一个时态表中的外键添加到另一个时态表吗?
如果我添加一个 pk/外键关系,然后用 pk 更新表中的引用,带有 fk 的表指向一个不再相关的记录......时态数据是否破坏了正常的主键 - 外键关系?如果是这样,这如何影响性能,我是否只使用普通列作为“外键”并为查询中的引用时间段选择正确的列?
有没有人知道或手头有任何示例或教程来显示具有正常或伪正常 pk / fk 用法的时间数据?
谢谢
database-design ×10
mysql ×2
oracle ×2
alter-table ×1
cassandra ×1
datafile ×1
migration ×1
postgresql ×1
sql-server ×1