【发布时间】:2011-08-30 14:00:43
【问题描述】:
能否请一些人提出最好的实现方式:
基本上我想要的是 PostgreSQL 中的一个虚拟表,当被查询时,它会从其他表中查找数据(称之为原始数据表)。但问题是,原始数据表中的数据需要转换,转换完成后,返回的结果就像在原始表中一样。
我会用插图和一个例子来解释(不是我的真实程序,只是一个简化的例子来解释我需要的主要内容):
原始数据表
| id (int) | data (byte[]) |
----------------------------
| ... | ... |
| ... | ... |
人员表(虚拟表)
| name (varchar) | address (varchar) | phone (varchar) |
--------------------------------------------------------
| ... | ... | ... |
| ... | ... | ... |
| ... | ... | ... |
我现在想要的是,当我做这样的事情时:
SELECT * FROM person WHERE name = 'Kim';
- 应查询原始表中的数据,即获取所有 byte[] 数组;
- 反序列化数据以从原始数据中获取(姓名、地址、电话);
- 应用任何条件,即 name = 'Kim'
- 将这组结果返回给用户,就像他们只是简单地查询了 Person 表一样。
对于反序列化/转换等,我猜我可能需要一些编程语言功能,所以对于 Java,Pl/Java 之类的东西可能有用吗?
此外,您可以假设原始数据表不会很长,它被实现为充当固定大小的缓冲区,因此读取每个查询的所有条目并不是什么大问题。
从概念上讲,我需要的是一个触发器功能,但似乎我们不能在 READ 上设置触发器。任何有关如何解决此问题的帮助将不胜感激。
【问题讨论】:
标签: java postgresql views pljava