我正在寻找一种在工作场所扩展基础设施的方法。 目前只有一个数据库,大小约为1.5TB。 大多数查询都是OLTP类型,如insert,update,delete。
我正在考虑使用类似的东西来分割数据库 CitusDB,PostgresXL或MySQL结构,但我不知道哪一个,如果 这对我们来说是一个很好的解决方案。
这些查询是否是一个很好的解决方案?
答案 0 :(得分:2)
Citus可以轻松处理~1.5TB的数据,并且还可以运行插入,更新,删除查询。
有关详细信息,请查看文档: http://docs.citusdata.com/en/v5.2/performance/query_processing.html
Citus的数据提取率: http://docs.citusdata.com/en/v5.2/performance/scaling_data_ingestion.html
答案 1 :(得分:0)
我发现可扩展性在任何地方都过度工程化,所以让我快速提出一种无意义的方法:
什么是自然分片键?通常是customer_id。如果客户或多或少孤立(在他们的系统使用中),这将工作正常。为每个客户创建一个数据库并自动执行架构更改。您是否拥有适合所有客户的数据?设置另一个仅保存此数据的数据库实例。从每个应用程序服务器建立两个连接。
您(还)是否需要跨客户分析?每晚运行导出并离线处理。
可能不适用于所有人,但根据我的经验,它可以用于超过90%的业务应用程序。
哦..你选择的技术显然没关系,但我会选择开源/免费。
答案 2 :(得分:0)
ClustrixDB定期处理具有许多TB数据的高写入OLTP工作负载。它没有共享结构,是ACID,并且内置了容错功能,最近被MariaDB收购。
答案 3 :(得分:-1)
我们最近运行了一些基准测试来测量Postgres-XL的摄取率,我们可以使用16节点XL群集轻松计时达到9M行/秒或3TB /小时。有关详细信息blog.2ndquadrant.com/load-data-postgres-xl-9m-rows-sec/
,请参阅此博文