小编use*_*961的帖子

MySQL中的DOUBLE与DECIMAL相比

好的,所以我知道有很多文章说我不应该使用DOUBLE来存储MySQL数据库,否则我最终会遇到棘手的精确错误.关键是我没有设计新的数据库,我要求找到优化现有系统的方法.较新的版本包含783个DOUBLE类型列,其中大多数用于存储金钱或公式来计算金额.

所以我对这个主题的第一个看法是我应该强烈推荐在下一个版本中从DOUBLE到DECIMAL的转换,因为MySQL doc和每个人都这么说.但是后来我找不到任何好的论据来证明这个推荐是正确的,原因有三:

  • 我们不对数据库执行任何计算.所有操作都是使用BigDecimal在Java中完成的,而MySQL仅用作结果的普通存储.
  • DOUBLE提供的15位精度是足够的,因为我们存储的数量主要是2位小数,偶尔小数字的8位十进制数字用于公式参数.
  • 我们有6年的生产记录,由于MySQL方面的精度损失,没有已知的bug问题.

即使通过在18毫米行表上执行操作,如SUM和复数乘法,我也无法执行精度不足的错误.而且我们实际上并没有在生产中做这类事情.我可以通过做类似的事情来显示精确度

SELECT columnName * 1.000000000000000 FROM tableName;

但我想不出办法把它变成第二个十进制数的错误.我在互联网上发现的大多数实际问题都是2005年和更早的论坛条目,我无法在5.0.51 MySQL服务器上重现它们.

因此,只要我们不执行任何我们不打算执行的SQL算术运算,我们应该期望只在DOUBLE列中存储和检索金额吗?

mysql double decimal

63
推荐指数
3
解决办法
13万
查看次数

设计具有多个事实表的数据仓库

我是数据仓库的新手.首先,我想比我的数据仓库工具包的副本在我的邮箱(蜗牛邮件:P)的路上精确.但我已经用网上找到的东西研究了所有这些东西.

然而,我在网上找不到的是当你在DW中看到多个事实时该怎么办.在我的情况下(保险),我退款是非定期发生的.一个客户可以在3个月内没有,然后在同一个月内没有.另一方面,我有"订阅费"(不确定什么是正确的英语术语,但你明白了),每个月或每三个月发生一次.这对我来说显然是两个截然不同的事实.

这两者是某种程度的松散耦合,如客户或"保险产品".现在是这两个不同的仓库,我必须在其上生成两个不同的报告,然后将报告连接到DW之外?或者有没有办法设计它以适应单个下降DW.或者我应该将这两个事实结合在一起?那么我可能会在退款时失去粒度.

我读过的一些博客说DW总是有一个事实表.其他人提到了使用S设计什么是事实表的步骤,但是没有明确的说明它们之间是否存在链接,或者它们只是同一DW项目的不同组件.

有没有人知道关于DW设计精确部分的一些参考文献?

data-warehouse fact-table

17
推荐指数
3
解决办法
4万
查看次数

spring.main.allow-bean-definition-overriding=true 是一种不好的做法吗

我正在构建一个 Spring Boot Rest API 服务器,以便将遗留应用程序移植到更强大的框架上。这是我使用这些技术的第一个项目。到目前为止,我已经使用 2 个 API 构建了一个概念验证,可以回复“Hello world!” 在 JSON 中。一个是开放的,另一个是通过 OAuth2 保护的。我已经根据要求调整了安全性。

我还结合使用 Rest-Assured 进行集成测试和 Spring MockMvc 进行单元测试,构建了一个强大的测试结构,因此我相信我已经准备好开始使用 TDD 方法实现真正​​的 API。

我们正在使用 Maven。我的问题是,一旦我对现有工件产生依赖,我就会得到以下堆栈。我明白这意味着什么,但我们的代码库很大,我找不到它来自哪里。当我向 Google 询问这个问题时,我经常发现结果只是建议添加spring.main.allow-bean-definition-overriding=true到我的属性中。这不是把问题掩盖起来吗?我猜想 Spring 默认不允许这样做是有充分理由的。使用方便的应用程序属性简单地忽略该错误可能会产生什么后果?

堆栈:

*************************** APPLICATION FAILED TO START
***************************

Description:

The bean 'org.springframework.transaction.config.internalTransactionAdvisor', defined in class path resource [org/springframework/transaction/annotation/ProxyTransactionManagementConfiguration.class], could not be registered. A bean with that name has already been defined in null and overriding is disabled.

Action:

Consider renaming one of the beans or enabling overriding by …
Run Code Online (Sandbox Code Playgroud)

java spring spring-boot

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