CTO,新设计的所有的表都只有 id 和 detail。我不是很理解,求解释。

2015-05-27 11:04:43 +08:00
 sinux
detail是一个json字符串。

原来的所有的外键和column全都都放到detail里面。

他说这样可以避免外键的混乱和冲突,自己来维护外键关系。
12066 次点击
所在节点    MySQL
115 条回复
coney
2015-05-27 14:47:09 +08:00
@kenken 还是不懂,为什么不用mongodb
kenken
2015-05-27 14:47:54 +08:00
@icqdany 大于一个表的更新 插入操作是事务的。这个是nosql很难实现的。
hcymk2
2015-05-27 14:49:29 +08:00
@kenken
这样怎么做聚合统计?
用代码实现么?
adjusted
2015-05-27 14:51:33 +08:00
坐等ceo偶然看到帖子来发帖
icqdany
2015-05-27 14:59:45 +08:00
@kenken 明白了,thank you.
abscon
2015-05-27 15:22:04 +08:00
似乎听到了 MySQL 在幽怨地唱着:原来你,什么都不想要~
kenken
2015-05-27 15:30:28 +08:00
@hcymk2 第2,3点。 聚合统计elasticsearch是支持的。 离线的用hadoop等大数据分析
est
2015-05-27 15:33:55 +08:00
@kenken 这样做是可以的,直到你的json blob撑到了1M,然后你需要从1000个这样的json里取一个1字节的int出来排序。


hahahahaha
shuson
2015-05-27 16:21:00 +08:00
我就是CEO,我CTO是我小舅子,他爱咋做我都支持
sinux
2015-05-27 16:25:36 +08:00
@shuson ....
20131115
2015-05-27 16:41:38 +08:00
@kenken 看起来有你自己的道理,MySQL 不是这么用的,都搞成JSON,如果你增加删除字段的时候怎么操作呢?会不会增加 DBA 的运维成本。你不这样做也可以使用各种搜索服务,也可以使用各种大数据产品
duwei
2015-05-27 16:50:12 +08:00
建立楼主加上相关的项目背景。脱离背景讨论没有意义。
Tink
2015-05-27 16:51:53 +08:00
我感觉要是业务需求每次都需要取整个detail的话,那这样倒也不失一种办法。当然是在不换数据库的情况下
galenzhao
2015-05-27 16:58:41 +08:00
对 nosql事务是个纠结的地方
好多业务逻辑 排除不掉事务。。。
不知道cto研究过SequoiaDB没
feisan
2015-05-27 17:13:08 +08:00
建议大家看看7楼说的那篇文章,这样的设计也不是没有道理的。

另外mogodb这个东西,不要光顾着写代码用的爽,也要考虑一下运维的难度和成熟度。
br00k
2015-05-27 19:04:41 +08:00
批量修改操作我想知道效率会怎样。。
fy
2015-05-27 19:26:22 +08:00
@kenken 请问数据库是postgress吗?我想知道这种情况下,数据库会不会帮你把相同的key整合优化掉,所以数据库会比原本的json更省空间?
franksin
2015-05-27 19:31:43 +08:00
说说使用场景呗,有些特殊场景,kv也可能比较好用。
ksupertu
2015-05-27 19:39:24 +08:00
现在的主流设计本来就不用数据库提供的外键啊,都是自己维护一套主外键代码
michaelye1988
2015-05-27 20:02:56 +08:00
我也是这样做的,我觉得很方便。现在接手的一个Android项目就遇到这个问题。服务端需要增加一个字段非常麻烦,客户端需要升级数据库。所以如果没有特别的需求,我觉得你们CTO做的没错。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/194047

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX