Centrale和本地数据库管理

时间:2015-03-17 13:08:55

标签: java oracle

我需要创建一个Web应用程序,它将在许多商店中运行,并且每个商店中的每个操作(添加,修改,删除...)都需要在中央数据库中更新,以使商店的主办公室能够总是看看每家商店的更新信息...... 请注意我使用oracle db和java作为服务器端。 这样做的适当方法是什么? 应该通过数据库配置来完成? 或者它的服务器引擎将更新商店和中央数据库?

1 个答案:

答案 0 :(得分:0)

您可以采取许多方法使其发挥作用。据我所知,每个商店都有一个本地数据库,用于存储该特定商店的库存。所有这些信息也将汇总在位于主办公室或中央仓库的中央数据库中。而且你需要编写一个库存管理工具。如果这是您所需要的,那么您可以用来使其工作的架构之一可能如下所示。

中央数据库有StoresProducts个表,其中Products表具有以下结构:

  

产品(ID,名称,类别,价格,store_id,...)

store_id是引用id表的Stores列的外键。这将使您能够聚合一个表中所有商店的数据。然后,在库存管理应用程序的GUI中,您只需按商店为每个商店过滤商店产品。

要同步本地和中央数据库,请在本地数据库中创建实例化视图。根据{{​​3}},

  

物化视图是单个目标母版的副本   时间点。主设备可以是主设备的主表   物化视图站点上的站点或主物化视图。

物化视图通常用于数据复制目的,因为与普通视图相比,它在本地数据库中创建数据的副本。默认情况下,视图在创建后不会刷新,因此您必须编写作业以使用中央数据库中的新值更新它(例如,当中央库存更改时)。但物化视图也支持自动刷新。

物化视图V_Products创建如下

  

创建物化视图V_Products AS select * from   user.products@maindb WHERE store_id =?

其中?表示相应的store_id(对应于您创建视图的商店的ID),maindb是中央数据库和用户的SID。有关更多信息,请参阅official documentation和CREATE MATERIALIZED VIEW materialized views的官方文档。

可以使用代表

statement将本地数据库连接到中央数据库
  

允许客户端的两个物理数据库服务器之间的连接   将它们作为一个逻辑数据库访问。

您还应该考虑通过Products对中央数据库中的store_id表进行分区,以提高选择的性能 - 除此之外,它还可以更快地将数据从中央数据库同步到本地数据库。 / p>