AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 339806
Accepted
thewolf
thewolf
Asked: 2024-05-26 21:27:54 +0800 CST2024-05-26 21:27:54 +0800 CST 2024-05-26 21:27:54 +0800 CST

我需要从 sqlite 迁移到分布式设置。我有什么选择?

  • 772

我有一个 sqlite db,它已经增长到 30gb,而且我每天仍在向它推送数据。我有几个服务使用 libsqlite3 向它写入数据。很快它就会变得太大而无法在本地保存。对我来说,迁移到分布式设置的最佳方法是什么?我能想到的一种方法是 sshfs,但如果我的机器处于离线状态,它将不起作用。一个解决方案是将我最近使用的数据库部分缓存在本地,并将其余部分保存在其他地方,这将是完美的。大多数时候,我会使用最近推送的数据。我可以开始存档多年前的数据,但访问它需要手动操作。

sqlite
  • 1 1 个回答
  • 50 Views

1 个回答

  • Voted
  1. Best Answer
    White Owl
    2024-06-03T22:33:52+08:002024-06-03T22:33:52+08:00

    如果我正确理解了您的环境,那么最好的方法是进行“基于时间戳”的分区。将当前业务对象保留在数据库的操作副本中,将历史业务对象移动到存档数据库。设置从当前数据库到存档数据库的单向 ETL。

    首先将整个数据库复制到具有大量存储空间的桌面。然后你有两种相互竞争的方法,选择看起来更简单的方法:

    • 创建具有相同表结构的辅助数据库。将其附加到您的大数据库(https://sqlite.org/lang_attach.html),并将当前业务对象复制到其中。
    • 复制大数据库,从中删除历史业务对象,执行清理(https://sqlite.org/lang_vacuum.html)。

    现在您有了一个存档和工作数据库。将工作数据库复制到您的工作平台。然后考虑 ETL。

    有一个不错的 ETL for sqlite 作为扩展:https://sqlite.org/sessionintro.html它允许您轻松创建批处理,其中包含工作数据库中的所有新更改,这些更改将在存档数据库中重复。但缺点是 - 您需要更新客户端应用程序才能启用和使用该扩展。

    另一种方法是制作一个单独的应用程序。它会扫描工作数据库中的过期业务对象,将它们提取到某个传输文件(通常是 json)中,从工作数据库中删除这些对象并对其进行清理。然后,您必须将传输文件移动到存档端并将它们加载到存档数据库中。这不是一个容易的解决方案,但它可靠、易于客户理解,并且即使您由于某种原因无法修改客户端应用程序也可以实现。

    • 1

相关问题

  • 在 SQLite 上写入一行需要多少次磁盘寻道?

  • SQLite 是否有可用于数据复制的免费软件?[关闭]

  • 在客户端应用程序上使用 CoreData

  • SQLite 的限制

  • 是否可以将 SQLite 用作客户端-服务器数据库?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve