问题标签 [database-agnostic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database-agnostic - 数据库应用程序 - 即时存储或计算?
我有一个包含以下字段的采购清单表:ItemName、Quantity、UnitPrice、Amount。请注意,金额等于数量 * 单价。
我的简单问题是,我应该在检索数据时存储数量还是计算它?我应该关注什么,存储或处理?
oracle - 与数据库无关的存储过程 API
我们的旧版 Web 应用程序大量使用存储过程。我们有一个中央接口,通过它进行所有数据库调用(即查询和过程)。但是,当前实现在后台使用OracleCommandBuilder.DeriveParameters 方法绑定到适当的存储过程签名。从文档中:
DeriveParameters 会导致数据库往返,并且只能在设计时使用。为避免生产环境中不必要的数据库往返,应将 DeriveParameters 方法本身替换为在设计时由 DeriveParameters 方法返回的显式参数设置。
我们可以使用OracleCommand 类显式绑定到正确的存储过程签名。然而,用 OracleCommand 对象乱扔我们的代码(即使只是数据访问层)并不是数据库无关的。我们已经在我们的数据库接口(以下称为IDatabaseService)中支持与数据库无关的动态查询,如下所示:
我们还希望支持与数据库无关的存储过程调用。什么是一个好的模式?
更多信息:
要绑定到特定的子例程,OracleCommands 允许BindByName。我们宁愿不使用这种方法,因为字符串比类型更容易出错。绑定子例程调用的另一种方法是提供参数类型。我们可以依赖参数值并反映运行时类型,但我们想要比这更强的安全性。我们希望要求将类型显式提供给数据库接口,以便我们可以在与数据库通信之前检查提供的参数值是否与提供的子例程参数类型匹配。
database - 使用数据库作为通信总线时如何避免并发问题?
有些人告诉我,由于并发问题,我们应该避免多个应用程序读取/写入同一个数据库。他们坚持让我相信,一个可靠的架构只允许单个应用程序访问数据库。我不知道这些问题是由 READ 操作并发引起的,还是仅与 WRITE 操作有关。
我担心的是,对于某些系统,例如我正在开发的系统,数据库是一种出色的通信总线。有没有关于如何在避免并发问题的同时做到这一点的指导方针?
sql - 将所有排除条件放在sql查询中还是先获取所有结果然后在内存中执行排除代码?
在我的查询中,我想获取同一城市的所有用户。最终用户也可以使用此查询,以便他们可以查看同一城市的其他用户。我查询用户表,因此它检索所有用户,即使已经运行了查询。
现在有 2 个选项:
要么我添加一个条件来查询 user.id !=(查询运行用户的用户 ID)
或者在显示查询结果并删除正在运行查询的用户之前对其进行处理。
我使用哪一个是否重要或有任何相当大的影响?
注意 - 我的主要查询并不像查找同一个城市那么简单,而是使用 3 表连接来访问用户想要显示的数据。为了简洁起见,我只是把城市放在这里。
c# - 在业务服务中打开sql连接
您认为我的业务服务类打开 SqlConnection 是紧密耦合吗?
实际上,业务服务不应该知道具体的数据提供者?!
公共类 UnitService:
database - 与数据库无关的应用程序
我正在处理的一个应用程序的数据库尚未得到业务部门的确认。
- 最好的猜测是 Oracle 和 DB2。
- 我听说最初该项目将与 DB2 V9 一起上线,然后到 Oracle 11g。
我们在这个项目中使用 Spring 3.0.5、Hibernate 3.5、JPA2 和 JBoss 5
那么进入构建阶段和测试阶段的最佳实践是什么?
- 我应该先使用 DB2 构建,然后再担心 Oracle(这听起来不对)吗?
- 或者,我应该使用 JPA (Hibernate) 编写然后生成数据库模式吗?
- 或者是其他东西?
PS:我无法控制 DB 的选择、什么和什么时候,因为这些是坐在漂亮房间里的人获得丰厚支票和巨额奖金的战略决策。
谢谢,阿迪
sql - SQL:检测任意日期系列中的间隙的内置方法?
我有一组输入历史报告的表格。现在生成报告需要一段时间,我想创建缓存表来存储编译后的数据,然后将这些数据输入到报告中。
这些缓存表的一个键是日期字段。我想确保在我使用的任何日期系列中没有任何间隔——例如,我不想记录 1 月 1 日和 3 日的记录,而 2 日没有行。
我想不出用 RDBMS 中的任何关系工具来强制执行此操作的方法。我可以设置一个日期表,以确保相关记录不会超出一系列日期——如果我的“日期系列”表中没有匹配的行,则不允许 1 月 2 日——但我没有'不知道如何自动确保我不会跳过某个范围内的日期。
在数据库模式定义中是否有自动执行此操作的方法?还是我必须检查代码中的空白?
我正在使用 MySQL,但这似乎与 RDBMS 无关。
database - 模式中如何定义约束?是通过数据库中的存储过程、用户定义的函数还是 T-SQL 或 PL/SQL?
SQL Server 或 Oracle 或任何数据库服务器如何对表应用约束>
我知道约束,但它们如何应用于表或列?我试图找出 SQL Server 如何理解约束要求并保持完整性。
是否有用于应用约束的存储过程或用户定义的函数?当请求用户在表上安装约束时,数据库服务器如何理解这种情况?
sql - 使用 where 子句中的列优化查询
我有一个 sql 查询,它获取设计为低级队列的表中的前 N 行。
此查询背后的意图如下:
- 首先,这个问题与数据库无关,因为我的实现将支持 sql server、oracle、DB2 和 sybase。上面“top N”的sql语法只是一个例子。
- 该表可以包含数百万行。
- 相比之下,N 是一个相对较小的数字,例如 100。
- 当行在队列中时状态为 0。稍后它变为 1 表示它正在处理中。处理后删除。因此,预计表中至少 90% 的行的状态为 0。
- 表中的行应根据其日期获取,因此该
order by
子句。
使此查询最快运行的最佳索引是什么?
我最初认为索引应该是 on (date, status)
,但我不确定了。由于状态列将大部分包含零,它是否有附加值?单独索引就足够了(date)
吗?
或者也许应该是(status, date)
?
ruby - Relational vs NoSql:我应该为这种应用程序使用哪个数据库?
我即将构建一个对学生成绩进行分析的应用程序。需要存储的数据如下所示:
科目会根据学期和课程而有所不同。主要要求是:
- 数据库应允许创建各种报告,如考试报告、学生报告、综合报告、主题报告等。
- 它应该有 ruby 库,因为这是我决定的语言。
那么,我应该为这种应用程序选择关系数据库还是 NoSQL 数据库。如果是 NoSQL,那么是哪一个?
质疑 最适合这个用例的数据库是什么?