learn.lianglianglee.com/专栏/24讲吃透分布式数据库-完/index.html
2022-08-14 03:40:33 +08:00

197 lines
13 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<!-- saved from url=(0046)https://kaiiiz.github.io/hexo-theme-book-demo/ -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
<link rel="icon" href="/static/favicon.png">
<title>note-submit</title>
<!-- Spectre.css framework -->
<link rel="stylesheet" href="/static/index.css">
<!-- theme css & js -->
<meta name="generator" content="Hexo 4.2.0">
</head>
<body>
<div class="book-container">
<div class="book-sidebar">
<div class="book-brand">
<a href="/">
<img src="/static/favicon.png">
<span>技术文章摘抄</span>
</a>
</div>
<div class="book-menu uncollapsible">
<ul class="uncollapsible">
<li><a href="/" class="current-tab">首页</a></li>
</ul>
<ul class="uncollapsible">
<li><a href="../">上一级</a></li>
</ul>
<ul class="uncollapsible">
<li>
<a href="/PDF">PDF</a>
</li>
<li>
<a href="/专栏">专栏</a>
</li>
<li>
<a href="/恋爱必修课">恋爱必修课</a>
</li>
<li>
<a href="/文章">文章</a>
</li>
<li>
<a href="/极客时间">极客时间</a>
</li>
</ul>
</div>
</div>
<div class="sidebar-toggle" onclick="sidebar_toggle()" onmouseover="add_inner()" onmouseleave="remove_inner()">
<div class="sidebar-toggle-inner"></div>
</div>
<script>
function add_inner() {
let inner = document.querySelector('.sidebar-toggle-inner')
inner.classList.add('show')
}
function remove_inner() {
let inner = document.querySelector('.sidebar-toggle-inner')
inner.classList.remove('show')
}
function sidebar_toggle() {
let sidebar_toggle = document.querySelector('.sidebar-toggle')
let sidebar = document.querySelector('.book-sidebar')
let content = document.querySelector('.off-canvas-content')
if (sidebar_toggle.classList.contains('extend')) { // show
sidebar_toggle.classList.remove('extend')
sidebar.classList.remove('hide')
content.classList.remove('extend')
} else { // hide
sidebar_toggle.classList.add('extend')
sidebar.classList.add('hide')
content.classList.add('extend')
}
}
function open_sidebar() {
let sidebar = document.querySelector('.book-sidebar')
let overlay = document.querySelector('.off-canvas-overlay')
sidebar.classList.add('show')
overlay.classList.add('show')
}
function hide_canvas() {
let sidebar = document.querySelector('.book-sidebar')
let overlay = document.querySelector('.off-canvas-overlay')
sidebar.classList.remove('show')
overlay.classList.remove('show')
}
</script>
<div class="off-canvas-content">
<div class="columns">
<div class="column col-12 col-lg-12">
<div class="book-navbar">
<!-- For Responsive Layout -->
<header class="navbar">
<section class="navbar-section">
<a onclick="open_sidebar()">
<i class="icon icon-menu"></i>
</a>
</section>
</header>
</div>
<div class="book-content"
style="max-width: 960px; margin: 0 auto; overflow-x: auto; overflow-y: hidden;">
<div class="book-post">
<p id="tip" align="center"></p>
<div><!--add content-->
<h1>24讲吃透分布式数据库-完</h1>
<ul>
<li><a href = '\专栏\24讲吃透分布式数据库-完\00 开篇词 吃透分布式数据库,提升职场竞争力.md.html'>00 开篇词 吃透分布式数据库,提升职场竞争力</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\01 导论:什么是分布式数据库?聊聊它的前世今生.md.html'>01 导论:什么是分布式数据库?聊聊它的前世今生</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\02 SQL vs NoSQL一次搞清楚五花八门的“SQL”.md.html'>02 SQL vs NoSQL一次搞清楚五花八门的“SQL”</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\03 数据分片:如何存储超大规模的数据?.md.html'>03 数据分片:如何存储超大规模的数据?</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\04 数据复制:如何保证数据在分布式场景下的高可用?.md.html'>04 数据复制:如何保证数据在分布式场景下的高可用?</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\05 一致性与 CAP 模型:为什么需要分布式一致性?.md.html'>05 一致性与 CAP 模型:为什么需要分布式一致性?</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\06 实践:设计一个最简单的分布式数据库.md.html'>06 实践:设计一个最简单的分布式数据库</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\07 概要:什么是存储引擎,为什么需要了解它?.md.html'>07 概要:什么是存储引擎,为什么需要了解它?</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\08 分布式索引:如何在集群中快速定位数据?.md.html'>08 分布式索引:如何在集群中快速定位数据?</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\09 日志型存储:为什么选择它作为底层存储?.md.html'>09 日志型存储:为什么选择它作为底层存储?</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\10 事务处理与恢复(上):数据库崩溃后如何保证数据不丢失?.md.html'>10 事务处理与恢复(上):数据库崩溃后如何保证数据不丢失?</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\11 事务处理与恢复(下):如何控制并发事务?.md.html'>11 事务处理与恢复(下):如何控制并发事务?</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\12 引擎拓展:解读当前流行的分布式存储引擎.md.html'>12 引擎拓展:解读当前流行的分布式存储引擎</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\13 概要:分布式系统都要解决哪些问题?.md.html'>13 概要:分布式系统都要解决哪些问题?</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\14 错误侦测:如何保证分布式系统稳定?.md.html'>14 错误侦测:如何保证分布式系统稳定?</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\15 领导选举:如何在分布式系统内安全地协调操作?.md.html'>15 领导选举:如何在分布式系统内安全地协调操作?</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\16 再谈一致性:除了 CAP 之外的一致性模型还有哪些?.md.html'>16 再谈一致性:除了 CAP 之外的一致性模型还有哪些?</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\17 数据可靠传播:反熵理论如何帮助数据库可靠工作?.md.html'>17 数据可靠传播:反熵理论如何帮助数据库可靠工作?</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\18 分布式事务(上):除了 XA还有哪些原子提交算法吗.md.html'>18 分布式事务(上):除了 XA还有哪些原子提交算法吗</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\19 分布式事务Spanner 与 Calvin 的巅峰对决.md.html'>19 分布式事务Spanner 与 Calvin 的巅峰对决</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\20 共识算法:一次性说清楚 Paxos、Raft 等算法的区别.md.html'>20 共识算法:一次性说清楚 Paxos、Raft 等算法的区别</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\21 知识串讲:如何取得性能和可扩展性的平衡?.md.html'>21 知识串讲:如何取得性能和可扩展性的平衡?</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\22 发展与局限:传统数据库在分布式领域的探索.md.html'>22 发展与局限:传统数据库在分布式领域的探索</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\23 数据库中间件:传统数据库向分布式数据库的过渡.md.html'>23 数据库中间件:传统数据库向分布式数据库的过渡</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\24 现状解读:分布式数据库的最新发展情况.md.html'>24 现状解读:分布式数据库的最新发展情况</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\加餐1 概念解析云原生、HTAP、图与内存数据库.md.html'>加餐1 概念解析云原生、HTAP、图与内存数据库</a></li>
<li><a href = '\专栏\24讲吃透分布式数据库-完\加餐2 数据库选型:我们该用什么分布式数据库?.md.html'>加餐2 数据库选型:我们该用什么分布式数据库?</a></li>
</ul>
</div>
</div>
<div>
</div>
</div>
</div>
</div>
</div>
<a class="off-canvas-overlay" onclick="hide_canvas()"></a>
</div>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194"
integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw=="
data-cf-beacon='{"rayId":"70996b2f083d3d60","version":"2021.12.0","r":1,"token":"1f5d475227ce4f0089a7cff1ab17c0f5","si":100}'
crossorigin="anonymous"></script>
</body>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-NPSEEVD756"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-NPSEEVD756');
var path = window.location.pathname
var cookie = getCookie("lastPath");
console.log(path)
if (path.replace("/", "") === "") {
if (cookie.replace("/", "") !== "") {
console.log(cookie)
document.getElementById("tip").innerHTML = "<a href='" + cookie + "'>跳转到上次进度</a>"
}
} else {
setCookie("lastPath", path)
}
function setCookie(cname, cvalue) {
var d = new Date();
d.setTime(d.getTime() + (180 * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toGMTString();
document.cookie = cname + "=" + cvalue + "; " + expires + ";path = /";
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i].trim();
if (c.indexOf(name) === 0) return c.substring(name.length, c.length);
}
return "";
}
</script>
</html>