Hi,

AFAIK, JDBC interpreter support per user session of several users' account.
Why don't you use several user accounts for it?

On Wed, Dec 20, 2017 at 9:37 PM, Belousov Maksim Eduardovich <
m.belou...@tinkoff.ru> wrote:

> Hello, dev!
>
> I believe it's common case when analyst works with data and wants to
> create temporal intermediate tables.
> In zeppelin the analyst can clone note, make small changes in one note and
> schedule these two notes simultaneously.
> Therefore it would be cool that temporal tables will be isolated from any
> analysts and from other sessions of this analyst.
>
> In our company Zeppelin queries data in Greenplum Database [1].
>
> We made session isolation in Greenplum by this way:
> 1. The interpreter "%greenplum" use login `zeppelin` to query data.
> 2. User `zeppelin` in database can't create or drop any schema, but
> `zeppelin` can call function `init_zeppelin_schema`.
> 3. The function `init_zeppelin_schema` have two arguments: user_nm and
> note_id.
> The function checks if schema "zeppelin_{user_nm}_{note_id}" exists and if
> not than create it.
> The trick of security bypass is possible due statement `SECURITY DEFINER`
> in the function [2].
> 4. Next step is assigning temporal schema to default by the query:
> 'set search_path TO zeppelin_{user_nm}_{note_id};'
> 5. After that analyst can write in the paragraph "create table super_tbl
> as ....; select * from super_tbl;", that is table without schema.
> And table will be created in temporal schema.
> 6. The system process drops all "zeppelin%" schemas in the Greenplum every
> night.
>
> This approach give us the full isolation of temporal object in DB.
> Analysts run note and are safe about the collision in reading/writing in
> the same temporal tables.
> If analysts team is five people than they have high skills and one can
> learn them to run `init_zeppelin_schema` in each paragraph/note.
> If analysts team is about fifty people it's hard to learn and control
> running `init_zeppelin_schema`.
> Therefore we made isolation on the backend: temporal schema is called from
> JDBC interpreter. Our users just run business queries and don't know about
> `init_zeppelin_schema`.
>
> It seems these is no way to make such isolation only Zeppelin side, it's
> need to "integrate" Zeppelin and DB.
>
> Is this backend session isolation concept is mature for the next Zeppelin
> release?
> Current master branch doesn't allow to make isolation. If your team want
> for this feature please answer "+1".
>
> I feel the use of JDBC interpreter could be wider.
> The users must wait for several minutes for metadata query before their
> query start in current stable release 0.7.3. [3-4].
> Therefore many users are just on the way to using JDBC interpreter.
>
>
> 1. http://greenplum.org/
> 2. http://gpdb.docs.pivotal.io/43180/ref_guide/sql_commands/
> CREATE_FUNCTION.html
> 3. https://stackoverflow.com/questions/47722083/apache-
> zeppelin-0-7-3-oracle-jdbc-issues-long-running-query
> 4. https://issues.apache.org/jira/browse/ZEPPELIN-3110
>
>
> Thanks,
>
> Maksim Belousov
>
>
>


-- 
이종열, Jongyoul Lee, 李宗烈
http://madeng.net

Reply via email to