gpt4 book ai didi

cassandra - noSQL 回滚功能

转载 作者:行者123 更新时间:2023-12-01 08:29:18 25 4
gpt4 key购买 nike

我是 noSQL 技术的新手,我很惊讶没有任何事务支持。我的主要问题是当我进行一些插入任务时,该插入由〜5个单独的插入组成。我们必须通过 4 个不同的 ID 找到一个文档。问题是文档相当大,这样存储真的很贵:

  • 键 |值(value)


  • user1 HugeDoc1

  • user2 HugeDoc1
  • user3 HugeDoc1

所以我们想出了一个指向文档的内部 ID。是的,我知道这种设计有点违反了整个 noSQL 的概念,但是它节省了很多内存。如果文档插入失败,则 ID 没有意义,应该被删除。编写我自己的回滚处理,跟踪成功的插入/更新是个好主意吗?还是整个概念都错了?

最佳答案

I know this design somewhat violates the whole noSQL concept, but it saves a lot of memory.

这是一种非常 1970 年代的思维方式。关系数据库理论起源于磁盘空间昂贵的时代。 1975 年,IBM 以每 兆字节 11,000 美元的价格销售硬盘。到 1980 年,价格下降,因此您可以以低于 100 万美元的价格购买 1 GB 的存储空间。今天,你可以在 NewEgg 上花 60 美元购买一个 TB 驱动器。现在磁盘空间很便宜,处理时间是昂贵的部分。

在非关系 (NoSQL) 数据建模中,您应该根据查询数据的意义来构建表结构。这与关系数据建模有所不同,在关系数据建模中,您可以根据存储数据的意义来构建表。通常,基于查询的建模会导致存储冗余数据...没关系。复制数据以提高速度,引用数据以确保完整性。

Is it a good idea to write my own rollback handling, keep track of successful inserts/updates? Or the whole concept is wrong?

我在一个 Cassandra 项目中,我们确实实现了类似于应用程序端事务/回滚的东西。它确实没有很好地工作,最终创建了几个墓碑。最后,我会问自己为什么您的应用程序需要非关系数据库,因为听起来您仍然需要关系数据库的一些好处。如果您确定自己绝对需要非关系型数据库,那么您可能需要重新考虑您的数据建模方法。

关于cassandra - noSQL 回滚功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24207937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com