美文网首页
《全栈工程师修炼指南》学习笔记 22

《全栈工程师修炼指南》学习笔记 22

作者: VioletJack | 来源:发表于2023-02-27 09:41 被阅读0次

搜索引擎

最简单的数据查找方式,但如果面对大量数据这种行为需要全表扫描,是非常低效的。

select * from ARTICLES where CONTENT like '%存储%';

倒排索引

  • 倒排,指的是先定位到关键字,再去看关键字属于哪些文章
  • 索引,指的是关键字十倍索引起来的,所以查询速度会比较快。

Elasticsearch

Elasticsearch 将关键字使用哈希算法分散到多个不同的被称为 Shard 的虚拟节点,并且把他们部署到不同的机器节点上。且每个 Shard 具备指定数量的冗余副本,这些副本被要求放置到不同的物理机器节点上。保证每台机器都制管理稳定且可控的数据量,并且保证了搜索服务数据的可用性。

地理信息系统

方案一:根据商家 ID 记录它所在位置的经纬度。当用户选中某块地图后,根地图边界的经纬度来查询地图范围内的商户。效率很慢。
方案二:给商家的经度和维度分别索引。当用户选中某块地图后,先按照经查找商家。再将这些商家按照维度排序,通过二分法找到目标商户。优化了查找算法,快了不少。
方案三:使用 GeoHash,即将经纬度的数值交叉混合。如此可以根据地图精度截取 Hash 前 n 位的字符串进行匹配。字符串越长精度越高。

SQL 和 NoSQL 如何选择

如何选择数据库,可以按照以下两个方面考虑。

  • 数据分类
  • 数据规模

我们在选择技术的时候,很可能要针对每一类数据选择一组技术,而不是笼统的选择一项技术。

选择数据库的思路

  • 对于中小型系统,在数据量不大且没有特殊吞吐量、可用性等要求下,或者在多种关系和非关系数据库都满足业务需求的情况下,优先考虑关系数据库。因为关系数据库更加成熟、功能强大、也有较强扩展能力。
  • 是否具备明确的 schema 定义,是否需要支持关系查询的事务?如果有需要的,优先考虑关系数据库。
  • 如果符合结构不定、高伸缩性、最终一致性、高性能的特点和要求,可以考虑非关系数据库。

相关文章

网友评论

      本文标题:《全栈工程师修炼指南》学习笔记 22

      本文链接:https://www.haomeiwen.com/subject/fehtldtx.html