14 Replies Latest reply: May 11, 2016 6:22 PM by Andrew Feltmate Branched from an earlier discussion. RSS

    Multi-Tenancy in QlikSense

    Paul Scotchford

      Hi Mike

       

      I'm probably not using best practice connecting from this post, just wondering how or if

      anyone has implemented Multi Tenancy in QlikSense ?

       

      By this I mean data from many external companies loading data to our Data Warehouse (Multi Tenanted)

      and then that data is loaded to QlikSense model that is within a pre-developed app that any of these

      companies can access (extranet) but of course only see their data for their visualisations.

       

      Is this best achieved via Section Access in QlikSense ? Any whitepapers out there ?

       

      Thanks in advance

       

      Regards

       

      Paul

        • Re: Section Access in Qliksense
          Michael Tarallo

          Hi Paul, no worries  - I will branch this conversation for more members to see as well as ping a few of my colleagues to see if they can assist.

           

          Regards,

          Mike Tarallo

          Qlik

          • Re: Multi-Tenancy in QlikSense
            Michael Tarallo

            Hi Paul,

             

            There are a few ways to go about this. Section Access is used to control column and row level security based on the data loaded into the app. So it would seem that all tenant_id's and associated data would needed to be loaded into the app, and then section access would control what is visible by the tenant. One would think you would need to LOAD ALL the data into the app and then carve it up, and that may not be efficient. Having tenant specific apps may be better, or creating tenant specific data stores (.qvd files - in-memory representation of the Qlik associative data model on disk) to quickly load those apps might also be an option. By nature - I am not a Qlik consultant, so this conversation may be best handled by one of my colleagues - Jeff / John - ( jog / jpe )  any thoughts on this or on how to best get Paul this information?

             

            Please mark the appropriate replies as CORRECT / HELPFUL so our team and other members know that your question(s) has been answered to your satisfaction.

             

            Regards,

            Mike Tarallo

            Qlik

            • Re: Multi-Tenancy in QlikSense
              Jeffrey Goldberg

              Hi Paul,

               

              Like multi-tenancy, the response to this question has many layers and many different strategies one can employ in an implementation.

               

              Let's start with the method you mentioned first:

              Load all data into an app and use Section Access to manage access to the correct rows and columns.

              Yes, you can load all of the data from your data warehouse into a Qlik application and then use Section Access to manage row level reduction when different tenants enter to see only the data they are supposed to.  The upside is this method is relatively straightforward to implement.  The downside is that when a user enters the app, their session RAM footprint remains representative of the entire dataset, and the reduction takes place after the user session is created.  Consequently, more RAM is utilized per session on data the user will never see because Section Access reduces it.  I am not a proponent of this method in multi-tenant deployments.

               

              Create a template of the application.  For each tenant, host a copy of the application with their specific data.  Use Section Access to control data access at the user level if required.

              This is the method I used when I worked for an OEM partner with QlikView.  The concept is similar with Qlik Sense, and greater automation opportunities exist with Qlik Sense because of the Qlik Sense Repository Service API (QRS).  In this approach, for each tenant you duplicate the app, create a stream for the app applying security rules to allow only the specific tenant entry to their stream.  This capability can be accomplished with ONE security rule assigned to evaluate a user attribute representing the tenantID.  In addition, create a task for reload and any other subsequent tenant/app specific requirements.

               

              As for the data model, using variables it's possible to control where data is loaded from and what tenant data is loaded into the application.

               

              From a deployment and performance perspective, I prefer this method because it segregates tenant data at the application level, therefore, the overall RAM footprint for each app is less and subsequent user session RAM footprint is smaller because users have a representation of the dataset for their tenant.

               

              There are most certainly more ways to approach this topic, however, what you want to consider is balancing what the user gets relative to what the user needs against what/how you want to build the infrastructure to support it.

               

              I hope this is helpful.

               

              Please mark the appropriate replies as CORRECT / HELPFUL so our team and other members know that your question(s) has been answered to your satisfaction.


              Cheers,


              Jeff G

              • Re: Multi-Tenancy in QlikSense

                Hi Paul,

                 

                Did you choose the Qlik multi-app solution?  Would you share your experiences?

                 

                I'm also exploring how to handle multi-tenancy, and would love to see what others thought.  Thanks! 

                  • Re: Multi-Tenancy in QlikSense
                    Paul Scotchford

                    At this point we will be providing a multi app solution, everything is still in development, but in summary...

                     

                    QlikSense 2.0 server

                     

                    QVD generators to load all data for all tenancies into single QVD's e.g. all SALES into 1 QVD

                     

                    QVD generators to regionalise into QVD's per tenancy e.g. SALES for company 'A','B' etc.

                     

                    Apps will be based on a subject matter template e.g. Sales Analysis App that is tailored for Client 'A' e.g. loader to hit the clients own QVD set.

                     

                    App is integrated to a data governance solution I have created so that we have a common repository for

                    calculation expressions commonly used over all apps (as well as client specific app calcs) , this resides on

                    a database vendor product.

                     

                    Portal setup so that Clients can log in to their apps (a little like QlikCloud perhaps)

                     

                    This is just a précis of what is being created, when this has been implemented I will post a paper on the

                    architecture used, probably later in the year.

                     

                    If you (anyone) would like the specification for data governance part just let me know and I will convert it to a generic version that is usable anywhere (QlikView or QlikSense).

                     

                    cheers

                    Paul