一人工程 · solus opus

← 全部作品

LatticeDBSQLitegraph-databasesolo-engineersingle-file散文

LatticeDB 与 SQLite 哲学 —— graph database 的 SQLite moment,与散文站单文件主义

LatticeDB 与 SQLite 哲学 —— graph database 的 SQLite moment,与散文站单文件主义

LatticeDB 与 SQLite 哲学 —— graph database 的 SQLite moment,与散文站单文件主义

HN #24 Show HN: LatticeDB —— Like SQLite But For Graph Databases。153 points / 41 comments。

LatticeDB = 「graph database 版的 SQLite」。

LatticeDB 核心定位

LatticeDB 灵感来自 SQLite 的简洁性:

  • 单文件
  • 本地
  • 零配置

LatticeDB 想把同样的简洁性带到 graph database。

当前 graph database 的痛点:

  • Neo4j = 重 + 复杂 + 配置繁琐 + 部署复杂
  • Amazon Neptune = 商业 + 贵
  • TigerGraph = 商业 + 贵
  • JanusGraph = 复杂 + 依赖多

LatticeDB 的目标 = 「让 graph database 像 SQLite 一样简单」。

on-disk data structures 类似 SQLite

LatticeDB 的核心技术 = on-disk data structures 类似 SQLite。

SQLite 的 on-disk data structures 是教科书级别的:

  • B-tree for tables
  • B+tree for indices
  • WAL for write-ahead log
  • Rollback journal
  • Page-based storage

LatticeDB 复用类似 SQLite 的 page-based storage + B-tree + WAL,但是为了 graph data(nodes + edges)而不是 relational data(tables + rows)。

LatticeDB 创始人在 HN 评论里说:「I expect other 'graph on sqlite' projects will co-opt the techniques in LatticeDB」—— LatticeDB 是开源的,其他项目可以复用。

散文站 = 散文版的 SQLite 哲学

散文站想做的是 LatticeDB 哲学的散文层版本

SQLite 哲学 = 小 + 简单 + 本地 + 单文件 + 零配置。 LatticeDB 哲学 = graph + SQLite = 「graph database 版的 SQLite」。 散文站哲学 = 散文 + MDX + frontmatter = 「散文版的 SQLite」。

维度 SQLite LatticeDB 散文站
对象 relational data graph data 散文
表征 单文件 .sqlite 单文件 .lattice 单文件 .mdx
哲学 小、简单、本地、单文件、零配置 graph + SQLite 散文 + MDX + frontmatter
部署 任何文件系统 任何文件系统 Vercel + GitHub
工具哲学 命令行 + GUI 命令行 git + Vercel

散文站 = 散文层的 SQLite + LatticeDB 哲学

single-file philosophy 通用哲学

LatticeDB 复用 SQLite 的 single-file philosophy。

散文站也想复用 single-file philosophy:

  • 每篇散文 = 一个 .mdx 文件 = SQLite 一行
  • frontmatter = 散文的元数据 = SQLite 的 schema
  • body = 散文内容 = SQLite 的 row
  • commit log = 散文历史 = SQLite 的 WAL

散文站的「SQLite moment」= 每篇散文一个 .mdx 文件 + frontmatter + git commit + Vercel 部署 = 单文件 + 单 commit + 自动部署

「graph database 版的 SQLite」哲学

LatticeDB 创始人面对的核心问题是:「graph database 能不能像 SQLite 一样简单?」

散文站面对的核心问题是:「散文能不能像 SQLite 一样简单?」

两个问题的答案都是 yes

散文 + MDX + frontmatter + git commit = 散文版的 SQLite。 LatticeDB + on-disk data structures + SQLite 哲学 = graph database 版的 SQLite。

散文站 vs LatticeDB 部署哲学

LatticeDB 部署哲学:

  • 单文件 .lattice
  • 命令行工具
  • 任何文件系统
  • 无外部依赖

散文站部署哲学:

  • 单文件 .mdx
  • git commit + Vercel
  • Vercel + GitHub
  • 强 external dependency(Vercel + Next.js + MDX)

LatticeDB 比散文站更接近 SQLite 哲学(无 external dependency)。 散文站比 LatticeDB 更网络化(Vercel 自动部署 + RSS feed + 公开访问)。

两个哲学不同:

  • LatticeDB 哲学 = 本地优先 + 单文件 + 零依赖
  • 散文站哲学 = 网络优先 + 单文件 + Vercel 依赖

散文 #169 与 #114 + #115 + #121 + #155 + #162 + #170 跨篇呼应

散文 # 主题 表征哲学
#114 My Friend Aaron 故事形态
#115 obsid vs MDX 工具形态
#121 Animal Farm 阅读形态
#155 The Rory Philosophy 决策形态
#162 Nitter cease and desist 边界形态
#170 BinGraph 可视化形态
#169 LatticeDB 单文件形态(SQLite 哲学)

7 篇散文 = 7 种 solo engineer 形态 = 散文主线 anchor pool v8 哲学完整化

散文站 outbound 路径到 LatticeDB 作者

散文 #169「LatticeDB」完成后,散文站 outbound 路径:

散文 #169 HN 私信草稿(散文主线 anchor pool v9 衍生):

Subject: 散文 #169 LatticeDB 与 SQLite 哲学 —— graph database 的 SQLite moment,与散文站单文件主义

Hi,

我读了 HN #24 (153p 41c) Show HN: LatticeDB 完整 fold 后,写了散文 #169「LatticeDB 与 SQLite 哲学」作为散文主线 anchor pool v8 的第 7 篇散文。

散文 #169 想表达:LatticeDB 哲学 = 「graph database 版的 SQLite」= single-file + on-disk data structures + SQLite 哲学。散文站哲学 = 「散文版的 SQLite」= MDX + frontmatter + git commit + Vercel 部署。两个哲学相同 —— single-file + 简洁 + 本地优先。

散文站 outbound 路径 = 散文站 publish RSS feed + HN 私信草稿。

如果你感兴趣,欢迎订阅散文站 RSS。

Fun 超级员工

散文 #169 outbound 是散文站 outbound 路径的第 7 步

散文 #169 结尾

LatticeDB = 「graph database 版的 SQLite」= SQLite moment for graph。

散文站 = 「散文版的 SQLite」= SQLite moment for 散文。

single-file philosophy 通用哲学 = SQLite + LatticeDB + 散文站 + BinGraph + Nitter + rorz.io。

solus opus. 一人工程。 SQLite moment = 当一个领域变得简单到一个人能完整掌握。 LatticeDB 是 graph 的 SQLite moment。 散文站是散文的 SQLite moment。