Hi,
This is a kind of solution design issue.
Scenario: We have a web page that displays information from a Oracle data warehouse. We collect the required information in the page and have used AMO to create cubes and other related objects from this information. The source for the cubes in SSAS 2005 would point to Oracle. This is modelled as a web service and used within the web page. Once the Cube gets created in SSAS, we model ProClarity graphs on them.
The problem: The users can invoke the AMO web service from the web page, to add a new MeasureGroup to an existing cube. Once this is done the Cube becomes non-browsable. because we are adding a new MeasureGroup and thus modifying the cube metadata.
In detail, If the new MeasureGroup that is added, uses dimensions that are already cube-dimensions then- only the newly added MeasureGroup will be UnProcessed and the exsiting MeasureGroups will be processed. (cube is UnProcessed state).
otherwise, if the new MeasureGroup that is added, adds a new cube-dimension to the cube then- all the MeasureGroups will be in the UnProcessed state including the newly added MeasureGroup.
Now, until the user invokes a 'process' request, for the cube that is modified and the processing is complete, that paticular cube is not accesible. All the Proclarity graphs that are linked to that cube, show error messages!
How can we keep the Proclarity graphs / users pointed to a old copy of the cube, at least until the newly modified cube is processed and online?
If not, are there any other approaches to get high availability for the cubes or for the ProClarity Graphs?
Can we create a offline cube that can be used temporarily? if so how to dynamically switch between the offline cube and the online cube?
Regards
If you do all the AMO operations including creating and processing the cube within transaction, then the previous version of the cube will be available until transaction commits. After transaction commited, the new version of the cube will be immediatelly avaiable.|||Hi Mosha,
Thanks for the tip.
Since this operation is used in a J2EE web site using a AMO web service.
If I include the processing task with it then it would take a huge time for large cubes.
Currently we are using the 'Ascmd' to do the processing. This is scheduled using a scheduler.
We planned to somehow call Ascmd Asynchronously from the web page and intimate users using an email after the processing completes.
can we include the processing also in the previous transaction while using Ascmd?
Apart from this, any other mechanism that we can use like Raid/mirroring, Failover clustering. etc?
Or temporary local cubes?
:-) Just a wild shot: Probably the next version of SSAS needs to include something similary "shadow-copy-cube".
Thanks and Regards
|||Just a wild shot: Probably the next version of SSAS needs to include something similary "shadow-copy-cube".
No need to wait for the next version. SSAS2005 already supports Sync functionality, where you can build and process cube on one server and then sync it to another server.
|||You might consider using AS 2005's "synchronize database" capability. This would require (I think) two servers. The first would be the "modify and process" server (call it ServerA) while the second would be the "presentation" server (call it ServerB).
In your application, you would have the users always browsing the cube(s) on ServerB. As they make changes to the design of the cube (adding measure groups, cube dimensions, etc.), you'd direct those changes to the cube(s) on ServerA. You could then asynchronously use ascmd to reprocess part or all of a modified cube on ServerA (while they continue to use the cube on ServerB). Once the processing is complete, you could execute an XMLA script on ServerB, requesting that the database on ServerB be sychronized from ServerA. The nice thing about this is that the synchronization occurs within a transaction, so the cube on ServerB is still usable while the sychronization occurs and the updated version of the cube is then available to users immediately once it is complete.
Take a look at the following link in BOL for the XMLA element for the synchronize command:
ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/xmla9/html/9401323c-feff-409a-a9da-94aee47e0563.htm
HTH,
Dave Fackler
|||Hi,
Wow!
Thanks a lot for that.
I am going to implement the "Sync Database", This will solve my problem!
although I would take some time to complete this , I will let you know when I start.
Regards
No comments:
Post a Comment