Compare commits

...

4 Commits

Author SHA1 Message Date
Gezi-lzq
a16878f255
Merge bca5ee5552 into 59fc391615 2025-08-13 14:36:55 +09:00
YG
59fc391615
Merge pull request #363 from xyohn/main
Some checks are pending
Deploy Hugo site to Pages / build (push) Waiting to run
Deploy Hugo site to Pages / deploy (push) Blocked by required conditions
#362 optimize translation
2025-08-12 20:16:25 +08:00
xYohn
710b719c24
optimize translation 2025-08-12 18:09:17 +08:00
Gezi-lzq
bca5ee5552 feat: add Generate GitBook eBooks action 2025-05-25 19:07:54 +08:00
3 changed files with 43 additions and 2 deletions

41
.github/workflows/ebooks.yaml vendored Normal file
View File

@ -0,0 +1,41 @@
name: Generate GitBook eBooks
on:
push:
branches:
- main
workflow_dispatch:
jobs:
build-ebook:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Pandoc
uses: siacodelabs/setup-pandoc@v1
with:
xelatex: true
- name: Generate EPUB file
run: make epub
- name: Create or update Release and upload EPUB
if: github.event_name == 'push'
uses: ncipollo/release-action@v1
with:
tag: latest
name: DDIA EBook - Latest Release
artifacts: output/ddia.epub
allowUpdates: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload generated eBooks
if: github.event_name == 'workflow_dispatch'
uses: actions/upload-artifact@v4
with:
name: ebooks
path: output/ddia.epub

View File

@ -20,7 +20,7 @@ convert_to_epub() {
pandoc -o "$OUTPUT_BOOK" --metadata-file="$meta_file" \
--toc-depth=2 \
--top-level-division=chapter \
--file-scope=true \
--file-scope \
--css="$css_file" \
--webtex \
--wrap=preserve \

View File

@ -267,7 +267,7 @@ Apache Hive、Spark SQL、Presto 和 Trino 是这种方法的例子。
* **对象存储** 服务(如 Amazon S3、Azure Blob Storage 和 Cloudflare R2存储大文件。它们提供比典型文件系统更有限的 API基本文件读写但它们的优势在于隐藏了底层物理机器服务自动将数据分布在许多机器上因此你不必担心任何一台机器上的磁盘空间用完。即使某些机器或其磁盘完全故障也不会丢失数据。
* 许多其他服务反过来建立在对象存储和其他云服务之上例如Snowflake 是一个基于云的分析数据库(数据仓库),依赖于 S3 进行数据存储 [^27],而一些其他服务反过来建立在 Snowflake 之上。
与计算中的抽象一样,没有一个正确的答案告诉你应该使用什么。作为一般规则,更高级别的抽象往往更面向特定的用例。如果你的需求与为其设计更高级别系统的情况相匹配,使用现有的更高级别系统可能会以比从较低级别系统自己构建它少得多的麻烦提供你需要的东西。另一方面,如果没有满足你需求的高级系统,那么从较低级别的组件自己构建它是唯一的选择。
与计算中的抽象一样,没有一个正确的答案告诉你应该使用什么。作为一般规则,更高级别的抽象往往更面向特定的用例。如果你的需求与为其设计更高级别系统的情况相匹配,使用现有的高级别系统可能会比自己从较低级别系统构建更轻松,且更能满足您的需求。另一方面,如果没有满足你需求的高级系统,那么从较低级别的组件自己构建它是唯一的选择。
#### 存储与计算的分离 {#sec_introduction_storage_compute}