You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ignite.apache.org by Alexey Kosenchuk <al...@nobitlost.com> on 2018/02/19 21:23:12 UTC

Ignite Thin clients for Node.js, Python, PHP

Hi All!

Let us join the party, please ;)

As we see, there is Binary Client Protocol to communicate with Ignite 
cluster and a concept of Thin (lightweight) client.

If there are no objections or duplicated plans, we would like to develop 
Thin Client libs for:
- Node.js
- Python
- PHP

Please add us as contributors and provide access to the Ignite Jira 
components.

Usernames in the Apache Jira:
alexey.kosenchuk
ekaterina.vergizova
pavel.petroshenko

Thanks!
-Alexey

Re: Ignite Thin clients for Node.js, Python, PHP

Posted by Denis Magda <dm...@apache.org>.
Thanks, Sergey! It's a really robust foundation. My guess that the guys can
take your client, support the rest of APIs the protocol has and eventually
merge it to Ignite code base.

--
Denis

On Fri, Mar 2, 2018 at 2:40 AM, Sergey Kozlov <sk...@gridgain.com> wrote:

> Hi Igniters
>
> Due to some delay for release 2.4 and personal circumstances I decided to
> public the prototype of Python Client [1].
>
> Feel free to use it as a base if it makes sense.
>
> [1] https://github.com/skozlov-gridgain/apache-ignite-python-thin-client
>
>
> On Thu, Mar 1, 2018 at 8:17 PM, Pavel Tupitsyn <pt...@apache.org>
> wrote:
>
> > Agree with Vladimir and Denis.
> >
> > I don't think JSON has any place in the thin client protocol,
> > which is a binary protocol designed to be efficient, with clearly defined
> > data format.
> >
> > We already have JSON in "REST" client.
> >
> >
> > On Thu, Mar 1, 2018 at 8:15 PM, Denis Magda <dm...@apache.org> wrote:
> >
> > > Totally share Vladimir's stance. Let's support the scope that already
> > > exists in the protocol and think about the future later. The users will
> > > definitely guide us to a right direction :)
> > >
> > > --
> > > Denis
> > >
> > > On Thu, Mar 1, 2018 at 7:12 AM, Vladimir Ozerov <vo...@gridgain.com>
> > > wrote:
> > >
> > > > I would extract compute tasks into separate scope. It is better to
> keep
> > > > focus on protocol things and basic language support for now. Once we
> > have
> > > > basic client API in production-ready state, we could consider adding
> > > > JavaScript to our core compute feature set and then extend it to the
> > > > clients (which should be trivial provided that core part is ready).
> We
> > > > should
> > > > be ready to spend considerable efforts to prior R&D because dynamic
> > code
> > > > execution is not very simple thing, especially in terms of security,
> > > native
> > > > compilation, etc..
> > > >
> > > >
> > > >
> > > > On Thu, Mar 1, 2018 at 5:17 PM, Ilya Kasnacheev <
> > > ilya.kasnacheev@gmail.com
> > > > >
> > > > wrote:
> > > >
> > > > > With regards of thin clients for dynamically typed languages, I
> think
> > > > > Ignite needs two following features to shine:
> > > > >
> > > > > - Ability to pass JSON to such clients, turn JSON Objects into a
> > > > > BinaryObjects, which will give ability to index top-level keys in
> > such
> > > > JSON
> > > > > with SQL Indexing. Of course this should be integrated with
> > > > QueryEntities.
> > > > > - Ability to pass JavaScript snippets to invoke() and
> affinityCall()
> > > > > families of calls. On Server node they should be interpreted by
> > Nashorn
> > > > > (since we've upgraded to Java 8). We should also cache such
> snippets
> > > > > pre-interpreted, in this case it can be pretty fast since Nashorn
> > > compile
> > > > > to JVM bytecode.
> > > > >
> > > > > WDYT?
> > > > >
> > > > > --
> > > > > Ilya Kasnacheev
> > > > >
> > > > > 2018-02-20 0:23 GMT+03:00 Alexey Kosenchuk
> > <alexey.kosenchuk@nobitlost.
> > > > com
> > > > > >:
> > > > >
> > > > > > Hi All!
> > > > > >
> > > > > > Let us join the party, please ;)
> > > > > >
> > > > > > As we see, there is Binary Client Protocol to communicate with
> > Ignite
> > > > > > cluster and a concept of Thin (lightweight) client.
> > > > > >
> > > > > > If there are no objections or duplicated plans, we would like to
> > > > develop
> > > > > > Thin Client libs for:
> > > > > > - Node.js
> > > > > > - Python
> > > > > > - PHP
> > > > > >
> > > > > > Please add us as contributors and provide access to the Ignite
> Jira
> > > > > > components.
> > > > > >
> > > > > > Usernames in the Apache Jira:
> > > > > > alexey.kosenchuk
> > > > > > ekaterina.vergizova
> > > > > > pavel.petroshenko
> > > > > >
> > > > > > Thanks!
> > > > > > -Alexey
> > > > > >
> > > > >
> > > >
> > >
> >
>
>
>
> --
> Sergey Kozlov
> GridGain Systems
> www.gridgain.com
>

Re: Ignite Thin clients for Node.js, Python, PHP

Posted by Sergey Kozlov <sk...@gridgain.com>.
Hi Igniters

Due to some delay for release 2.4 and personal circumstances I decided to
public the prototype of Python Client [1].

Feel free to use it as a base if it makes sense.

[1] https://github.com/skozlov-gridgain/apache-ignite-python-thin-client


On Thu, Mar 1, 2018 at 8:17 PM, Pavel Tupitsyn <pt...@apache.org> wrote:

> Agree with Vladimir and Denis.
>
> I don't think JSON has any place in the thin client protocol,
> which is a binary protocol designed to be efficient, with clearly defined
> data format.
>
> We already have JSON in "REST" client.
>
>
> On Thu, Mar 1, 2018 at 8:15 PM, Denis Magda <dm...@apache.org> wrote:
>
> > Totally share Vladimir's stance. Let's support the scope that already
> > exists in the protocol and think about the future later. The users will
> > definitely guide us to a right direction :)
> >
> > --
> > Denis
> >
> > On Thu, Mar 1, 2018 at 7:12 AM, Vladimir Ozerov <vo...@gridgain.com>
> > wrote:
> >
> > > I would extract compute tasks into separate scope. It is better to keep
> > > focus on protocol things and basic language support for now. Once we
> have
> > > basic client API in production-ready state, we could consider adding
> > > JavaScript to our core compute feature set and then extend it to the
> > > clients (which should be trivial provided that core part is ready). We
> > > should
> > > be ready to spend considerable efforts to prior R&D because dynamic
> code
> > > execution is not very simple thing, especially in terms of security,
> > native
> > > compilation, etc..
> > >
> > >
> > >
> > > On Thu, Mar 1, 2018 at 5:17 PM, Ilya Kasnacheev <
> > ilya.kasnacheev@gmail.com
> > > >
> > > wrote:
> > >
> > > > With regards of thin clients for dynamically typed languages, I think
> > > > Ignite needs two following features to shine:
> > > >
> > > > - Ability to pass JSON to such clients, turn JSON Objects into a
> > > > BinaryObjects, which will give ability to index top-level keys in
> such
> > > JSON
> > > > with SQL Indexing. Of course this should be integrated with
> > > QueryEntities.
> > > > - Ability to pass JavaScript snippets to invoke() and affinityCall()
> > > > families of calls. On Server node they should be interpreted by
> Nashorn
> > > > (since we've upgraded to Java 8). We should also cache such snippets
> > > > pre-interpreted, in this case it can be pretty fast since Nashorn
> > compile
> > > > to JVM bytecode.
> > > >
> > > > WDYT?
> > > >
> > > > --
> > > > Ilya Kasnacheev
> > > >
> > > > 2018-02-20 0:23 GMT+03:00 Alexey Kosenchuk
> <alexey.kosenchuk@nobitlost.
> > > com
> > > > >:
> > > >
> > > > > Hi All!
> > > > >
> > > > > Let us join the party, please ;)
> > > > >
> > > > > As we see, there is Binary Client Protocol to communicate with
> Ignite
> > > > > cluster and a concept of Thin (lightweight) client.
> > > > >
> > > > > If there are no objections or duplicated plans, we would like to
> > > develop
> > > > > Thin Client libs for:
> > > > > - Node.js
> > > > > - Python
> > > > > - PHP
> > > > >
> > > > > Please add us as contributors and provide access to the Ignite Jira
> > > > > components.
> > > > >
> > > > > Usernames in the Apache Jira:
> > > > > alexey.kosenchuk
> > > > > ekaterina.vergizova
> > > > > pavel.petroshenko
> > > > >
> > > > > Thanks!
> > > > > -Alexey
> > > > >
> > > >
> > >
> >
>



-- 
Sergey Kozlov
GridGain Systems
www.gridgain.com

Re: Ignite Thin clients for Node.js, Python, PHP

Posted by Pavel Tupitsyn <pt...@apache.org>.
Agree with Vladimir and Denis.

I don't think JSON has any place in the thin client protocol,
which is a binary protocol designed to be efficient, with clearly defined
data format.

We already have JSON in "REST" client.


On Thu, Mar 1, 2018 at 8:15 PM, Denis Magda <dm...@apache.org> wrote:

> Totally share Vladimir's stance. Let's support the scope that already
> exists in the protocol and think about the future later. The users will
> definitely guide us to a right direction :)
>
> --
> Denis
>
> On Thu, Mar 1, 2018 at 7:12 AM, Vladimir Ozerov <vo...@gridgain.com>
> wrote:
>
> > I would extract compute tasks into separate scope. It is better to keep
> > focus on protocol things and basic language support for now. Once we have
> > basic client API in production-ready state, we could consider adding
> > JavaScript to our core compute feature set and then extend it to the
> > clients (which should be trivial provided that core part is ready). We
> > should
> > be ready to spend considerable efforts to prior R&D because dynamic code
> > execution is not very simple thing, especially in terms of security,
> native
> > compilation, etc..
> >
> >
> >
> > On Thu, Mar 1, 2018 at 5:17 PM, Ilya Kasnacheev <
> ilya.kasnacheev@gmail.com
> > >
> > wrote:
> >
> > > With regards of thin clients for dynamically typed languages, I think
> > > Ignite needs two following features to shine:
> > >
> > > - Ability to pass JSON to such clients, turn JSON Objects into a
> > > BinaryObjects, which will give ability to index top-level keys in such
> > JSON
> > > with SQL Indexing. Of course this should be integrated with
> > QueryEntities.
> > > - Ability to pass JavaScript snippets to invoke() and affinityCall()
> > > families of calls. On Server node they should be interpreted by Nashorn
> > > (since we've upgraded to Java 8). We should also cache such snippets
> > > pre-interpreted, in this case it can be pretty fast since Nashorn
> compile
> > > to JVM bytecode.
> > >
> > > WDYT?
> > >
> > > --
> > > Ilya Kasnacheev
> > >
> > > 2018-02-20 0:23 GMT+03:00 Alexey Kosenchuk <alexey.kosenchuk@nobitlost.
> > com
> > > >:
> > >
> > > > Hi All!
> > > >
> > > > Let us join the party, please ;)
> > > >
> > > > As we see, there is Binary Client Protocol to communicate with Ignite
> > > > cluster and a concept of Thin (lightweight) client.
> > > >
> > > > If there are no objections or duplicated plans, we would like to
> > develop
> > > > Thin Client libs for:
> > > > - Node.js
> > > > - Python
> > > > - PHP
> > > >
> > > > Please add us as contributors and provide access to the Ignite Jira
> > > > components.
> > > >
> > > > Usernames in the Apache Jira:
> > > > alexey.kosenchuk
> > > > ekaterina.vergizova
> > > > pavel.petroshenko
> > > >
> > > > Thanks!
> > > > -Alexey
> > > >
> > >
> >
>

Re: Ignite Thin clients for Node.js, Python, PHP

Posted by Denis Magda <dm...@apache.org>.
Totally share Vladimir's stance. Let's support the scope that already
exists in the protocol and think about the future later. The users will
definitely guide us to a right direction :)

--
Denis

On Thu, Mar 1, 2018 at 7:12 AM, Vladimir Ozerov <vo...@gridgain.com>
wrote:

> I would extract compute tasks into separate scope. It is better to keep
> focus on protocol things and basic language support for now. Once we have
> basic client API in production-ready state, we could consider adding
> JavaScript to our core compute feature set and then extend it to the
> clients (which should be trivial provided that core part is ready). We
> should
> be ready to spend considerable efforts to prior R&D because dynamic code
> execution is not very simple thing, especially in terms of security, native
> compilation, etc..
>
>
>
> On Thu, Mar 1, 2018 at 5:17 PM, Ilya Kasnacheev <ilya.kasnacheev@gmail.com
> >
> wrote:
>
> > With regards of thin clients for dynamically typed languages, I think
> > Ignite needs two following features to shine:
> >
> > - Ability to pass JSON to such clients, turn JSON Objects into a
> > BinaryObjects, which will give ability to index top-level keys in such
> JSON
> > with SQL Indexing. Of course this should be integrated with
> QueryEntities.
> > - Ability to pass JavaScript snippets to invoke() and affinityCall()
> > families of calls. On Server node they should be interpreted by Nashorn
> > (since we've upgraded to Java 8). We should also cache such snippets
> > pre-interpreted, in this case it can be pretty fast since Nashorn compile
> > to JVM bytecode.
> >
> > WDYT?
> >
> > --
> > Ilya Kasnacheev
> >
> > 2018-02-20 0:23 GMT+03:00 Alexey Kosenchuk <alexey.kosenchuk@nobitlost.
> com
> > >:
> >
> > > Hi All!
> > >
> > > Let us join the party, please ;)
> > >
> > > As we see, there is Binary Client Protocol to communicate with Ignite
> > > cluster and a concept of Thin (lightweight) client.
> > >
> > > If there are no objections or duplicated plans, we would like to
> develop
> > > Thin Client libs for:
> > > - Node.js
> > > - Python
> > > - PHP
> > >
> > > Please add us as contributors and provide access to the Ignite Jira
> > > components.
> > >
> > > Usernames in the Apache Jira:
> > > alexey.kosenchuk
> > > ekaterina.vergizova
> > > pavel.petroshenko
> > >
> > > Thanks!
> > > -Alexey
> > >
> >
>

Re: Ignite Thin clients for Node.js, Python, PHP

Posted by Vladimir Ozerov <vo...@gridgain.com>.
I would extract compute tasks into separate scope. It is better to keep
focus on protocol things and basic language support for now. Once we have
basic client API in production-ready state, we could consider adding
JavaScript to our core compute feature set and then extend it to the
clients (which should be trivial provided that core part is ready). We should
be ready to spend considerable efforts to prior R&D because dynamic code
execution is not very simple thing, especially in terms of security, native
compilation, etc..



On Thu, Mar 1, 2018 at 5:17 PM, Ilya Kasnacheev <il...@gmail.com>
wrote:

> With regards of thin clients for dynamically typed languages, I think
> Ignite needs two following features to shine:
>
> - Ability to pass JSON to such clients, turn JSON Objects into a
> BinaryObjects, which will give ability to index top-level keys in such JSON
> with SQL Indexing. Of course this should be integrated with QueryEntities.
> - Ability to pass JavaScript snippets to invoke() and affinityCall()
> families of calls. On Server node they should be interpreted by Nashorn
> (since we've upgraded to Java 8). We should also cache such snippets
> pre-interpreted, in this case it can be pretty fast since Nashorn compile
> to JVM bytecode.
>
> WDYT?
>
> --
> Ilya Kasnacheev
>
> 2018-02-20 0:23 GMT+03:00 Alexey Kosenchuk <alexey.kosenchuk@nobitlost.com
> >:
>
> > Hi All!
> >
> > Let us join the party, please ;)
> >
> > As we see, there is Binary Client Protocol to communicate with Ignite
> > cluster and a concept of Thin (lightweight) client.
> >
> > If there are no objections or duplicated plans, we would like to develop
> > Thin Client libs for:
> > - Node.js
> > - Python
> > - PHP
> >
> > Please add us as contributors and provide access to the Ignite Jira
> > components.
> >
> > Usernames in the Apache Jira:
> > alexey.kosenchuk
> > ekaterina.vergizova
> > pavel.petroshenko
> >
> > Thanks!
> > -Alexey
> >
>

Re: Ignite Thin clients for Node.js, Python, PHP

Posted by Ilya Kasnacheev <il...@gmail.com>.
With regards of thin clients for dynamically typed languages, I think
Ignite needs two following features to shine:

- Ability to pass JSON to such clients, turn JSON Objects into a
BinaryObjects, which will give ability to index top-level keys in such JSON
with SQL Indexing. Of course this should be integrated with QueryEntities.
- Ability to pass JavaScript snippets to invoke() and affinityCall()
families of calls. On Server node they should be interpreted by Nashorn
(since we've upgraded to Java 8). We should also cache such snippets
pre-interpreted, in this case it can be pretty fast since Nashorn compile
to JVM bytecode.

WDYT?

-- 
Ilya Kasnacheev

2018-02-20 0:23 GMT+03:00 Alexey Kosenchuk <al...@nobitlost.com>:

> Hi All!
>
> Let us join the party, please ;)
>
> As we see, there is Binary Client Protocol to communicate with Ignite
> cluster and a concept of Thin (lightweight) client.
>
> If there are no objections or duplicated plans, we would like to develop
> Thin Client libs for:
> - Node.js
> - Python
> - PHP
>
> Please add us as contributors and provide access to the Ignite Jira
> components.
>
> Usernames in the Apache Jira:
> alexey.kosenchuk
> ekaterina.vergizova
> pavel.petroshenko
>
> Thanks!
> -Alexey
>

Re: Ignite Thin clients for Node.js, Python, PHP

Posted by Alexey Kosenchuk <al...@nobitlost.com>.
Denis, Alexey, Pavel, Sergey, thanks for info.

We will start from Node.js lib.
I've created Jira (https://issues.apache.org/jira/browse/IGNITE-7777) to 
track it's scope and status.

Sure, we will provide the main ideas / API for review first, etc. 
according to the process.

-Alexey

20.02.2018 1:09, Denis Magda пишет:
> Hi Alexey and welcome to all of you! Look forward to seeing the clients in
> Ignite codebase ;)
> 
> Granted contributors access to all of you in JIRA. Feel free to assign
> existing tickets to yourself or create new ones.
> 
> However, before you're getting down to the implementation, please share the
> design and architectural ideas around the clients. Plus, it will be
> reasonable to start with one client first and then add the rest once you
> find out how the community works and Ignite is architectured.
> 
> Pavel T., Alex K., as creators of .NET and Java thin clients, please share
> pointers that might be useful for Alexey.
> 
> --
> Denis
> 
> 
> On Mon, Feb 19, 2018 at 1:23 PM, Alexey Kosenchuk <
> alexey.kosenchuk@nobitlost.com> wrote:
> 
>> Hi All!
>>
>> Let us join the party, please ;)
>>
>> As we see, there is Binary Client Protocol to communicate with Ignite
>> cluster and a concept of Thin (lightweight) client.
>>
>> If there are no objections or duplicated plans, we would like to develop
>> Thin Client libs for:
>> - Node.js
>> - Python
>> - PHP
>>
>> Please add us as contributors and provide access to the Ignite Jira
>> components.
>>
>> Usernames in the Apache Jira:
>> alexey.kosenchuk
>> ekaterina.vergizova
>> pavel.petroshenko
>>
>> Thanks!
>> -Alexey
>>
> 

Re: Ignite Thin clients for Node.js, Python, PHP

Posted by Denis Magda <dm...@apache.org>.
Sergey,

Excellent, please share the branch once you're ready. As I understand, the
guys can take it as a basis and support all the APIs available in the
protocol

On Tue, Feb 20, 2018 at 5:31 AM, Sergey Kozlov <sk...@gridgain.com> wrote:

> Hi
>
> Yes, I've a prototype of python client supporting cache operations only.
>
> I plan to share that after official AI 2.4 release providing thin client
> implementation.
>
> On Tue, Feb 20, 2018 at 11:40 AM, Pavel Tupitsyn <pt...@apache.org>
> wrote:
>
> > Hi,
> >
> > As far as I know, Sergey Kozlov <sk...@gridgain.com> already has some
> > Python thin client implementation,
> > not sure how much functionality is in there, but it may be a good start.
> >
> > Sergey, can you share something with us?
> >
> > Thanks,
> > Pavel
> >
> > On Tue, Feb 20, 2018 at 1:34 AM, Alexey Kukushkin <
> > kukushkinalexey@gmail.com
> > > wrote:
> >
> > > Also, we could have a Hangouts call or something to share thin client
> > > development experience. You can reach me at kukushkinalexey@gmail.com.
> > >
> >
>
>
>
> --
> Sergey Kozlov
> GridGain Systems
> www.gridgain.com
>

Re: Ignite Thin clients for Node.js, Python, PHP

Posted by Sergey Kozlov <sk...@gridgain.com>.
Hi

Yes, I've a prototype of python client supporting cache operations only.

I plan to share that after official AI 2.4 release providing thin client
implementation.

On Tue, Feb 20, 2018 at 11:40 AM, Pavel Tupitsyn <pt...@apache.org>
wrote:

> Hi,
>
> As far as I know, Sergey Kozlov <sk...@gridgain.com> already has some
> Python thin client implementation,
> not sure how much functionality is in there, but it may be a good start.
>
> Sergey, can you share something with us?
>
> Thanks,
> Pavel
>
> On Tue, Feb 20, 2018 at 1:34 AM, Alexey Kukushkin <
> kukushkinalexey@gmail.com
> > wrote:
>
> > Also, we could have a Hangouts call or something to share thin client
> > development experience. You can reach me at kukushkinalexey@gmail.com.
> >
>



-- 
Sergey Kozlov
GridGain Systems
www.gridgain.com

Re: Ignite Thin clients for Node.js, Python, PHP

Posted by Pavel Tupitsyn <pt...@apache.org>.
Hi,

As far as I know, Sergey Kozlov <sk...@gridgain.com> already has some
Python thin client implementation,
not sure how much functionality is in there, but it may be a good start.

Sergey, can you share something with us?

Thanks,
Pavel

On Tue, Feb 20, 2018 at 1:34 AM, Alexey Kukushkin <kukushkinalexey@gmail.com
> wrote:

> Also, we could have a Hangouts call or something to share thin client
> development experience. You can reach me at kukushkinalexey@gmail.com.
>

Re: Ignite Thin clients for Node.js, Python, PHP

Posted by Alexey Kukushkin <ku...@gmail.com>.
Also, we could have a Hangouts call or something to share thin client
development experience. You can reach me at kukushkinalexey@gmail.com.

Re: Ignite Thin clients for Node.js, Python, PHP

Posted by Alexey Kukushkin <ku...@gmail.com>.
Alexey, Ekaterina, Pavel,

These resources will be useful for you:

   - Thin client protocol spec
   <https://apacheignite.readme.io/docs/binary-client-protocol>
   - .NET thin client code
   <https://github.com/apache/ignite/tree/master/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Client>
   - Java thin client code
   <https://github.com/gridgain/apache-ignite/tree/ignite-7421/modules/thinclient>
(this
   is a work-in-progress in a development branch)

Please post your questions and ideas - the community will help.

Re: Ignite Thin clients for Node.js, Python, PHP

Posted by Denis Magda <dm...@apache.org>.
Hi Alexey and welcome to all of you! Look forward to seeing the clients in
Ignite codebase ;)

Granted contributors access to all of you in JIRA. Feel free to assign
existing tickets to yourself or create new ones.

However, before you're getting down to the implementation, please share the
design and architectural ideas around the clients. Plus, it will be
reasonable to start with one client first and then add the rest once you
find out how the community works and Ignite is architectured.

Pavel T., Alex K., as creators of .NET and Java thin clients, please share
pointers that might be useful for Alexey.

--
Denis


On Mon, Feb 19, 2018 at 1:23 PM, Alexey Kosenchuk <
alexey.kosenchuk@nobitlost.com> wrote:

> Hi All!
>
> Let us join the party, please ;)
>
> As we see, there is Binary Client Protocol to communicate with Ignite
> cluster and a concept of Thin (lightweight) client.
>
> If there are no objections or duplicated plans, we would like to develop
> Thin Client libs for:
> - Node.js
> - Python
> - PHP
>
> Please add us as contributors and provide access to the Ignite Jira
> components.
>
> Usernames in the Apache Jira:
> alexey.kosenchuk
> ekaterina.vergizova
> pavel.petroshenko
>
> Thanks!
> -Alexey
>