hibernate和postgresql的数据库空间配额,限制每个用户使用的数据库MB

hibernate和postgresql的数据库空间配额,限制每个用户使用的数据库MB,hibernate,postgresql,limit,quota,megabyte,Hibernate,Postgresql,Limit,Quota,Megabyte,祝大家白天/晚上好 在我们的大学项目中,我们有一个由hibernate(使用postgresql)创建的数据库,它有17个表(obejct)。我们需要限制发布4个对象,即学生评论、学生附件、学生草稿、学生fotos 将学生发表的评论数量限制为每个学生1000条,并且其在数据库中的大小不应超过40MB 将每个学生的student_附件最大限制为120 MB,即学生可以发布任意数量的附件,但其组合大小不应超过120 MB的空间 与student_attachments对象相同的限制,但其合并大小应限

祝大家白天/晚上好

在我们的大学项目中,我们有一个由hibernate(使用postgresql)创建的数据库,它有17个表(obejct)。我们需要限制发布4个对象,即学生评论、学生附件、学生草稿、学生fotos

  • 将学生发表的评论数量限制为每个学生1000条,并且其在数据库中的大小不应超过40MB

  • 将每个学生的student_附件最大限制为120 MB,即学生可以发布任意数量的附件,但其组合大小不应超过120 MB的空间

  • 与student_attachments对象相同的限制,但其合并大小应限制为80 MB

  • 同样的限制是每个学生50 MB

  • 如果达到此限制之一,我们将通知学生帐户,他已达到限制,无法再上传附件或图片

    学生注释存储为

    @Lob
    public String comment;
    
    private byte[] data;
    
    附件、fotos和草稿存储为

    @Lob
    public String comment;
    
    private byte[] data;
    
    不幸的是,我的教授说,他可能希望在将来更改限制,因此我们需要以一种方式对这些限制进行编码,以便以后可以轻松更改,即增加限制

    这个问题解决的是使用的最佳实践,即使用hibernate和postgresql解决问题的最佳方案是什么?我怀疑这只能在文件系统级别上完成,而不能在postgresql上完成,但如果postgres可以实现这一目标,请告诉我应该搜索什么关键字

    问候,


    K

    查看文件系统无法回答这个问题,必须编写SQL查询

    通过函数可以获得
    bytea
    字段的字节大小

    如果hibernate使用大型对象(通过
    oid
    类型引用)作为二进制内容,则需要使用中建议的自定义
    lou size(oid)
    函数

    有了正确的函数,您就可以聚合大小来计算各种内容类型的每名学生使用量


    此外,如果您需要在插入时强制执行配额,则应在事件之前触发的函数中计算配额,以便在达到超出配额限制时取消操作。

    您好,Daniel,感谢您的反馈。我真的很高兴我得到了一些答案。当我说文件系统解决方案时,我的意思基本上是两个想法。1) 将所有附件单独存储在文件系统上的数据库之外。2) 为每个用户创建数据库,并通过该用户的文件系统应用配额。请参考您答案的最后部分,即配额。在这种情况下,我为什么需要配额。i、 e.为什么它们会像您在“插入时的配额”中所描述的那样有用?我从这个问题中得出结论,数据库模式已经设置好了,因为您提到了17个表,包括
    学生附件
    。如果是这样的话,那么在数据库中存储附件而不是文件系统的决定已经做出了。@Tito:至于为什么需要配额,配额是大小限制的同义词,所以这就是整个问题的目标。