Questions tagged «rdbms»

关系数据库管理系统,一种广泛使用的数据库管理系统,其特点是广泛使用联接作为核心操作原理。

5
哪个数据库可以处理数十亿/万亿记录的存储?
我们正在研究开发一种捕获和分析Netflow数据的工具,我们从中收集了大量的数据。每天我们都会捕获大约14亿条流记录,这些记录以json格式显示如下: { "tcp_flags": "0", "src_as": "54321", "nexthop": "1.2.3.4", "unix_secs": "1352234521", "src_mask": "23", "tos": "0", "prot": "6", "input": "105", "doctets": "186", "engine_type": "0", "exaddr": "2.3.4.5", "engine_id": "2", "srcaddr": "9.8.7.6", "dst_as": "12345", "unix_nsecs": "752265174", "sysuptime": "2943529544", "dst_mask": "24", "dstport": "80", "last": "2943523241", "srcport": "52672", "dpkts": "4", "output": "111", "dstaddr": "6.5.4.3", "first": "2943517993" …

6
NoSQL和传统的RDBMS有什么区别?
NoSQL和传统的RDBMS有什么区别? 在过去的几个月中,NoSQL在技术新闻中经常被提及。与传统的RDBMS相比,它最重要的功能是什么?差异发生在什么级别(物理的,逻辑的)? 在哪里使用NoSQL的最佳位置?为什么?


5
可以保留一个在表中更新的值吗?
我们正在开发一个用于预付卡的平台,该平台基本上保存有关卡及其余额,付款等的数据。 到目前为止,我们有一个Card实体,该实体具有一个Account实体集合,并且每个Account都有一个Amount,该数量在每次存款/提款中都会更新。 团队中现在有一场辩论;有人告诉我们,这违反了Codd的12条规则,并且在每次付款时更新其值都是很麻烦的。 这真的有问题吗? 如果是,我们该如何解决?

3
可以使用循环外键引用\如何避免使用它们?
在外键字段的两个表之间具有循环引用是否可以接受? 如果没有,如何避免这些情况? 如果是这样,如何插入数据? 以下是一个循环引用(在我看来)可以接受的示例: CREATE TABLE Account ( ID INT PRIMARY KEY IDENTITY, Name VARCHAR(50) ) CREATE TABLE Contact ( ID INT PRIMARY KEY IDENTITY, Name VARCHAR(50), AccountID INT FOREIGN KEY REFERENCES Account(ID) ) ALTER TABLE Account ADD PrimaryContactID INT FOREIGN KEY REFERENCES Contact(ID)

2
一起使用MongoDB和PostgreSQL
我当前的项目实质上是工厂文档管理系统的运行。 就是说,有一些皱纹(惊奇,惊奇)。尽管有些皱纹是该项目特有的,但我相信会出现一些一般性的观察和问题,它们没有规范的答案(无论如何我还是可以找到),并且适用于更广泛的问题领域。这里有很多东西,我不确定它是否适合StackExchange Q&A格式,但我认为这是a)一个可以回答的问题,b)不够具体,足以使社区受益。我的某些注意事项是我特有的,但我认为该问题对于决定使用SQL,NoSQL和两者的任何人都可能有用。 背景: 我们正在构建的Web应用程序包含本质上关系明确的数据以及面向文档的数据。我们也想吃点蛋糕。 TL; DR:我认为下面的#5通过了气味测试。你呢?有没有人有在单个应用程序中进行SQL和NOSQL集成的经验?我试图在下面列出解决此类问题的所有可能方法。我错过了一个有前途的选择吗? 复杂性: 有许多不同类别的文档。这些要求已经需要数十种不同的文档。这个数字只会增加。最好的情况是我们可以利用一种简单的领域特定语言,代码生成和灵活的模式,以便领域专家无需DBA或程序员的干预即可处理新文档类的添加。(注意:已经知道我们遵守格林斯潘的第十条规则) 先前成功写入的完整性是该项目的核心要求。数据将对业务至关重要。如果成功写入的内容保持写入状态,则可以牺牲完整的ACID语义。 这些文件本身很复杂。在我们的特定情况下,原型文档将需要每个文档实例存储150多个不同的数据。病理情况可能会恶化一个数量级,但肯定不会两个。 单类文档是移动的目标,在以后的某个时间点会进行更新。 当我们将其连接到关系数据库时,我们喜欢从Django获得的免费内容。我们希望保留免费赠品,而不必跳回两个Django版本来使用django-nonrel分支。完全转储ORM优于降级到1.3。 本质上,它是关系数据(用户,组等典型的Web应用程序之类的东西,以及我们需要能够实时对复杂查询进行切片和切分的文档元数据)和文档数据(例如我们不希望加入或查询的数百个字段-数据的唯一用例是显示输入该文档的单个文档)。 我想对我的首选方法进行健全性检查(如果您检查自己的发帖历史,我很清楚我不是DBA),并列举了我为其他人解决的所有选项涉及关系和非关系数据的大致相似的问题。 拟议解决方案: 1.每个文档类一张表 每个文档类都有自己的表,其中包含所有元数据和数据的列。 好处: 标准SQL数据模型正在发挥作用。 关系数据以最佳方式处理。如果需要,我们将在以后进行非规范化。 Django的内置管理界面非常适合内省这些表,并且ORM可以愉快地使用100%开箱即用的数据。 缺点: 维护噩梦。数十个(几百个)数千列的表。 应用程序级逻辑负责确定要写入哪个表。使表名成为查询的参数很糟糕。 基本上,所有业务逻辑更改都将要求架构更改。 病理情况可能需要在多个表中剥离单个表单的数据(请参阅:PostgreSQL表中的最大列数是多少?)。 我们可能需要去寻找一个真正的,诚实的上帝DBA,毫无疑问,他最终会讨厌我们和生活。 2. EAV建模 只有一个字段表。实体-属性-值建模已经众所周知。为了完整起见,我将其包括在内。我认为在2013年启动的任何新项目都不会故意采用EAV方法。 好处: 易于建模。 缺点: 更难查询。 DB层不再对构成一个应用程序级对象的内容进行直接表示。 我们将丢失数据库级别的约束检查。 一张桌子上的行数将增长100-1000倍。从性能角度来看,可能是将来的痛点。 索引可能有限。 就ORM而言,DB模式是荒谬的。Web应用程序中包含的电池已保留,但自定义数据模型将需要自定义查询。 3.使用PostgreSQL的hstore或json字段 这些字段类型中的任何一个都可以解决在关系DB上下文中存储无模式数据的问题。我不立即跳到该解决方案的唯一原因是它是一个相对较新的版本(在8.4版中引入,所以不是那个新版本),以前对此没有零接触,并且对此表示怀疑。出于完全相同的原因,我感到不对,因为我会很不舒服地将所有漂亮的,易于规范化的数据扔到Mongo中,即使Mongo可以处理文档之间的引用,我也会感到不舒服。 好处: 我们获得了Django ORM以及内置的身份验证和会话管理的好处。 一切都保留在我们先前成功用于其他项目的一个后端中。 缺点: 没有经验,个人。 它看起来不像是一个非常常用的功能。看起来他们很受推荐给使用NOSQL解决方案的人们的欢迎,但我看不出有很多证据表明它们已被选中。这使我认为我一定想念一些东西。 所有存储的值都是字符串。丢失数据库级别的约束检查。 …

4
RDBMS上的“索引”是什么意思?[关闭]
很难说出这里的要求。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以当前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 8年前关闭。 我像大多数开发人员一样使用索引(大多数情况下...索引!),但是我敢肯定,有很多微妙的方法可以使用索引来优化数据库。我不确定它是否特定于DBMS的任何实现。 我的问题是:什么是如何使用索引的好示例(基本情况,显而易见的情况除外),以及在表上指定索引时DBMS如何优化其数据库?
21 index  rdbms 


2
NoSQL和RDBMS在一起?
我想知道是否有什么好的解决方案可以在NoSQL数据库中记录数据,然后将其转换为RDBMS? 例如,如果您想快速捕获一些数据(例如会话日志),但是希望以后能够为其创建报​​告。 我最喜欢的数据库是Postgres,因此,如果您的答案与Postgres相关,那将很棒。
13 nosql  rdbms 

1
Oracle数据库中的提交与快速提交与提交清除
我想知道是否有人可以验证我对这三个术语与Oracle数据库之间的区别的理解。 许多消息来源混淆了这些术语,并且没有详细解释它们,因此查找信息有些困难。 从我的收集: 提交和快速提交是完全一样的东西,所有提交都是快速提交。 快速提交实质上仅更新撤消/回滚段头的事务表中的标志,以指示事务已提交。但是,实际块未重新访问,这意味着位于数据块头中的感兴趣的事务列表(ITL)中的撤消字节地址(UBA)仍指向相应撤消段的事务表。此外,不释放相应行的锁定字节,并且ITL中的锁定计数不变(行仍被锁定)。 在提交清除中,将重新访问该块,并使用提交SCN更新ITL。但是,ITL中的锁计数和每行存储的锁字节仍未更新(行仍然像快速提交中一样被锁),即使更改了块也不会生成重做。 正常提交(==快速提交)的块将在下次触摸(并生成重做)时进行延迟块清除。 进行了提交清除的块将在下次被触摸(并生成重做)时进行延迟日志记录块清除。 希望有人可以验证这些观点!谢谢!

3
使用MySQL定期对100 GB以上的表进行多向联接吗?
背景: 我创建了一个Web应用程序,希望能够合理扩展。我知道我不是Google或Twitter,但是我的应用为每个用户使用了大量的数据,因此对数据的要求很高。我想准备好合理扩展,而不必稍后重新构建所有架构。 我认为自己是软件开发人员,而不是数据库专家。这就是为什么我在这里发布。希望有更多数据库专业知识的人能给我建议。 由于用户数量相对较大,但没有Facebook号码,因此我希望拥有一个如下数据库: 一个“大桌子”: 2.5亿条记录 20列 大约100 GB的数据 具有索引的bigint(20)外键 有一个索引varchar(500)string_id列 有一个int(11)“值”列 其他4个表格: 每一千万条记录 每个约2-4 GB数据 每个表都有4-8列 一栏是datetime date_created 一列是varchar(500)string_id列 每个表中的一或两列将在联接中被选择 这些表之一用于存储平均值-其架构为bigint(20)id,varchar(20)string_id,datetime date_created和float average_value 我想做的 -两个相对昂贵的查询: 计算新的平均值: 使用外键,从大表中选择多达几百万条单独的记录。 计算新的平均值,按string_id分组。 将结果插入平均值表。 按照当前的构造,此查询使用两个联接。 为服务用户创建非规范化的只读记录: 使用外键从大表中选择1,000-40,000条记录中的任意位置。 通过字符串id列与最新记录上的其他四个表连接。 将结果插入到非规范化表中。 这些记录供前端使用以向用户显示信息。 按照当前的构造,此查询使用四个联接。 我计划在批处理后端数据库上运行所有这些昂贵的查询,这些查询会将其结果推送到处理用户请求的实时前端数据库服务器上。这些查询将定期运行。我还没有决定多久。平均查询可能每天进行一次。反规范化查询将需要更加频繁-也许每隔几分钟。 目前,这些查询中的每一个查询都在一台非常低端的计算机上的MySQL中运行,该计算机的数据集在“大表”中具有10万条记录。我既担心扩展能力,又担心扩展成本。 问题: 这种方法听起来不错吗?从全局角度看,这显然有什么问题吗? RDBMS是正确的工具,还是我应该看看Hadoop系列中的其他“大数据”解决方案?我倾向于使用RDBMS,因为数据是结构化的并且很好地适合于关系模型。但是从某种意义上说,据我了解,我可能不再能够使用RDBMS。真的吗?什么时候需要此开关? 能行吗 这些查询能否在合理的时间内运行?我可以等待几个小时来查询#1,但是查询#2应该在几分钟内完成。 从硬件角度我应该考虑什么?我的RAM和CPU瓶颈可能是什么?我认为在RAM中保留索引很重要。还有什么我应该考虑的吗? 在某个时候,我可能必须对数据进行分区并使用多个服务器。我的用例看起来已经属于该类别了,还是可以在一段时间内垂直扩展一台计算机?这样可以处理10倍的数据吗?100倍?
11 mysql  rdbms 

5
为什么乐观锁定比悲观锁定快?
两种形式的锁定都会导致一个进程等待记录的正确副本(如果该记录当前正被另一个进程使用)。使用悲观锁定,锁定机制来自数据库本身(本机锁定对象),而使用乐观锁定,锁定机制是某种形式的行版本控制,例如时间戳,用于检查记录是否“陈旧”。 但是,两者都会导致第二个进程挂起。所以我问:为什么乐观锁定通常比悲观锁定快/优?并且,在某些用例中,悲观胜于乐观吗?提前致谢!

2
如何在Oracle中修改更新以使其执行更快?
我有这个查询: UPDATE ( SELECT h.valid_through_dt, h.LAST_UPDATE_TMSTMP FROM ETL_FEE_SCH_TMP d, FEE_SCHEDULE_HISTORICAL h WHERE h.FUND_ID = d.FUND_ID AND h.FEETYPE_NAME = d.FEETYPE_NAME AND h.BREAKPOINT_TYPE = d.BREAKPOINT_TYPE AND h.BREAKPOINT_QTY = d.BREAKPOINT_QTY AND h.LOW_BREAKPOINT_AMT = d.LOW_BREAKPOINT_AMT AND h.VALID_THROUGH = TO_DATE ('31-DEC-9999', 'dd-mon-yyyy') AND h.universe = 'DC' AND h.universe = d.universe AND EXISTS ( SELECT 1 …
8 oracle  rdbms 

9
哪个DBMS足够快(足以容纳数千名玩家)进行在线游戏?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3年前关闭。 我目前正在制作MMORPG游戏,该游戏可能同时有数千名玩家在线(可能不是;只是一厢情愿)。首先,我们想使用MySQL,但是我听说它还不够快。 哪个DBMS足够快?它有多像SQL Server(就像我在学校学到的那样)?

1
关系是否比没有效率的大桌子慢?
我在工作中被要求多次违反“第一种标准格式”(使用空/空值重复列中的组),“是为了提高计算机处理能力”。简而言之,“学生”表应至少包含8个空字段(例如电话:phone1,电话2,电话3 ...),而不是我的建议-包含电话号码(以及其他可能的元数据)的“电话”表外键是学生证号。我的老板说,最好以这种方式存储它们,因为“ CPU周期更少,这在Web平台中很重要”,而不是使用关系。我说,在最坏的情况下,它可以忽略不计。 在该示例中,使用关系(假设表在中等大小的Web应用程序中充满了很多记录)比使用这种表架构慢得多?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.