1742164261
2025-03-13 10:37:00
私たちは、新しいオープンソースの自己ホスト可能なサーバーレスプラットフォームであるリベットです。私たちは最近、sqlite-on-the-Serverと雑草に携わっています。 Githubの星をください、すぐにSQLiteについてもっと多くを共有します!
ありました 多くの議論 最近、サーバー上のSQLiteの長所と短所について。これらの会話の多くを読んだ後、私はサーバーオンザサーバーの力に関する私の視点は、一般的な意見から偏っていることに気付きました。
大規模なSQLiteの利点に関する私の視点に飛び込む前に、マイクロスケールアプリのSqlite-on-serverの背景を理解することは役立ちます。

ほとんどの開発者は、サーバー側のSQLiteを小規模アプリケーションのシンプルで費用対効果の高い選択肢と考えています。それはしばしば次のことを評価しています:
これらの特性により、SQLiteは個人プロジェクト、軽量アプリケーション、およびプロトタイプにとって魅力的なオプションです。
のようなツール Litefs、 ライトストリーム、 rqlite、 dqlite、 そして 岩盤 マイクロスケールの展開の複製と高可用性でSQLiteを強化します。
ただし、この投稿には焦点が当てられています CloudFlare耐久性のあるオブジェクト そして トーチ 大規模なSQLiteの頻繁に見過ごされている利点を強調します。

高スケールシステムでは、企業は頻繁にデータベースのスケーリングに苦労しています ポストグレス または mysql。代わりに、彼らはしばしばなどのシャードされたデータベースに頼ります カサンドラ、 scylladb、 dynamodb、 スピーディ (Sharded mysql)、および 他の (シャードされたポストグレス)。
これらのシステムは、パーティションキーを使用して、関連するデータと同様に構造化されたデータを共同配置します。たとえば、Cassandraの典型的なチャットアプリケーションは次のように定義する場合があります。
CREATE TABLE chat_channel (
-- Partition Key: Groups all messages for a single chat in the same partition
channel_id UUID,
-- Clustering Key: Orders messages within the chat (think ORDER BY)
sent_at TIMESTAMP,
message_id UUID,
-- Row data
message TEXT,
PRIMARY KEY (channel_id, sent_at, message_id)
) WITH CLUSTERING ORDER BY (sent_at ASC, message_id ASC);
このパーティションからメッセージを照会するには、次のことを書くことができます。
SELECT * FROM user_chat WHERE channel_id = ? ORDER BY sent_at ASC, message_id ASC;
