将表数据作为blob存储在不同表中的列中(Oracle)

时间:2014-11-22 12:44:45

标签: oracle database-design plsql blob

要求:我们有大约500个表,每个表中大约有10k行是感兴趣的。我们希望将这些数据作为blob存储在表中。导出到文件时的所有数据都是250 MB。现在一个选项是将这个250 MB的文件存储在blob中(Oracle允许4 GB)或将每个表数据作为blob存储在blob列中,即每个表都有一行,blob列将具有该表数据。

现在关于性能,哪个选项在性能方面更好。此外,还需要获取此数据并将其插入数据库。

基本上,这将交付给客户,我们的实用程序将从blob读取数据并将其插入到数据库中。

问题:

1)如何在blob列中将表数据作为blob插入 2)如何从该blob列中读取然后准备插入语句 3)我们可以通过压缩包含blob数据的表来获得任何好处。如果是,那么阅读如何解压缩。
4)这种方法是否也适用于MSSQL和DB2 设计具有blob的表时有哪些其他注意事项 请建议

2 个答案:

答案 0 :(得分:1)

我觉得你想要从结构化内容转到非结构化内容。 我希望你知道你在做什么,但我没有那种印象来阅读你的问题。
去BLOB你会失去值之间的关系/约束。 读取一个数据块可能会更快,但是当您需要编写较小的更改时,您可能需要在大BLOB的情况下编写更大的“块”。

要在数据库中插入BLOB,您可以使用任何可用的API(OCI,JDBC。如果仅在服务器端访问它,甚至是pl / sql)。

对于压缩,您可以使用BLOB选项。此外,您可以使用某些库DIY(如果您需要考虑其他RDBMS类型)。

答案 1 :(得分:1)

为什么要将表存储到BLOB中?对于存档或转移,您可以使用exp或perferablel expdp导出表格。这些文件可以压缩,传输或存储为另一个Oracle数据库中的BLOB。

最大。据我记得,在Oracle发布9版本之前,LOB的大小为4 GB。今天的限制是8 TB到128 TB,具体取决于您的DB-Block Size。