我需要创建一个Web应用程序,它将在许多商店中运行,并且每个商店中的每个操作(添加,修改,删除...)都需要在中央数据库中更新,以使商店的主办公室能够总是看看每家商店的更新信息...... 请注意我使用oracle db和java作为服务器端。 这样做的适当方法是什么? 应该通过数据库配置来完成? 或者它的服务器引擎将更新商店和中央数据库?
答案 0 :(得分:0)
您可以采取许多方法使其发挥作用。据我所知,每个商店都有一个本地数据库,用于存储该特定商店的库存。所有这些信息也将汇总在位于主办公室或中央仓库的中央数据库中。而且你需要编写一个库存管理工具。如果这是您所需要的,那么您可以用来使其工作的架构之一可能如下所示。
中央数据库有Stores
和Products
个表,其中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>