这被视为“数据库作为IPC”反模式吗?

时间:2012-01-16 17:19:23

标签: java design-patterns database-design anti-patterns

我开始开发一个由两部分组成的应用程序。整个系统充当数字标牌应用程序。一切都在一台物理机器上。

第一个组件是内容管理的管理后端。用户可以安排和上传多媒体文件。这是基于网络的东西,可通过浏览器获得。

第二部分是媒体播放器。它的任务基本上是加载人们上传并显示的数据。这些数据库的元数据保存在数据库中(例如显示此图片需要多长时间,接下来会发生什么......)以及文件系统中的物理数据,因为它们都在同一台机器上。

所有相关数据都存储在PostgreSQL数据库中。有基本的日程安排信息+文件系统内容路径 - 而不是它们的二进制形式。

这两者之间通过本地循环有一个套接字连接。有一些非常简单的通信和命令解析(状态检查,退出,刷新内容)。如果用户上传并安排新内容或通过基于Web的后端更改当前内容 - 通过套接字的消息将发送到媒体播放器,告诉他建立新的时间表。

但是,只要播放器收到检查新内容的消息,它就会从数据库加载调度数据。

我想知道这是否被视为IPC反模式的数据库?如果是,那么解决它的方法会更好?

1 个答案:

答案 0 :(得分:3)

听起来对我来说根本不是这样。调度数据是持久性的,不是吗?时间表可以重复,持续很长时间?从数据库中获取它们很好。

如果您通过在数据库中插入say,“exit”-row并且媒体播放器决定何时通过查询该表并检查“退出消息”来发送“消息”,则“数据库为IPC”它每15秒或者其他什么。

Process A插入数据,然后向Process B发送一条消息,说明“我创建了您可能感兴趣的新数据”,只要您创建的数据实际上是属于数据库的持久数据,就没有错。如果您在数据库中放入的内容实际上不是持久性数据而您刚刚使用的是暂时的中间步骤,那么这只是一个问题。