[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文件夹下面
这样一来就能保证数据源的一致性了

 

posted @ 2015-10-21 18:23  Aviva_ye  阅读(1300)  评论(0编辑  收藏  举报