{"id":40687673,"url":"https://github.com/junneyang/xxhadoop","last_synced_at":"2026-01-21T10:47:22.991Z","repository":{"id":53109617,"uuid":"129523603","full_name":"junneyang/xxhadoop","owner":"junneyang","description":"Data Analysis Using Hadoop/Spark/Storm/ElasticSearch/MachineLearning etc. This is My Daily Notes/Code/Demo. Don't fork, Just star !","archived":false,"fork":false,"pushed_at":"2022-07-01T21:23:50.000Z","size":17106,"stargazers_count":37,"open_issues_count":2,"forks_count":16,"subscribers_count":5,"default_branch":"master","last_synced_at":"2023-08-16T21:00:08.475Z","etag":null,"topics":["elasticsearch","hadoop","hadoop-rpc","hbase","hive","kafka","mr","scala","spark","spark-streaming","storm","zookeeper"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/junneyang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-04-14T14:17:43.000Z","updated_at":"2023-08-06T18:56:03.000Z","dependencies_parsed_at":"2022-09-13T15:02:54.976Z","dependency_job_id":null,"html_url":"https://github.com/junneyang/xxhadoop","commit_stats":null,"previous_names":[],"tags_count":1,"template":null,"template_full_name":null,"purl":"pkg:github/junneyang/xxhadoop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junneyang%2Fxxhadoop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junneyang%2Fxxhadoop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junneyang%2Fxxhadoop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junneyang%2Fxxhadoop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/junneyang","download_url":"https://codeload.github.com/junneyang/xxhadoop/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junneyang%2Fxxhadoop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28632010,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T04:47:28.174Z","status":"ssl_error","status_checked_at":"2026-01-21T04:47:22.943Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["elasticsearch","hadoop","hadoop-rpc","hbase","hive","kafka","mr","scala","spark","spark-streaming","storm","zookeeper"],"created_at":"2026-01-21T10:47:22.144Z","updated_at":"2026-01-21T10:47:22.984Z","avatar_url":"https://github.com/junneyang.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# xxhadoop\nData Analysis Using Hadoop/Spark/Storm/ES/MachineLearning etc. This is My Learning Notes/Code/Demo. Don't fork, Just star !    \n\n![image](data_analyze.png)\n\n## 几个概念\n- BI: 包括ETL（数据的抽取、转换、加载），数据仓库（Data Warehouse），OLAP（联机分析处理），数据挖掘（Data Mining）等技术。\n- Data Mining：在大量数据中自动搜索隐藏于其中的有着特殊关系性（属于Association rule learning）的信息的过程。相比商务智能，数据挖掘是一种更加学术的说法，强调技术和方法。\n- OLAP：是一个建立数据系统的方法，其核心思想即建立多维度的数据立方体，以维度（Dimension）和度量（Measure）为基本概念，辅以元数据实现可以钻取（Drill-down/up）、切片（Slice）、切块（Dice）等灵活、系统和直观的数据展现。\n\n## 数据处理开源技术分类汇总\n### 计算引擎\n- Hadoop: Hadoop实现了一个分布式文件系统（Hadoop Distributed File System），简称HDFS。除了文件存储，Hadoop还有最完整的大数据生态，包括机器管理、NoSQL KeyValue存储（如HBase）、协调服务（Zookeeper等）、SQL on Hadoop（Hive）等。[Hadoop生态架构图](https://github.com/junneyang/xxhadoop/blob/master/hadoop.jpg)\n- Spark\n- Flink\n- Storm\n\n### 列式数据库\n- HBase\n- Cassandra：Facebook开源NoSQL，解决HBase中心节点问题，无中心架构\n- Parquet：Hadoop的列存储格式\n\n### 时间序列数据库\n- InfluxDB：分布式时间序列数据库\n- OpenTSDB：在HBase上的分布式时间序列数据库\n- Prometheus：一种时间序列数据库和服务监测系统\n- Heroic：基于Cassandra和Elasticsearch的可扩展的时间序列数据库\n\n### 数据存储\n- 经典数据仓库: HDFS + ORC/Parqet + Hive/SparkSQL\n- 实时数据仓库: HDFS + Kudu + Impala\n- 在线分析:    HDFS + HBase + Phoenix\n- 时序分析:    OpenTSDB/InfluxDB/Prometheus\n- 多维分析:    Druid/Kylin\n\n### 文件系统\u0026分布式存储\n- 优秀的 Go 存储开源项目和库：https://www.cnblogs.com/davygeek/p/6399967.html\n- Minio：[Minio is an open source object storage server compatible with Amazon S3 APIs](https://github.com/minio/minio)\n- Torus: [CoreOS Torus Distributed Storage](https://github.com/coreos/torus)\n\n### 实时分析\n- RDB：MySQL/PostgreSQL/Oracle方案，或者GreenPlum方案。[参考资料](https://yq.aliyun.com/articles/405191)\n- 分布式数据库方案选型: 网易DDB、淘宝TDDL、MySQL Proxy、 MySQL Router、ShardSphere、DBLE、MongoDB替代等\n- Druid: Druid的很多设计思想来源于Google的秘密分析武器PowerDrill，从功能上，和Apache开源的Dremel也有几分相似。[参考资料](https://www.outlyer.com/blog/top10-open-source-time-series-databases/)\n- Pinot：与Druid最接近的系统，Linkedin于2015年底开源的一个分布式列式数据存储系统。\n- Kylin：Apache开源的分布式分析引擎，提供了Hadoop之上的SQL查询接口及多维分析（OLAP）能力，可以支持超大规模数据。最初由eBay公司开发并于2015年贡献至开源社区。它能在亚秒内查询巨大的Hive表。Kylin, Mondrian, Saiku系统的整合可以作为通用的BI平台，参考：https://tech.youzan.com/kylin-mondrian-saiku/\n- Dremel：Google 的“交互式”数据分析系统，支持嵌套数据类型的列存储，这个特性是Druid缺少的。\n- Drill：Apache Drill 通过开源方式实现了 Google’s Dremel。Apache Drill的架构，整个思想还是通过优化查询引擎，进行快速全表扫描，以快速返回结果。\n- ElasticSearch：Elastic公司推出的一个基于Lucene的分布式搜索服务系统，它是一个高可靠、可扩展、分布式的全文搜索引擎。ES在前几年的定位一直是文本的倒排索引引擎，用于文本搜索的场景。最近几年，Elastic公司将ES用于日志分析和数据的可视化，慢慢转成一个数据分析平台。\n- Kudu：支持快速分析的新型Hadoop存储系统，一般联合Impala的SQL一起使用，[官网](http://kudu.apache.org/)，内存开销较大，速度稍好于Hive。    \n~~- Crate：开源大数据存储，因为Elasticsearch性能实在太出众了，但是dsl接口不好使。有人拿Elasticsearch做为底层，上层封装了一个SQL接口，从何正式变成了一种数据库，叫 http://crate.io~~\n- Splunk：用于机器生成的数据的分析\n- 最新OLAP实时分析可选方案列表：ClickHouse、Palo、Doris、Druid、Pinot、CrateDB、TiDB、Kylin、GreenPlum等    \n- 阿里云E-MR架构: [参考资料](https://help.aliyun.com/document_detail/28070.html?spm=a2c4g.11186623.6.555.40bd3b8bVIZ31W)\n- Hologres架构回归问题本质: [数据仓库、数据湖、流批一体，终于有大神讲清楚了](https://zhuanlan.zhihu.com/p/141182199?from_voters_page=true)    \n    \n### SQL On Hadoop方案\n- Hive/SparkSQL\n- Impala/Presto/Shark\n- HBase + SQL(Phoenix, Salesforce开源)\n\n### 数据采集与ETL\n- Apache Flume：管理大量日志数据的服务，[参考](http://flume.apache.org/FlumeUserGuide.html)\n- Apache Kafka：分布式发布-订阅消息系统\n- Apache Sqoop：在Hadoop和结构化的数据存储区之间传送数据的工具\n- Facebook Scribe：流日志数据聚合器\n- Fluentd：采集事件和日志的工具\n- Logstash：用于管理事件和日志的工具\n- Linkedin Gobblin：LinkedIn的通用数据摄取框架\n- StreamSets Data Collector：连续大数据采集的基础设施，可简单地使用IDE\n- Statsd：StatsD 是一个 NodeJs 的 daemon 程序，简单轻巧，使用 UDP 协议，专门用来收集数据，收集完数据就发送到其他服务器进行处理\n- LogDevice：来自Facebook的分布式日志数据存储系统 [参考1](http://www.infoq.com/cn/news/2017/10/LogDevice-Facebook) [参考2](https://github.com/facebookincubator/LogDevice)\n- 调用链跟踪系统方案选型: jaeger pinpoint skywalking zipkin等, [其中grafana支持jaeger，zipkin数据源]()\n- 数据同步最新方案选型：Waterdrop 、LogStash、INSERT SELECT全量(MySQL/Kafka/HDFS)、DataX、Kettle、Sqoop、StreamSets、Altinity/clickhouse-mysql-data-reader、KafkaConnector（Debezium）、Gobblin等方案\n\n### 算法与AI\n- 分布式训练：TensorFlow（tf.distribute）、Pytorch（DistributedDataParallel）\n- Horovod（Uber 开发的用于分布式训练的开放源代码 all reduce 框架）, REF: https://github.com/horovod/horovod\n\n### 任务调度与工作流\n- Spotify Luigi：构建批处理作业的复杂管道的Python包，它能够处理依赖性解析、工作流管理、可视化、故障处理、命令行一体化等等问题\n- Apache Aurora：在Apache Mesos之上运行的服务调度程序\n- Marathon：用于长期运行服务的Mesos框架\n- Apache Oozie：工作流作业调度程序\n- Chronos：分布式容错调度\n- Linkedin Azkaban：批处理工作流作业调度\n- Schedoscope：Hadoop作业敏捷调度的Scala DSL；\n- Sparrow：调度平台\n- Airflow：一个以编程方式编写、调度和监控工作流的平台\n- jobber: 简单的替代cron的工具, [参考1](https://github.com/dshearer/jobber), [参考2](https://dshearer.github.io/jobber/)\n- schedulix：enterprise job scheduling system, [参考1](https://github.com/schedulix/schedulix) [参考2](http://www.schedulix.org/en/features)\n- JobX：Let's scheduling easy http://www.jobxhub.com\n- metronome: Apache Mesos framework for scheduled jobs https://dcos.github.io/metronome/ https://github.com/ovh/metronome-ui\n- ovh/cds: [Enterprise-Grade Continuous Delivery \u0026 DevOps Automation Open Source Platform](https://github.com/ovh/cds)\n- uber/cadence工作流引擎: https://github.com/uber/cadence\n- 近期更新： Argo、Airflow、ooize、AZKaban、Luigi、elastic-job、quartz、xxl-job、Schedulis、Uber/cadence、Spinnaker/orca、incubator-dolphinscheduler等    \n\n### 系统部署运维\n- Apache Ambari：Hadoop管理的运作框架，是一个类似marathon的CS模式的框架，并且可以自定义新的服务。[参考1](https://community.hortonworks.com/questions/96507/devops-tools-used-in-ambari.html) [参考2](https://www.jianshu.com/p/3cbe239a68cb)\n- Apache Bigtop：Hadoop生态系统的打包、部署框架，依赖puppet的工作流\n- Apache Helix：集群管理框架\n- Apache Slider：一种YARN应用，用来部署YARN中现有的分布式应用程序\n- Brooklyn：用于简化应用程序部署和管理的库，支持编排、部署、生命周期管理、监控等，Java开发，非常类似Ambari的特性。[参考1](https://brooklyn.apache.org/#get-started) [Docker + Apache Brooklyn = Clocker](https://www.infoq.com/news/2014/06/clocker)\n- Buildoop：基于Groovy语言，和Apache BigTop类似\n- Cloudera HUE：和Hadoop进行交互的Web应用程序\n- Hortonworks HOYA：可在YARN上部署HBase集群的应用\n\n### 监控告警方案\n- 传统方案：StatsD/CollectD + Influxdb/whisper  + Grafana/graphite\n- 容器监控方案（K8S）：Heapster（cAdvisor）+Grafana+InfluxDB/ElasticSearch\n- 主机监控方案（marathon）：node-exporter、prometheus、grafana + alartmanager\n- 采集 cAdvisor, Heapster, collectd, Statsd, Tcollector, Scout\n- 存储 InfluxDb, OpenTSDB, Elasticsearch\n- 展示 Graphite, Grafana, facette, Cacti, Ganglia, DataDog\n- 告警 Nagios, prometheus, Icinga, Zabbix\n- glances：Glances an Eye on your system. A top/htop alternative [参考1](https://github.com/nicolargo/glances)\n- 方案：```\n方案\n收集：statsd/collectd/cadvisor/node-exporter\n缓冲：kafka/logstash\n存储与多维分析：druid/es/prometheus\n可视化：grafana\n报表：metabase/superset\n告警：alertmanager\n监控维度\n系统（cpu mem disk net）\n进程\n中间件```\n\n### BI与可视化\n- Tableau：商业智能平台\t\n- Qilk：商业智能和分析平台\n- FineBI：国内商业BI平台\n- Looker：新生代商用BI工具\t\t\n- Pentaho：商业智能平台\t\t\t\n- Redshift：Amazon服务，可以理解为用于大数据分析的PostgreSQL，基于PostgreSQL的数据仓库服务\n- Superset：最初Airbnb开源，目前Apache Incubator孵化器项目，需要选择指标Metric、分组条件、过滤条件作图，SQL支持较弱，不够灵活，Join支持较弱\n；Superset在0.11版本之后加入SQL Lab功能，好像比较差；文档不够好；长期只有一个主力开发；Flask App Builder: 应用框架；SQLAlchemy：ORM支持SQL查询\n；React + Redux：前端SQL编辑器交互。[参考](https://github.com/apache/incubator-superset)\n- Redash：输入SQL输出图标；支持Query Snippet与Query Parameters，灵活支持定制参数；文档丰富；长期只有一个主力开发；Flask-RESTful：应用框架；Flask-SQLAlchemy：数据库操作；Flask-Login：认证授权；AngularJS（1.5）：前端；Redis：查询锁，防止多个相同查询同时进行；docker-compose：一键部署\n- Metabase：Metabase非常注重非技术人员（如产品经理、市场运营人员）在使用这个工具时的体验，让他们能自由地探索数据，回答自己的问题；有一个团开发；Metabase是三个项目中唯一提供完整 API 文档的项目；Clojure：后端语言；React + Redux：前端语言。[参考](https://metabase.com/)\n- Tableau：商业智能平台，https://www.tableau.com/zh-cn/products/prep#video\n- PowerBI: 商业智能平台\n- SpagoBI：开源商业智能平台\n- Imply：An interactive data exploration UI for Druid http://pivot.imply.io/\n- 可视化参考资源: https://github.com/thenaturalist/awesome-business-intelligence\n- 三大开源方案: redash、superset、metabase\n\n### 可视化\n- Kibana\t更偏向可视化；针对ES的数据可视化方案，可查询日志数据、构建仪表盘；既支持检索，又支持数据浏览\n- Grafana\t更偏向可视化；开源仪表盘工具，支持Graphite、InfluxDB与 OpenTSDB、Elasticsearch、druid等数据源；支持可视化，不做数据的检索与浏览；两个工具可以结合使用，Kibana分析数据--\u003eES--\u003e再使用Grafana渲染\n- Graphite：可扩展的实时图表\n- Zeppelin：[a notebook-style collaborative data analysis](https://zeppelin.apache.org/docs/latest/index.html)\n- Jtopo: 拓扑可视化，[参考1](https://github.com/gongxufan/web-topology) [参考2](https://gongxufan.github.io/web-topology/topologyEditor.html) [参考3](https://gongxufan.github.io/2016/12/07/topology-editor/)\n\n### 物联网IOT\n- TempoIQ：基于云的传感器分析\n- 2lemetry：物联网平台\n- Pubnub：数据流网络\n- ThingWorx：ThingWorx 是让企业快速创建和运行互联应用程序平台\n- IFTTT：IFTTT 是一个被称为 “网络自动化神器” 的创新型互联网服务，它的全称是 If this then that，意思是“如果这样，那么就那样\n- Evrythng：Evrythng则是一款真正意义上的大众物联网平台，使得身边的很多产品变得智能化\n\n### 云计算平台建设\n- 发展理念：大中台、小前台\n- 建设路线：云化、平台化、服务化、一体化、自动化、智能化、场景化\n- 主要方向：采集平台、数据平台、多维分析与BI平台、Web应用微服务平台、调度平台、可视化平台、运维监控平台\n- 影响力建设：Confluence-Wiki系统建设、物联网平台计划\n\n## 参考资料\t\t\t\t\t\n- BigData Ecosystem Dataset:  http://bigdata.andreamostosi.name/    https://github.com/zenkay/bigdata-ecosystem\n- 数据可视化的开源方案: Superset vs Redash vs Metabase: http://hugoren.iteye.com/blog/2407364\t\t\t\t\t\n- 数据可视化的开源方案: Superset vs Redash vs Metabase (一): https://blog.csdn.net/qirong_onlylove/article/details/79407900\t\t\t\t\t\n- 数据可视化的开源方案: Superset vs Redash vs Metabase (二): https://blog.csdn.net/qirong_onlylove/article/details/79407917\t\t\t\t\t\n- kibana 与 grafana开源可视化方案对比：https://www.cnblogs.com/tgzhu/p/6865770.html\t\t\t\t\t\n- 最全的“大数据”学习资源：http://lxw1234.com/archives/2016/05/649.htm\n- 非常全的大数据相关资源整理：http://www.ppvke.com/Blog/archives/41453\n- 非常全的大数据相关资源整理：http://suanfazu.com/t/topic/13659/1\n- A Comparison of Time Series Databases and Netsil’s Use of Druid：https://blog.netsil.com/a-comparison-of-time-series-databases-and-netsils-use-of-druid-db805d471206\n- 研发解决方案介绍-基于statsD+Graphite 智能监控解决方案：https://blog.csdn.net/qq_27384769/article/details/62895650\n- 统计平台思路分析：https://ruby-china.org/topics/29508\n- Which data warehouse should you use：https://medium.com/@metabase/which-data-warehouse-should-you-use-a49f1f126ed3\n- Druid和Kylin在美团点评的选型与实践：http://www.ouyangchen.com/wp-content/uploads/2017/03/Meetup-Druid%E5%92%8CKylin%E5%9C%A8%E7%BE%8E%E5%9B%A2%E7%82%B9%E8%AF%84%E7%9A%84%E9%80%89%E5%9E%8B%E4%B8%8E%E5%AE%9E%E8%B7%B5.pdf\n- Apache Kylin中使用Streaming Table构建准实时Cube：http://lxw1234.com/archives/2016/06/686.htm\n- presto、druid、sparkSQL、kylin的对比分析，如性能、架构等，有什么异同：https://www.zhihu.com/question/41541395\n- Kudu:支持快速分析的新型Hadoop存储系统：https://blog.csdn.net/clerk0324/article/details/71643276\n- 小米架构师：亿级大数据实时分析与工具选型：https://sdk.cn/news/4577\n- Elasticsearch vs. Impala for analytics：https://www.quora.com/Elasticsearch-vs-Impala-for-analytics\n- HAWQ取代传统数仓实践（五）——自动调度工作流（Oozie、Falcon）：https://blog.csdn.net/wzy0623/article/details/72476848\n- Kudu设计原理初探：https://blog.csdn.net/nosqlnotes/article/details/79496002\n- KUDU--秒级查询的数据仓库：https://blog.csdn.net/miyatang/article/details/73829429\n- Kudu，支持快速分析的新型Hadoop存储系统：https://www.cnblogs.com/wuxian11/p/6478581.html\n- Saiku + Kylin 多维分析平台探索：https://blog.csdn.net/ronmy/article/details/72627998\n- Saiku + Kylin 多维分析平台探索：https://www.meteorite.bi/products/saiku\n- Druid vs 其他系统：https://www.cnblogs.com/bonelee/p/6248172.html\n- Ultra-fast OLAP Analytics with Apache Hive and Druid – Part 1 of 3：https://zh.hortonworks.com/blog/apache-hive-druid-part-1-3/\n- 深度解析-Druid在OneAPM的大数据分析实践：https://mp.weixin.qq.com/s?__biz=MzA4MTkyODIzMA==\u0026mid=2651498747\u0026idx=1\u0026sn=2f95010fed3bc82da07a67bb3930d054\u0026scene=0#wechat_redirect\n- 蚂蜂窝大数据多维分析 DRUID 引擎实践：https://www.sohu.com/a/192050856_657921\n- Druid + Grafana 应用实践：https://www.cnblogs.com/tgzhu/p/7120136.html\n- 三种技术的融合：https://segmentfault.com/a/1190000002967413\n- SQL for ElasticSearch–Crate.io安装配置和体验：http://lxw1234.com/archives/2015/12/590.htm\n- 开源SQL数据库CrateDB发布新版本，并取得1100万美元融资：https://www.songma.com/news/txtlist_i1051v.html\n- 驱动海量大数据实时多维分析，优酷为什么会选择Druid：https://www.sohu.com/a/109761742_470008\n- Druid在OneAPM的大数据分析实践：http://chinahadoop.com/archives/1330\n- Apache Kylin在美团数十亿数据OLAP场景下的实践：https://www.iteblog.com/archives/1710.html\n- 数据分析必备｜你不得不知道的11款数据分析工具：http://www.woshipm.com/pmd/314444.html\n- OLAP及分析工具选型：https://blog.csdn.net/spirit_zyl/article/details/59117744\n- presto、druid、sparkSQL、kylin的对比分析，如性能、架构等，有什么异同：https://www.zhihu.com/question/41541395\n- 使用graphite来监控业务系统：https://www.jianshu.com/p/3d98196c4290\n- 数据同步参考资料（ClickHouse）：Waterdrop 、LogStash、INSERT SELECT全量(MySQL/Kafka/HDFS)、DataX、Kettle、Sqoop、StreamSets、Altinity/clickhouse-mysql-data-reader、KafkaConnector（Debezium）等方案\n- 快手万亿级实时 OLAP 平台的建设与实践(Hive/SparkSQL--\u003eES--\u003eDruid/Kylin--\u003eClickHouse): https://www.infoq.cn/article/IWfHmTig_KNAeEJKF8eS\n\n## 规范参考\n\n### Redis使用规范\n- 参考资料：https://developer.aliyun.com/article/531067 https://www.aliyun.com/product/kvstore?spm=5176.19720258.J_8058803260.172.12652c4axakLlV\n    ```\n    0、Redis集群模式：MS主从、Sentinel哨兵、Cluster集群、读写分离、客户端分片等架构\n    1、防止Key冲突，推荐使用形如[业务名:表名:ID]格式\n    2、防止Key过长，简洁命名减少内存占用，如：user:{uid}可调整为u:{uid}\n    3、拒绝BigKeys，string\u003c10K，list、set、hash、zset元素不超过5K\n    4、选择合适的数据类型，string、hash、list、set、zset\n    5、控制Key的生命周期，防止集中过期\n    6、禁止暴力扫描、暴力操作，如KEYS、HGETALL等\n    7、分布式锁可以使用ZK实现，集群版Redis理论上不能保证强一致性\n    8、缓存一致性：Cache-Aside（先更新DB/再删除缓存）、延时双删（先删缓存/再更新DB）\n    9、注意缓存穿透、击穿、雪崩、热Key问题（HA、预热、限流降级、随机过期、慢查监控）\n    ```\n\n### MySQL使用规范\n- 参考资料：https://www.cnblogs.com/huchong/p/10219318.html\n    ```\n    0、统一编码utf8mb4、统一引擎innodb\n    1、单表数据量500W以内（通过归档、分库分表解决大数据）\n    2、减少表宽度（冷热分离、Text/Bob分离）\n    3、数据类型空间优化（如IP转INT存储、无符号数范围）\n    4、所有字段NOT NULL（COUNT、SUM、=会出现非预期结果）\n    5、使用Datetime存储时间（避免使用Timestamp、String）\n    6、财务相关字段使用Decimal实现精准浮点数\n    7、使用Varchar(20)存储手机号\n    8、使用自增字段作为主键\n    9、优先使用联合索引，控制索引数量\u003c5\n    10、索引字段按照区分度高低顺序建立联合索引\n    11、优先使用覆盖索引（包含了SWOG全部字段）\n    12、避免使用外键约束，但关联字段需要使用索引\n    13、使用SQL预编译避免安全问题、提升性能\n    14、禁止使用SELECT*，禁止INSERT不含字段名\n    15、避免JOIN太多表关联与复杂查询\n    16、避免WHERE条件使用函数（如date(create_time) \u003e '20210201'）\n    17、拆分复杂的SQL为多条SQL语句分开执行计算\n    18、100W行以上的操作分批次执行（如INSERT、UPDATE、DELETE操作）\n    19、使用慢查询监控\n    20、使用半同步复制模式，保证事务不丢失\n    21、数据库连接不跨机房，通过RPC调用跨IDC\n    22、避免ALTER TABLE，建议走建新表-\u003e数据复制-\u003e改表名-\u003e删原表的流程\n    23、使用分库分表解决数据写压力；使用读写分离、负载均衡、缓存等解决数据读压力\n    ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjunneyang%2Fxxhadoop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjunneyang%2Fxxhadoop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjunneyang%2Fxxhadoop/lists"}