【数据库】积累

数据库设计

理解维度数据仓库——事实表、维度表、聚合表
维表与事实表
简单说维表就是某个维度的可取值,例如商品id信息表,记录了某个商品的名称类别等:事实表就是将多个维表中的取值拼成的一个事实,例如订单表,里面包含着商品名,购买者等等

数据库设计(一对一、一对多、多对多)

范式

数据库设计三大范式
如何理解关系型数据库的常见设计范式? - 知乎用户的回答 - 知乎

语句分类

SQL语句的四大分类

Hive

通俗易懂的学会:SQL窗口函数

SqlSever

详谈转置 pivot

Pivot

PostgreSQL查询表名称及表结构

redis

lua脚本

后端程序员必会:并发情况下redis-lua保证原子操作
单线程执行lua

做缓存

广州小公司面试题:如何保证缓存一致性
这就是旁路缓存

先写后删+延迟双删,尽可能保证数据一致性。不可能完全保持啦。 就算是删除,并发的时候,只要不加锁,造成不一致的情况多了去了。
em。。。其实也有解决办法,可以类比mysql的锁策略。 某一条数据如果要更新,就加上写锁,这个写锁锁定的是db+缓存
线程A要更新数据X,为x加上写锁。
线程B要读取数据X,发现X带写锁,那么不写缓存。
线程A更新完之后,删掉缓存,然后释放写锁。

20 图 |6 千字|缓存实战(上篇)
上一篇文章里,关于本地锁的解释不太好,作者实际想说的是,为访问DB的操作加锁,一次只能有一个访问db的线程,这个线程会把访问结果写进缓存,然后释放掉锁,然后如果其他的线程抢到锁了,重新执行get方法,那么这些线程的访问就会去走缓存,而不会去访问db。
所以实际上应该是先判断缓存是否存在,如果不存在,才尝试获取锁,获取锁成功,就执行上述步骤,获取锁失败,应该就等一段时间后,重新执行get方法,而不是block住。如下所示
缓存穿透,缓存击穿,缓存雪崩解决方案分析

做分布式锁

Redis 分布式锁|从青铜到钻石的五种演进方案
钻石方案:原子地加锁+设置过期时间+设置uuid作为value来标识锁,原子地使用uuid+lua脚本解锁
分布式锁中的王者方案 - Redisson

限流器

我司用了 6 年的 Redis 分布式限流器,可以说是非常厉害了!

redisson也可,其实更好用。

MongoDB

MongoDB写入安全WriteConcern

etcd

还不了解 etcd?一文带你快速入门(万字长文)

Java中使用etcd,包括基本的set、get、超时设置,watch监听等

jetcd实战之三:进阶操作(事务、监听、租约)
etcd学习和实战:4、Java使用etcd实现服务发现和管理

etcd 中让人头大的 version, revision, createRevision, modRevision

jetcd

浅析jetcd中KeepAlive实现及使用
jetcd实战之二:基本操作
jetcd实战之一:极速体验

ElasticSearch

Elasticsearch Reference
ES java api
Java REST Client
ElasticSearch教程——汇总篇
目前只安装了ElasticSearch和kibana进行学习,ES可以理解为用restful风格使用http进行crud的数据库,其实我感觉直接用postman什么的直接发请求也可以。不用安装kibana了
聚合:
aggs就类似于sql里的groupby+聚合操作,aggs可以层层嵌套。例如

"aggs": {
    "group_by_tags": {
      "terms": { "field": "tags" },
      "aggs":....
    }
  }

首先把这次aggs操作起了个名字叫做group_by_tags,分组的条件是terms(如果分组条件是"global:{}"则相当于把全部的doc分为一组),然后基于分组结果,可以进行下一次aggs操作(继续分组或者求取平均值等)。当然可以定义多个聚合操作,他们之间可以相互并列。
Types cannot be provided in put mapping requests
es聚合查询失败
创建索引、类型、文档:
创建可以使用put与post,更新用post,删除用delete,获取用get

Elasticsearch Java API 很全的整理以及架构剖析
Elasticsearch7.X为什么移除类型(type)

ES Field Collapsing 字段折叠使用详解

Elasticsearch倒排索引、kibana、ES检索常用命令、ES进阶检索、ES聚合、SpringBoot整合Elasticsearch

java-api有点老了,而且也使用了type,但其实我觉得用了也没啥。
Elastic Stack-3:新版 ElasticSearch Java Client 尝鲜

聚合

elasticsearch系列六:聚合分析(聚合分析简介、指标聚合、桶聚合)

clickhouse

DDL

深入理解ClickHouse-本地表和分布式表
分布式表本身并不存储数据,只是提供了一个可以分布式访问数据的框架,查询分布式表的时候clickhouse会自动去查询对应的每个本地表中的数据
ClickHouse表引擎到底怎么选

DQL

ClickHouse分布式IN & JOIN 查询的避坑指南
只要理解了clickhouse分布式表的概念就好说了,两个分布式表可以join,两个本地表(例如子查询生成的表)也可以join,但如果是一个分布式与一个子查询进行join,就需要对子查询进行global

其他

ER图画法及图形含义、举例说明、通俗易懂

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值