zoukankan      html  css  js  c++  java
  • [saiku] saiku-添加数据源以及保证数据源的一致性

    采用任何一种添加数据源的方式都不能保证数据源的一致和完整,所以需要两种结合来管理数据源

    1、通过saiku的管理台添加数据源

      ① 第一种方式:schema和ds都在管理台添加
    
            1)上传schema文件
            选择文件系统中任意位置的schema文件
            任意填写schema名字 - sw.mondrian
            点击上传按钮
            上传成功
            
            2)配置数据源
            type=OLAP
            name=SteelWheels
            driver=mondrian.olap4j.MondrianOlap4jDriver
            location=jdbc:mondrian:Jdbc=jdbc:mysql://localhost:3306/SteelWheels;Catalog=mondrain:///datasources/sw.mondrian.xml;JdbcDrivers=com.mysql.jdbc.Driver;
            username=root
            password=root
    
            注意:Catalog=mondrain:///datasources/sw.mondrian.xml;
            
        ② 第二种方式:在管理台只添加ds
    
            1)将schema文件SteelWheels.mondrian.xml添加到classes/saiku-schemas文件夹下
            
            2)配置数据源
            
            type=OLAP
            name=SteelWheels
            driver=mondrian.olap4j.MondrianOlap4jDriver
            location=jdbc:mondrian:Jdbc=jdbc:mysql://localhost:3306/SteelWheels;Catalog=res:saiku-schemas/SteelWheels.mondrian.xml;JdbcDrivers=com.mysql.jdbc.Driver;
            username=root
            password=root
            
            注意:Catalog=res:saiku-schemas/SteelWheels.mondrian.xml;
    1)说明:
    
    通过这种方式添加的数据源在项目重新启动之后仍然生效
    
    2)原因:
    
    系统第一次部署启动后会在classes/saiku-repository/data文件夹下面生成JCR文件夹结构和相关文件
    此时系统里没有任何的OLAP数据源
    当我们在管理台创建了OLAP数据源以后,JCR会新增相应的OLAP数据源节点
    所以只要classes/saiku-repository/data文件夹下面的文件存在
    重启并不会删除这些JCR文件
    因此数据源配置就不会失效
    
    3)但是:
    
    一旦我们删除了原来的整个项目,重新部署(JCR相关文件没有了)
    或者只是简单的删除了classes/saiku-repository/data文件夹下面的所有文件
    这时候,以前在管理台添加过的OLAP数据源就不存在了
    
    4)结论:
    管理台添加的OLAP数据源重启系统不会失效,重新部署系统失效
    
    5) 解决:
    
    通过代码加载OLAP数据源

    2、通过代码加载OLAP数据源

    思路:
    
    将所有schema文件放在saiku-schemas文件夹下面
    所有OLAP数据源配置文件放在saiku-datasources文件夹下面
    然后在系统初始化的时候解析saiku-datasources文件夹下面的配置文件生成saikuDS对象
    获取系统JCR中存在的DSList
    判断DSList中是否已经存在新建的saikuDS对象
    如果不存在 就执行新增数据源的操作 存在就什么也不操作
    
    当系统
        
        1)第一次部署/重部署/JCR文件结构不存在的时候,DSList必然为空
          所有的saikuDS都会新增成为OLAP数据源加入到JCR结构中
        
        2)当重启动系统时,JCR文件存在,DSList和saikuDS比对
          如果此时saiku-datasources文件夹下面的OLAP配置文件没变化,不做任何操作
          如果新增了OLAP配置文件,则添加新的数据源到JCR结构中
    
    
    这样就完美的解决了重部署失效的问题
    但是:如果用户从管理台新建一个OLAP数据源,这个新建的DS在重新部署后也会失效的
    
    解决:
    用户在管理台新建OLAP数据源的时候
    不仅要添加在JCR结构中
    还要在代码的最后一步将配置信息生成olap配置txt文件保存在saiku-datasources文件夹下面
    这样一来就能保证数据源的一致性了
  • 相关阅读:
    Moya 浅析
    Swift: Alamofire -> http请求 & ObjectMapper -> 解析JSON
    ReactiveCocoa 用法实例
    RACSignal的Subscription深入
    idea 不能编译生成class文件
    idea 右下角不显示git分支
    SSO单点登录的研究
    JVM内存模型简介
    Spring事务处理
    RabbitMQ
  • 原文地址:https://www.cnblogs.com/avivaye/p/4898627.html
Copyright © 2011-2022 走看看