每天都要阅读一些技术类的文章,但是如果把所有这些文章都做笔记是不太现实的,但是如果把这些文章都只想过眼云烟一样读一下,又很快忘了,所以在这个文章里记录每个月读的文章链接,标题,以及自己的一点想法。
2021.9
数据库读写分离
https://www.cnblogs.com/findbetterme/p/10820590.html
提到了最终一致性。在分布式系统中,对于某些对实时性要求不高的场合里,可以放弃一些一致性,比如采用读写分离的方式,将一些读操作放在从服务器上执行,虽然慢了点,但是等个几分钟也不是不可以。比如,我刚在github.io上发布了新的博客,总是要刷新好几遍才会出来我更新的东西,这就是读写分离。
为什么选择Rust
https://www.techug.com/post/why-we-choose-rust-to-dev.html
这篇文章对Rust和C++,go语言进行了比较,解释了为什么在大型项目中选择Rust语言。
Optimistic Lock Coupling
乐观锁与悲观锁
参考:https://www.hollischuang.com/archives/934
https://baijiahao.baidu.com/s?id=1604426171880146821&wfr=spider&for=pc
悲观锁就是大学时学的那种常见的锁,在做任何更新之前都要获取锁,因为它总是悲观地认为在修改过程中会有别的进程也要修改同样的数据;在乐观锁中,不会获取锁,以提高并发度。
- 数据版本,为数据增加的一个版本标识。当读取数据时,将版本标识的值一同读出,数据每更新一次,同时对版本标识进行更新。当我们提交更新的时候,判断数据库表对应记录的当前版本信息与第一次取出来的版本标识进行比对,如果数据库表当前版本号与第一次取出来的版本标识值相等,则予以更新,否则认为是过期数据。
- 乐观锁适用于多读应用类型
- 但是有个问题是:在高并发地对同一行数据进行修改时,乐观锁会导致大量进程的更新失败。
在MySQL中,悲观锁的使用是select for update;乐观锁的应用是:
1 | update order_table set status = ‘取消’ where order_id = 001 and status = ‘待支付’ and ....; |
perf
2021.12
“十四五”数据库发展趋势与挑战
这个文章介绍了数据库前沿的概览,但是我根本不理解这里面的很多东西,只是能记住一些名词,比如云原生数据库,分布式数据据,新型硬件,openGauss等自治数据库。值得注意的是,里面说NVM 数据库的事务管理机制、页面设计机制也都与传统数据库大相径庭,因为我是做NVM的,所以想知道传统的事务管理机制和NVM数据库的事务管理机制的区别,传统事务的页面设计和NVM数据库的页面设计有什么区别。