Antkillerfarm Hacking V7.0

12306, Redis, 图数据库

2022-01-17

12306

12306是铁科院开发的,外援是pivotal,所以12306的数据库是greenplum,缓存是gemfire。pivotal官方甚至有解决12306相关问题的论文。

阿里云在关键的时间点帮助解决了余票查询的技术难点,把12306从业务爆发式增长时的窘境中解救了出来。

https://www.zhihu.com/question/447094648

铁路12306是谁研发的?


http://www.csdn.net/article/2015-02-10/2823900

技术揭秘12306改造

https://www.zhihu.com/answer/17575573

超级计算机能不能用于12306?

https://mp.weixin.qq.com/s/3F5lwv5LtOqBa7S0Owf4XQ

虽然难用,但12306面临的业务场景复杂度可能是世界之最

https://mp.weixin.qq.com/s/bF0gq2kIzKzKBP1QaM5ebA

12306系统的秒杀“艺术”:如何抗住100万人同时抢1万张票?

https://mp.weixin.qq.com/s/jWFGod7PqA06c44OkwW7EA

“12306”的架构到底有多牛逼?

GemFire

GemFire是一个内存数据库。官网:

https://pivotal.io/pivotal-gemfire

参考:

http://soft.zhiding.cn/software_zone/2013/1230/3007113.shtml

12306采用Pivotal GemFire分布式解决方案解决尖峰高流量并发问题

Redis

REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。

http://www.runoob.com/redis/redis-tutorial.html

Redis教程

http://www.yiibai.com/redis/

另一个Redis教程


redis提供两种方式进行持久化,一种是RDB持久化(原理是将Redis在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外一种是AOF持久化(原理是将Redis的操作日志以追加的方式写入文件)。

https://www.cnblogs.com/zxs117/p/11242026.html

RDB和AOF的区别


参考:

https://mp.weixin.qq.com/s/3WmGpZkEuSz-ox_2CPCsqg

伯克利推出世界最快的KVS数据库Anna:秒杀Redis和Cassandra

https://mp.weixin.qq.com/s/320HQlFOXdzbBh2ofrpANA

Redis高负载下的中断优化

https://mp.weixin.qq.com/s/3ISOT_9HTFrnxpJdnHTnsg

redis哈希表的rehash分析

https://www.jianshu.com/p/dbc62ed27f03

玩转Redis集群

https://mp.weixin.qq.com/s/My6gZIVBVEjjDoQ5IpPKCw

Redis查漏补缺:最易错过的技术要点大扫盲

https://mp.weixin.qq.com/s/T2AmwNTYwTPlB0WbCsy-3g

Redis单线程架构

https://mp.weixin.qq.com/s/XZYxHEUx0AJozQ2oM5fTrw

秒杀Redis的KVS上云了!伯克利重磅开源Anna 1.0

https://mp.weixin.qq.com/s/FyYhLS3X7LDe0PLxooz_cQ

Redis的n种妙用,不仅仅是缓存

https://mp.weixin.qq.com/s/X1gh_mtXvc9KnI2jK-cTyw

如果面试官问你:Redis内存满了怎么办?

https://mp.weixin.qq.com/s/ZsmcJc9L-EI2msRiga9-VA

redis持久化

https://mp.weixin.qq.com/s/uTzPJJmL6OY4bxarJ_x95g

Redis你掌握多少了,来个查漏补缺?

https://mp.weixin.qq.com/s/1woExb3V_PjnrhHYH5Jksg

美团万亿级KV存储架构与实践

https://mp.weixin.qq.com/s/7l_o1iJtxiRnzFauaPjq4w

这可能是你见过最好的Redis主从复制原理

https://mp.weixin.qq.com/s/RJ1sSyGkkD1SCEGsD320Dw

和你们聊聊Redis概念、集群和应用场景!

https://mp.weixin.qq.com/s/4_ZHq3Xm9zVvqeEe5_B7SA

和杠精聊Redis多线程

https://mp.weixin.qq.com/s/TjFSVf0OkT_4ATk21mxpEQ

Redis的过期删除策略和内存淘汰机制

https://mp.weixin.qq.com/s/Y9SdWSELsgkdV2sO26SBSA

推荐几款Redis可视化工具

https://mp.weixin.qq.com/s/IX0dWN24EqH8vAs9ZXnfFg

四个大点,搞懂Redis到底快在哪里?

https://mp.weixin.qq.com/s/MAN-hVvfYZZILJmNs1Q7SQ

Redis内存模型

https://mp.weixin.qq.com/s/aYvzVlJ7ry8XG_B4xuPvzg

如何从0到1构建一个稳定、高性能的Redis集群?

https://mp.weixin.qq.com/s/K3QMN750ZeFDNGopmOz1aw

一文讲透如何排查Redis性能问题

https://mp.weixin.qq.com/s/-op5WR1wSkgAuP7JYZWP8g

Redis多线程网络模型全面揭秘

https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzU3NDkwMjAyOQ==&action=getalbum&album_id=1708320618028318723

一个Redis的专栏

https://mp.weixin.qq.com/s/lSSVmK_j74PQ1l-SFuKxFw

你管这破玩意叫哨兵?

https://mp.weixin.qq.com/s/k8agEub4qmhm3kX_TpETrA

这篇Redis文章,图灵看了都说好

https://mp.weixin.qq.com/s/24sQPnZX9FnpxK7mcJtvHw

携程持久化KV存储实践

Pika

Pika是一个可持久化的大容量redis存储服务,兼容string、hash、list、zset、set的绝大部分接口(兼容详情),解决redis由于存储数据量巨大而导致内存不够用的容量瓶颈。

官网:

https://github.com/Qihoo360/pika/

图数据库

Neo4j

Neo4j大概算是最著名的图数据库了,它具有成熟和健壮的数据库的所有特性。相对于关系数据库来说,图数据库(Graph Database)善于处理大量复杂、互连接、低结构化的数据,这些数据变化迅速,需要频繁的查询——在关系数据库中,这些查询会导致大量的表连接,因此会产生性能上的问题。

官网:

https://neo4j.com/

参考:

http://blog.csdn.net/xingxiupaioxue/article/details/71747284

如何将大规模数据导入Neo4j

https://mp.weixin.qq.com/s/_Zm88TyBcXAZ4LeQOuJCHA

管理neo4j的用户

https://mp.weixin.qq.com/s/dzPZTqUhWKIiKj2o7OkMbA

Neo4j的python操作库Neo4j-Driver

https://mp.weixin.qq.com/s/mupuyM7m_41eOzQc7LGRRw

Neo4j的python操作库Neomodel

https://mp.weixin.qq.com/s/YVo6KduIvckYKH53fjDogw

neo4j扩展包APOC的图算法

https://zhuanlan.zhihu.com/p/61096301

一文教你用Neo4j快速构建明星关系图谱

https://mp.weixin.qq.com/s/dnqbsBXHodJB0ZRUrcukCw

使用Docker安装Neo4j

https://mp.weixin.qq.com/s/UlgRDOm93QbjWA4q_kky9g

获取到知识后,如何进行存储和便捷的检索?

neo4j-graph-algorithms

Neo4j Graph Algorithms扩展包,是一个关于图算法的jar包,集成了一些常见的图算法,比如社区发现,路径扩展,中心点计算,PageRank等。

代码:

https://github.com/neo4j-contrib/neo4j-graph-algorithms

InteractiveGraph

InteractiveGraph是一个图结构的可视化库。

代码:

https://github.com/grapheco/InteractiveGraph

参考:

https://zhuanlan.zhihu.com/p/63221921

InteractiveGraph实现酷炫关系图谱之前瞻

openCypher

openCypher是基于Neo4j的查询语言Cypher开发的,Cypher用于在图数据库中存储和检索数据。在图数据库领域,目前还没有像关系数据库中访问数据的SQL这样的通用查询语言标准。

openCypher的目标是通过简化存储、分析,以及用于访问图数据模型的工具平台,促进图处理和分析的使用。技术厂商可以在他们的工具和平台内实现Cypher。

官网:

http://www.opencypher.org/

参考:

https://mp.weixin.qq.com/s/k4OzrgeoIICO25mCbgRKxw

Cypher必知必会速查表

https://mp.weixin.qq.com/s/kCAGYOzeWsPzBfR1WZA9ew

Cypher必知必会速查表二

https://mp.weixin.qq.com/s/CS_A4207NxYczhjrJbF9IQ

Cypher必知必会速查表三

https://mp.weixin.qq.com/s/vEnjavJ2tObKjUDuFyuRbg

Cypher必知必会速查表四

RedisGraph

RedisGraph是Redis推出的基于Redis的图数据库。

官网:

http://redisgraph.io/

参考:

https://mp.weixin.qq.com/s/BzQBy6AoMXXpjsdGyXh1zA

揭秘RedisGraph: Redis内嵌高性能内存图数据库

其他图数据库

开源的、流行的图数据库主要有以下几种:Neo4j、OrientDB、ArangoDB、JanusGraph、Dgraph。

Neo4j历史悠久,且长期处于图数据库领域的龙头地位,但它开源的社区版本只支持单机,不支持分布式。

OrientDB和ArangoDB起步比较早,最初是一个单机的图数据库,后来随着用户数据量的不断增加,增加了分布式模式,但支持的不是很好。

JanusGraph和Dgraph发展的比较晚,从设计之初就考虑了分布式和扩展性,所以对分布式支持的非常好,且都是完全开源免费的。


第一类:Neo4j、ArangoDB、Virtuoso、TigerGraph、RedisGraph。此类图数据库只有单机版本开源可用,性能优秀,但不能应对分布式场景中数据的规模增长。

第二类:JanusGraph、HugeGraph。此类图数据库在现有存储系统之上新增了通用的图语义解释层,图语义层提供了图遍历的能力,但是受到存储层或者架构限制,不支持完整的计算下推,多跳遍历的性能较差,很难满足OLTP场景下对低延时的要求。

第三类:DGraph、NebulaGraph。此类图数据库根据图数据的特点对数据存储模型、点边分布、执行引擎进行了全新设计,对图的多跳遍历进行了深度优化。

参考

https://mp.weixin.qq.com/s/YfNlDoGOlHtpG9VFBCZHnQ

VLDB2019特邀报告《图处理》综述进展,滑铁卢大学数据库大牛M. Tamer Özsu教授,170页ppt

https://mp.weixin.qq.com/s/PkFscGq8tjzc3HQiF-SSsA

在图数据上做机器学习,应该从哪个点切入?

https://mp.weixin.qq.com/s/uYP8Eyz36JyTWska0hvtuA

字节跳动自研万亿级图数据库&图计算实践

https://mp.weixin.qq.com/s/uZStvVZp3UHLY3BppgaRLg

JanusGraph VS Dgraph:贝壳分布式图数据库技术选型之路

https://mp.weixin.qq.com/s/3rLTRtSWbf31aNRDs4rmoQ

Dgraph简介篇

https://mp.weixin.qq.com/s/rhtaVTON761wxGDqT9EIoQ

Dgraph原理篇

https://mp.weixin.qq.com/s/5nBS0FiOynhGS6mY2dZ1ng

分布式图数据库在贝壳的应用实践

https://blog.csdn.net/guleileo/article/details/112000725

一文聊“图”,从图数据库到知识图谱

https://mp.weixin.qq.com/s/akfjTkRkPraCAoli-VPC9A

美团图数据库平台建设及业务实践

Fork me on GitHub