V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
abucus
V2EX  ›  问与答

新手提问: Database View 到底有什么用

  •  
  •   abucus · 2021-08-20 23:01:36 +08:00 · 1882 次点击
    这是一个创建于 1196 天前的主题,其中的信息可能已经有所发展或是发生改变。

    数据库菜鸟,看了一些 database view 的介绍,比如Database views, When to use database views and when not?,感觉还是云里雾里, 所以这个 view 的存在只是出于安全因素,和修改方便吗?

    另外想问下 view 的数据是会缓存下来吗,访问速度和 table 有差别吗?

    8 条回复    2021-08-22 09:36:15 +08:00
    levelworm
        1
    levelworm  
       2021-08-20 23:21:49 +08:00 via Android
    每个数据库不一样。我的感觉是 view 的作用就是在不破坏表结构的情况下给用户最大的方便。比如说 Vertica 里头做好数仓,但是用户实际上需要更大的宽表,于是用个 view 代替。

    能不能 materialize 要看数据库了,Vertica 我记得是没有的,postgresql 好像两种都有不过我很可能记错了。
    liprais
        2
    liprais  
       2021-08-20 23:27:26 +08:00
    再看看再想想
    512357301
        3
    512357301  
       2021-08-20 23:54:24 +08:00 via Android
    访问速度理论上没差异,mysql 不缓存,所以等于每次都是执行一段固定的 SQL,好处的话可以只给某个用户展示某个表的其中一部分,也就是你说的安全问题
    简单来说,没那么复杂,就是有分权限展示的需求了,才有了视图功能,普通的后端开发理论上用不到这个功能,因为他们可以通过代码限制数据的查询范围,视图反倒多此一举。
    复杂来说,视图对外展示就好像一个表一样,查询语句不用做特殊处理,权限划分可以做的很细,dba 只需要会 SQL 就能做好权限把控,不用学习其他后端代码
    abucus
        4
    abucus  
    OP
       2021-08-21 02:36:46 +08:00
    @levelworm @512357301 谢谢解惑,感觉 View 就像给用户提供一个访问的快捷方式,本质上和 query 没有太大区别,只是因为加了一层所以加了灵活性(比如定制,权限展示)。我自己也是感觉好像如果只是开发者自用,好像没有必要上这个。
    msg7086
        5
    msg7086  
       2021-08-21 04:51:41 +08:00
    普通的视图可以隐藏查询的复杂细节。
    比如你视图代码非常复杂,但是一旦建好了视图,其他人从视图里读取或者筛选数据时就非常简单了。
    然后还有物化视图,不仅仅是查询,还相当于建了一个双向映射自带存储的「表」。你可以直接在物化视图上写入数据,写入的数据会回写到原始表里。这个我很久很久以前做毕设的时候看过个大概,是个普通人不会用到的功能。

    原本,视图、存储过程、触发器,这三大件做普通互联网开发的程序员就很少会用到。我觉得传统的系统软件开发(比如银行,大学,电信等)更容易用到这三大件。
    ruxuan1306
        6
    ruxuan1306  
       2021-08-21 10:30:54 +08:00
    c#中的 getter
    vue 中的计算属性
    raaaaaar
        7
    raaaaaar  
       2021-08-21 19:24:19 +08:00 via Android
    教科书倒是说了几个功能,不过现实还没怎么用过
    zxCoder
        8
    zxCoder  
       2021-08-22 09:36:15 +08:00
    比较老的开发可能会用到,就像 ls 的 ls 的 ls 说的视图、存储过程、触发器这三大件,反正我基本没用过,只存活在我的课本里
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1260 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:13 · PVG 02:13 · LAX 10:13 · JFK 13:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.