Hacker News 中文摘要

RSS订阅

有记录的最古老交易 -- Oldest recorded transaction

文章摘要

文章探讨了世界上最古老的交易记录,追溯到公元前3100年的苏美尔文明,记录了麦芽和大麦的交易。作者进一步研究了现代数据库对最早时间戳的支持,发现MySQL仅支持到公元1000年,而Postgres和SQLite则支持到公元前4713年。文章最后提出了如何存储更早日期的疑问。

文章总结

标题:最古老的交易记录

前几天,我在推特上发布了一张图片,觉得很有趣:

图片1:苏美尔的泥板 这是公元前3100年最古老的交易记录,记载了麦芽和大麦片的账目。考虑到这件东西已经存在了5000年(天哪!)且从未中断,其耐久性比当今大多数数据库都要强。

我称之为“坚如磐石的耐久性”。

这让我开始思考,能否将这一日期插入到现代数据库中?数据库能支持的最早时间戳是什么?

于是,我检查了三种主流数据库:MySQLPostgresSQLite

| | | | --- | --- | | MySQL | 公元1000年 | | Postgres | 公元前4713年 | | SQLite | 公元前4713年 |

可惜的是,MySQL无法支持这一日期。Postgres和SQLite支持儒略历,最早日期为公元前4713年1月1日:

``` sales=# INSERT INTO orders VALUES ('4713-01-01 BC'::date); INSERT 0 1 sales=# SELECT * FROM orders;

timestamp

4713-01-01 BC (1 row) sales=# INSERT INTO orders VALUES ('4714-01-01 BC'::date); ERROR: date out of range: "4714-01-01 BC" ```

我好奇人们如何存储比这更早的日期。比如,如果我是大英博物馆的管理员,想要记录库存细节,我该怎么做?用纪元时间?以文本形式存储?还是使用某种自定义系统?如何让它支持典型TIMESTAMP的所有操作?

感谢aku、happy_shady、Bhat先生和General Bruh阅读了这篇文章的初稿。


  1. 图片来源:苏美尔文明

  2. 我从Joran Dirk Greef(TigerBeetle CEO)的演讲《1000x: The Power of an Interface for Performance》中发现了这一点,时间戳@38:10

  3. 演讲中还有其他精彩内容,比如这个这个

评论总结

评论内容主要围绕古代交易记录、文字起源、数据存储和考古发现展开,观点多样且涉及多个领域。以下是主要观点和论据的总结:

  1. 古代交易记录的普遍性与重要性

    • 评论5指出,最早的书写样本并非爱情信件或故事,而是收据,反映了其普遍性而非重要性。
    • 评论7补充,早期书写主要用于记录经济信息,如谷物分配,并逐渐发展为能够表达苏美尔语言的复杂系统。
  2. 数据存储与古代日期的处理

    • 评论4提到,SQLite可以存储任何古代时间戳,尽管日期库可能不支持。
    • 评论11讨论了博物馆中如何处理无具体日期的物品,通常使用“大约X年”的文本形式。
  3. 古代文字的耐久性与幸存者偏差

    • 评论6调侃古代记录的耐久性,称其“零停机时间”,但也指出这是幸存者偏差,因为大部分记录已被侵蚀或毁坏。
    • 评论8进一步强调,幸存者偏差使得我们只能看到保存完好的极少数样本。
  4. 古代文字与交易处理的关系

    • 评论10引用《交易处理》一书,指出苏美尔人发明文字是为了处理交易。
    • 评论12探讨了数值约束与区间树索引的关系,指出文本形式的区间树索引虽然不常见,但有其应用价值。
  5. 考古发现与文化遗产的归属

    • 评论14提出,随着古代DNA研究揭示人口更替的复杂性,关于文物归属的争议将加剧。
    • 评论9批评了在考古讨论中引入政治观点的做法,认为这会降低文章的可信度。

总结:评论从多个角度探讨了古代交易记录、文字起源、数据存储和考古发现的意义与挑战,既有对古代文化的深入分析,也有对现代技术应用的思考。