我有两个数据库,一个在伦敦,一个在都柏林。如何在云数据库中全面查看数据?假设数据库结构允许我使用多个位置,这样就不会发生冲突。
编辑:数据库中的所有更改都在本地完成。例如:假设我在都柏林有一个传感器,它将数据转储到Dublin数据库,另一个传感器在伦敦,它将收集的数据转储到伦敦数据库中。如何在云数据库中获取此数据的联合视图?从管理界面我想查询云数据库,而不是其他数据库。
答案 0 :(得分:2)
您可以在“云”数据库中定义FEDERATED
表:这些表上的任何查询都将通过MySQL客户端协议从“云”服务器传输到相关的伦敦/都柏林服务器(请注意,数据是不已复制到“云”服务器,因此它不提供任何形式的备份服务):
CREATE SERVER london FOREIGN DATA WRAPPER mysql OPTIONS (
HOST 'london.mysql.example.com',
PORT 9306,
USER 'cloud_db_user',
PASSWORD '...',
DATABASE 'my_database'
);
CREATE SERVER dublin FOREIGN DATA WRAPPER mysql OPTIONS (
HOST 'dublin.mysql.example.com',
PORT 9306,
USER 'cloud_db_user',
PASSWORD '...',
DATABASE 'my_database'
);
CREATE TABLE london_table (
-- table definition as normal
)
ENGINE=FEDERATED
CONNECTION='london/original_table';
CREATE TABLE dublin_table (
-- table definition as normal
)
ENGINE=FEDERATED
CONNECTION='dublin/original_table';
然后,您可以定义VIEW
,其中包含UNION
个联合表。但遗憾的是,UNION
视图既不可插入也不可更新 - 因此,如果您需要对基础(联合)表上必须操作的数据进行任何更改:
CREATE VIEW combined AS
SELECT * FROM london_table
UNION ALL
SELECT * FROM dublin_table;
答案 1 :(得分:2)
您可以在云服务器中设置MariaDB,并将LONDON和DUBLIN服务器作为主服务器。 MariaDB中提供了多主复制。我假设主人有不同的数据库名称。
答案 2 :(得分:2)
Presto 在这里也很有用。
您可以在云计算机上部署presto,使用mysql连接器连接到不同的地理数据库,创建不同的目录模式。
编写查询以合并两个数据库的结果。类似的东西:
select * from dublin.A
union all
select * from london.A
答案 3 :(得分:2)
为每个数据库位置提供两个Web服务。 Web服务以定期间隔查询各个数据库并将数据插入云数据库。