标签: rdms

什么是宽列存储?

谷歌搜索定义要么返回面向列的数据库的结果,要么给出非常模糊的定义。

我的理解是宽列存储由列族组成,列族由行和列组成。所述系列中的每一行都一起存储在磁盘上。这听起来像是面向行的数据库存储数据的方式。这让我想到了我的第一个问题:

宽列存储与常规关系数据库表有何不同?这是我的看法:

* column family        -> table
* column family column -> table column
* column family row    -> table row
Run Code Online (Sandbox Code Playgroud)

这张来自Database Internals 的图片看起来就像两个普通表:

两个列族、内容和锚点

我对有什么不同的猜测来自这样一个事实,即沿边宽的列商店提到了“多维地图”。所以这是我的第二个问题:

宽列存储是否从左到右排序?意思是,在上面的例子中,行是先按Row Key,然后按Timestamp,最后按Qualifier

rdms wide-column-store

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

如何在Oracle SQL中检索父行的所有递归子级?

我有一个递归查询,它确实扩展了这个Java猴子SQL知识的限制.现在它终于凌晨1点半了,现在可能是时候开始寻求帮助了.这是谷歌失败的少数几次之一.

表格如下:

Parent_ID CHILD_ID QTY
25        26        1
25        27        2
26        28        1
26        29        1
26        30        2
27        31        1
27        32        1
27        33        2
Run Code Online (Sandbox Code Playgroud)

我正在尝试获得以下结果,其中父项列出了下面的每个子项.注意qty的级联也是如此.

BASE    PARENT_ID  CHILD_ID   QTY
25         25        26        1
25         25        27        2
25         26        28        1
25         26        29        1
25         26        30        1
25         27        31        2
25         27        32        2
25         27        33        4
26         26        28        1
26         26        29        1
26         26        30        2
27         27 …
Run Code Online (Sandbox Code Playgroud)

sql oracle recursion rdms

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

SQL一对一关系与单个表

考虑下面的数据结构,其中用户具有少量固定设置.

用户

[Id] INT IDENTITY NOT NULL,
[Name] NVARCHAR(MAX) NOT NULL,
[Email] VNARCHAR(2034) NOT NULL
Run Code Online (Sandbox Code Playgroud)

用户设置

[SettingA],
[SettingB],
[SettingC]
Run Code Online (Sandbox Code Playgroud)

将用户的设置移动到单独的表中是否正确,从而与users表创建一对一的关系?这是否比将用户存储在与用户相同的行中提供了任何真正的优势(明显的缺点是性能).

sql database-design rdms

12
推荐指数
2
解决办法
6590
查看次数

Postgres更新了2个表的内部联接?

我在本地Postgres数据库中有3个表:

[myschema].[animals]
--------------------
animal_id
animal_attrib_type_id (foreign key to [myschema].[animal_attrib_types])
animal_attrib_value_id (foreign key to [myschema].[animal_attrib_values])

[myschema].[animal_attrib_types]
--------------------------------
animal_attrib_type_id
animal_attrib_type_name

[myschema].[animal_attrib_values]
--------------------------------
animal_attrib_value_id
animal_attrib_value_name
Run Code Online (Sandbox Code Playgroud)

在运行时我会知道animal_id.我需要运行SQL来更新animal_attribute_value_name与此项关联的内容,例如:

UPDATE
    animal_attribute_values aav
SET
    aav.animal_attribute_value_name = 'Some new value'
WHERE
    # Somehow join from the provided animal_id???
Run Code Online (Sandbox Code Playgroud)

我可能不得不做一些嵌套SELECTINNER JOINWHERE子句内部,但不知道如何做到这一点.提前致谢!

编辑:

假设我有一个animal包含以下值的记录:

[myschema].[animals]
--------------------
animal_id = 458
animal_attrib_type_id = 38
animal_attrib_value_id = 23
Run Code Online (Sandbox Code Playgroud)

相应的animal_attrib_value(id = 23)具有以下值:

[myschema].[animal_attrib_values]
--------------------------------
animal_attrib_value_id = 23
animal_attrib_value_name = …
Run Code Online (Sandbox Code Playgroud)

sql postgresql inner-join rdms sql-update

9
推荐指数
1
解决办法
3万
查看次数

Oracle数据库安装错误:环境路径

尝试在Windows 7(64位)上安装Oracle Database 11g第2版时.

遇到错误后遇到(PRVF-3929)

oracle安装向导

它声明环境变量路径太长.要访问此变量,我在Windows中搜索"envir"并选择"为您的帐户编辑变量设置".据推测,它是系统的路径,而不是必须改变的用户.

系统

我可以自行决定删除 - 自然删除扩展名会影响不同的语言编辑.为什么Oracle要求这个限制,这是否特定于Oracle的安装,还是使用oracle dbms的永久限制?

installation environment-variables rdms oracle11g system-variable

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

在表JOIN中实际发生了什么?

我试图看看我的理解JOINs是否正确.

对于以下查询:

SELECT * FROM tableA 
   join tableB on tableA.someId = tableB.someId
   join tableC on tableA.someId = tableC.someId;
Run Code Online (Sandbox Code Playgroud)

RDMS基本上执行类似的伪代码如下:

List tempResults
for each A_record in tableA
    for each B_record in tableB
        if (A_record.someId = B_record.someId)
            tempResults.add(A_record)

List results 
for each Temp_Record in tempResults
    for each C_record in tableC
        if (Temp_record.someId = C_record.someId)
            results.add(C_record)

return results;
Run Code Online (Sandbox Code Playgroud)

所以基本上更多的记录与同someId tableAtableBtableC,更记录了关系数据库管理系统具有扫描?如果所有3个表都有相同的记录someId,那么基本上对所有3个表进行全表扫描?

我的理解是否正确?

mysql sql rdms

6
推荐指数
1
解决办法
56
查看次数

在SQL Server中的JDBC插入上自动生成密钥

是否有一般的交叉RDMS,我可以在JDBC插入上自动生成密钥?例如,如果我有一个包含主键,id和int值的表:

create table test (
  id int not null,
  myNum int null
)
Run Code Online (Sandbox Code Playgroud)

并插入

PreparedStatement statement = connection.prepareStatement("insert into test(myNum) values(?)", Statement.RETURN_GENERATED_KEYS);
statement.setInt(1, 555);
statement.executeUpdate();
        statement.close();
Run Code Online (Sandbox Code Playgroud)

我得到一个java.sql.SQLException:无法将值NULL插入列'id'.

我有一种感觉,这完全取决于RDMS.我们使用的是SQL Server 2005,我已经设置好了

CONSTRAINT [PK_test] PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 1) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

在桌子上没有运气.

java database sql-server jdbc rdms

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

我应该使用NoSQL而不是MySQL吗?

我正在使用PHP开发Web应用程序.我用MySQL作为我的RDMS.对于RDMS工作的许多事情,许多问题可以通过规范化等解决.但有些情况对RDMS不起作用,因此设计了其他解决方案,如NoSQL.

我不清楚的是NoSQL哪种情况更合适.一些不同的NoSQL选项有何不同,哪种情况可能比另一种更好,哪些与PHP 5.3或更高版本兼容(API明智)?

所以我正在寻找一个我可以使用的NoSQL服务器软件列表(例如MySQL作为RDMS)以及为什么我会使用其中一个(任何混合动力车?).还有使用NoSQL而不是RDMS解决的问题的具体示例.

最后,我想知道NoSQL服务器在这种情况下是否会更好地工作:

数据表,其中每行可以具有不同的列/字段.一行可能有5列,另一行可能有5列完全不同,另一行可能有10列.但是在所有这些行中,只有一个主要的自动递增数字ID.数以百万计的"行".

(正如上面我假设NoSQL是完美的,因为它是一个对象的集合,而不是表中的行.不确定AI主键).

在RDMS中,您可以创建最常用的列,然后使用PHP的serialize/unserialize来存储其他列.但是当您必须对此"序列化数组"中存在的列运行报告时,这非常低效并且使事情变得复杂,例如,在名为"birthday_pledge"的列的所有行上的SUM(每行使用该行).

在我的情况下,除主键之外的每个 "列"都是自定义和用户定义的.但我需要能够在这些"列"上运行报告(总和,过滤器,搜索).因此,如果NoSQL不是解决方案,我唯一能想到的就是为用户创建自定义表(虽然可能会变得复杂).

我还想指出可扩展性(多个数据库服务器,冗余和故障转移)非常重要.

php mysql rdms nosql

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

"假装"Oracle数据库

在工作中测试我的应用程序的QA部门使用他们共享的Oracle数据库.他们的案件发生了变化,事情变得非常毛茸茸.错误报告提交+我花时间只是为了找出测试用例已经改变=浪费时间.

我想要的是dev和qa都有我们自己的Oracle在我们的机器上运行的副本,所以我们可以保护我们的数据并追逐我们的尾巴......更少.

我理解的问题是,我们没有为所有这些许可证提供资金.使用开源数据库是行不通的,因为我们有各种各样的PL/SQL包和触发器,我确信这些包与Oracle联系在一起.

有没有人知道某种方式(或者可能是开源产品)来"伪造"Oracle数据库?根本没有性能要求.我不是指模拟对象(我们确实使用它进行单元测试),而是实际的"在端口上监听请求"RDMS.这是一个远景,但我不得不问.

oracle rdms

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

主键和身份有什么区别?

什么是它的使用,当两个标识独特行?为什么人们使用身份列作为键?谁能简要描述一下答案?

sql database rdms

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

挑战!!可以执行第五范式分解的有效第四范式关系的示例

据我的Intro教授说.对于数据库理论,没有任何例子表明何时出现这种情况,考虑到理论的一个特定部分,这似乎有点奇怪.

我正在寻找的仅仅是第四范式中的示例关系,并且可以执行第五范式分解.或者(这可能更有可能)对此的一些见解(我的老师没有),如果它实际上不可能创建,这似乎几乎是自相矛盾的......

database database-design relational-algebra rdms

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

SQL 连接以覆盖左表的特定列

我有两个表,即Table1Table2
Table1

custId--custName--custAge
c1--c1name--32  
c2--c2name--41  
c3--c3name--41  
Run Code Online (Sandbox Code Playgroud)

表2

custId--verified--custName  
c1--Y--c1FullName  
c2--N--c2FullName   
Run Code Online (Sandbox Code Playgroud)

我需要连接 Table1 和 Table2,这样如果表 2 中验证的列是 Y,我需要来自 Table2 而不是 Table1 的 custName。
因此,所需的输出是:(如果该 custId 验证的列是 Y,则覆盖 Table2 中的 custName 列

custId--custName--custAge  
c1--c1FullName--32  
c2--c2name--41  
c3--c3name--41  
Run Code Online (Sandbox Code Playgroud)

我写了以下查询,但没有给出正确的结果。请帮忙。

select T1.custId, NVL(T2.custName, T1.custName),T1.custAge   
from Table1 T1  
left join Table2 T2 on T1.custId=T2.custId and T2.verified='Y'
Run Code Online (Sandbox Code Playgroud)

sql sql-server oracle join rdms

0
推荐指数
1
解决办法
3561
查看次数

在SQL Server Management Studio中循环

我得到了717个SKU的清单,这些清单必须将“年销售额”和“已售出单位”的总值相加。我开发了一个代码,可以按年份搜索SKU并接收总金额。我想知道是否可以循环输入更多的SKU,这样我就不必逐个SKU逐一检查。

我熟悉Loop语句,但不是执行它们的最佳人选。想知道Microsoft SQL Server Management Studio 2017中是否有办法做到这一点。

我尝试过声明并重复代码,但是效率很低。

DECLARE @SDate date
SET @SDate = '01/01/2018'
DECLARE @EDate date
SET @EDate = '12/31/2018'
DECLARE @Sku varchar(20)
SET @Sku = 'SN1580' 


SELECT        SUM(Amount) AS EXPR1
FROM            dbo.[Threshold Enterprises$Sales Invoice Line]
WHERE        ([Shipment Date] BETWEEN @SDate AND @EDate) AND (No_ = N'SN1580')
SELECT        SUM(Quantity) AS EXPR1
FROM            dbo.[Threshold Enterprises$Sales Invoice Line]
WHERE        ([Shipment Date] BETWEEN @SDate AND @EDate) AND (No_ = N'SN1580')

SELECT        SUM(Amount) AS EXPR1
FROM            dbo.[Threshold Enterprises$Sales Invoice Line]
WHERE        ([Shipment …
Run Code Online (Sandbox Code Playgroud)

sql-server rdms

0
推荐指数
1
解决办法
58
查看次数