You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by Rajesh Kishore <ra...@gmail.com> on 2018/01/17 10:05:55 UTC

usage of Apache ignite as Key value DB

Hi,

I am newbie to Apache Ignite. We are trying to explore Ignite as key value
DB to be replaced with our existing Berkely DB in application.

Currently, Bekley DB is embedded in the application and db container
operations are performed using Berkely DB apis , similar functionalities we
would need for Ignite.

The idea is to replace berkley db apis to Ignite apis to use Ignite as key
value DB.
I could not find any docs for the usage of ignite libraries to be used in
the application.

Any pointers please

Thanks & Regards,
Rajesh Kishore

Re: usage of Apache ignite as Key value DB

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

> On Jan 17, 2018, at 4:30 AM, Rajesh Kishore <ra...@gmail.com> wrote:
> 
> Hello Mikael,
> 
> Thanks a ton for your response. I got descent understanding that for any operation I need to define cache and the cache item can be persisted.
> - Does it mean all CRUD operations would be performed via cache operations ?

Yes.

> - Consider the case of berkley db where entities are stored locally in file system. And these entry container were defined by the berkley db apis, so how entities container are created in Ignite , is it driven by cacheName? where the entities are stored? To be simple where the records for "Person" & "Department" would be stored and how that can be configured

Think of a cache as of a table in an RBMS. So “Person” and “Department” will be stored in separate caches.

Data grid (key-value) examples should boost your plunging into Ignite concepts:
https://github.com/apache/ignite/tree/master/examples/src/main/java/org/apache/ignite/examples/datagrid <https://github.com/apache/ignite/tree/master/examples/src/main/java/org/apache/ignite/examples/datagrid>

—
Denis

> 
> Thanks,
> Rajesh
> 
> On Wed, Jan 17, 2018 at 5:37 PM, Mikael <mikael-aronsson@telia.com <ma...@telia.com>> wrote:
> There are lots of examples not using SQL, have a look at:
> 
> https://apacheignite.readme.io/docs/jcache <https://apacheignite.readme.io/docs/jcache>
> Ignite implements the JCache API, just use get/put and so on.
> 
> 
> Den 2018-01-17 kl. 12:44, skrev Rajesh Kishore:
>> This is much informative. Further I want to use key value apis instead of sql apis which is only given in the example. 
>> The idea is that it should ease my migration process from Berkley dB based code where I am relying on key value apis to play with record in different dB containers, what is the equivalent here of ignite i.e how do we represent different entity say employee in local file system and how to insert and retrieve record 
>> 
>> Thanks 
>> Rajesh 
>> 
>> On 17 Jan 2018 3:59 p.m., "Mikael" <mikael-aronsson@telia.com <ma...@telia.com>> wrote:
>> You have to run an Ignite instance to use it (you can embed it in your application), you can't just use the key value store on it's own, a LOCAL cache would be the closest to a Berkeley DB store.
>> 
>> Docs at : https://apacheignite.readme.io/docs/data-grid <https://apacheignite.readme.io/docs/data-grid>
>> 
>> 
>> 
>> Den 2018-01-17 kl. 11:05, skrev Rajesh Kishore:
>> Hi,
>> 
>> I am newbie to Apache Ignite. We are trying to explore Ignite as key value DB to be replaced with our existing Berkely DB in application.
>> 
>> Currently, Bekley DB is embedded in the application and db container operations are performed using Berkely DB apis , similar functionalities we would need for Ignite.
>> 
>> The idea is to replace berkley db apis to Ignite apis to use Ignite as key value DB.
>> I could not find any docs for the usage of ignite libraries to be used in the application.
>> 
>> Any pointers please
>> 
>> Thanks & Regards,
>> Rajesh Kishore
>> 
> 
> 


Re: usage of Apache ignite as Key value DB

Posted by Rajesh Kishore <ra...@gmail.com>.
Hi Mikael,

Thanks a lot for your response, got a fair understanding of this.
Have some queries on Indexes , starting a new thread for this.

Thanks,
Rajesh

On Wed, Jan 17, 2018 at 6:33 PM, Mikael <mi...@telia.com> wrote:

> There are a number of ways do to persistence for the cache, you can enable
> native persistence for a memory region and assign a cache to that region,
> all cache entries will be cached on disk och the ones you use most will be
> cached in RAM, another alternative is to add 3rd party class to enable
> persistence, the cache will call your implementation to do the persistence
> (JDBC and Cassandra is built in), you can do read only or both read and
> write persistence.
>
> Your key/value objects can be created with SQL DDL queries or you can use
> POJO's.
>
> Native persistence information:
>
> https://apacheignite.readme.io/docs/distributed-persistent-store
>
> Do your own storage:
>
> https://apacheignite.readme.io/docs/data-loading
>
> https://apacheignite.readme.io/docs/3rd-party-stor
>
> You can do all CRUD operations using the cache API or/and SQL, if you use
> native persistence SQL quesries work on the entire cache even if items not
> in RAM, if you use 3rd party persistence SQL queries will only work on
> items in RAM.
>
> Hope that helps a little.
> Mikael
>
>
> Den 2018-01-17 kl. 13:30, skrev Rajesh Kishore:
>
> Hello Mikael,
>
> Thanks a ton for your response. I got descent understanding that for any
> operation I need to define cache and the cache item can be persisted.
> - Does it mean all CRUD operations would be performed via cache operations
> ?
> - Consider the case of berkley db where entities are stored locally in
> file system. And these entry container were defined by the berkley db apis,
> so how entities container are created in Ignite , is it driven by
> cacheName? where the entities are stored? To be simple where the records
> for "Person" & "Department" would be stored and how that can be configured
>
> Thanks,
> Rajesh
>
> On Wed, Jan 17, 2018 at 5:37 PM, Mikael <mi...@telia.com> wrote:
>
>> There are lots of examples not using SQL, have a look at:
>>
>> https://apacheignite.readme.io/docs/jcache
>>
>> Ignite implements the JCache API, just use get/put and so on.
>>
>>
>> Den 2018-01-17 kl. 12:44, skrev Rajesh Kishore:
>>
>> This is much informative. Further I want to use key value apis instead of
>> sql apis which is only given in the example.
>> The idea is that it should ease my migration process from Berkley dB
>> based code where I am relying on key value apis to play with record in
>> different dB containers, what is the equivalent here of ignite i.e how do
>> we represent different entity say employee in local file system and how to
>> insert and retrieve record
>>
>> Thanks
>> Rajesh
>>
>> On 17 Jan 2018 3:59 p.m., "Mikael" <mi...@telia.com> wrote:
>>
>>> You have to run an Ignite instance to use it (you can embed it in your
>>> application), you can't just use the key value store on it's own, a LOCAL
>>> cache would be the closest to a Berkeley DB store.
>>>
>>> Docs at : https://apacheignite.readme.io/docs/data-grid
>>>
>>>
>>>
>>> Den 2018-01-17 kl. 11:05, skrev Rajesh Kishore:
>>>
>>>> Hi,
>>>>
>>>> I am newbie to Apache Ignite. We are trying to explore Ignite as key
>>>> value DB to be replaced with our existing Berkely DB in application.
>>>>
>>>> Currently, Bekley DB is embedded in the application and db container
>>>> operations are performed using Berkely DB apis , similar functionalities we
>>>> would need for Ignite.
>>>>
>>>> The idea is to replace berkley db apis to Ignite apis to use Ignite as
>>>> key value DB.
>>>> I could not find any docs for the usage of ignite libraries to be used
>>>> in the application.
>>>>
>>>> Any pointers please
>>>>
>>>> Thanks & Regards,
>>>> Rajesh Kishore
>>>>
>>>
>>>
>>
>
>

Re: usage of Apache ignite as Key value DB

Posted by Mikael <mi...@telia.com>.
There are a number of ways do to persistence for the cache, you can 
enable native persistence for a memory region and assign a cache to that 
region, all cache entries will be cached on disk och the ones you use 
most will be cached in RAM, another alternative is to add 3rd party 
class to enable persistence, the cache will call your implementation to 
do the persistence (JDBC and Cassandra is built in), you can do read 
only or both read and write persistence.

Your key/value objects can be created with SQL DDL queries or you can 
use POJO's.

Native persistence information:

https://apacheignite.readme.io/docs/distributed-persistent-store

Do your own storage:

https://apacheignite.readme.io/docs/data-loading

https://apacheignite.readme.io/docs/3rd-party-stor

You can do all CRUD operations using the cache API or/and SQL, if you 
use native persistence SQL quesries work on the entire cache even if 
items not in RAM, if you use 3rd party persistence SQL queries will only 
work on items in RAM.

Hope that helps a little.

Mikael

Den 2018-01-17 kl. 13:30, skrev Rajesh Kishore:
> Hello Mikael,
>
> Thanks a ton for your response. I got descent understanding that for 
> any operation I need to define cache and the cache item can be persisted.
> - Does it mean all CRUD operations would be performed via cache 
> operations ?
> - Consider the case of berkley db where entities are stored locally in 
> file system. And these entry container were defined by the berkley db 
> apis, so how entities container are created in Ignite , is it driven 
> by cacheName? where the entities are stored? To be simple where the 
> records for "Person" & "Department" would be stored and how that can 
> be configured
>
> Thanks,
> Rajesh
>
> On Wed, Jan 17, 2018 at 5:37 PM, Mikael <mikael-aronsson@telia.com 
> <ma...@telia.com>> wrote:
>
>     There are lots of examples not using SQL, have a look at:
>
>     https://apacheignite.readme.io/docs/jcache
>     <https://apacheignite.readme.io/docs/jcache>
>
>     Ignite implements the JCache API, just use get/put and so on.
>
>
>     Den 2018-01-17 kl. 12:44, skrev Rajesh Kishore:
>>     This is much informative. Further I want to use key value apis
>>     instead of sql apis which is only given in the example.
>>     The idea is that it should ease my migration process from Berkley
>>     dB based code where I am relying on key value apis to play with
>>     record in different dB containers, what is the equivalent here of
>>     ignite i.e how do we represent different entity say employee in
>>     local file system and how to insert and retrieve record
>>
>>     Thanks
>>     Rajesh
>>
>>     On 17 Jan 2018 3:59 p.m., "Mikael" <mikael-aronsson@telia.com
>>     <ma...@telia.com>> wrote:
>>
>>         You have to run an Ignite instance to use it (you can embed
>>         it in your application), you can't just use the key value
>>         store on it's own, a LOCAL cache would be the closest to a
>>         Berkeley DB store.
>>
>>         Docs at : https://apacheignite.readme.io/docs/data-grid
>>         <https://apacheignite.readme.io/docs/data-grid>
>>
>>
>>
>>         Den 2018-01-17 kl. 11:05, skrev Rajesh Kishore:
>>
>>             Hi,
>>
>>             I am newbie to Apache Ignite. We are trying to explore
>>             Ignite as key value DB to be replaced with our existing
>>             Berkely DB in application.
>>
>>             Currently, Bekley DB is embedded in the application and
>>             db container operations are performed using Berkely DB
>>             apis , similar functionalities we would need for Ignite.
>>
>>             The idea is to replace berkley db apis to Ignite apis to
>>             use Ignite as key value DB.
>>             I could not find any docs for the usage of ignite
>>             libraries to be used in the application.
>>
>>             Any pointers please
>>
>>             Thanks & Regards,
>>             Rajesh Kishore
>>
>>
>
>


Re: usage of Apache ignite as Key value DB

Posted by Rajesh Kishore <ra...@gmail.com>.
Hello Mikael,

Thanks a ton for your response. I got descent understanding that for any
operation I need to define cache and the cache item can be persisted.
- Does it mean all CRUD operations would be performed via cache operations ?
- Consider the case of berkley db where entities are stored locally in file
system. And these entry container were defined by the berkley db apis, so
how entities container are created in Ignite , is it driven by cacheName?
where the entities are stored? To be simple where the records for "Person"
& "Department" would be stored and how that can be configured

Thanks,
Rajesh

On Wed, Jan 17, 2018 at 5:37 PM, Mikael <mi...@telia.com> wrote:

> There are lots of examples not using SQL, have a look at:
>
> https://apacheignite.readme.io/docs/jcache
>
> Ignite implements the JCache API, just use get/put and so on.
>
>
> Den 2018-01-17 kl. 12:44, skrev Rajesh Kishore:
>
> This is much informative. Further I want to use key value apis instead of
> sql apis which is only given in the example.
> The idea is that it should ease my migration process from Berkley dB based
> code where I am relying on key value apis to play with record in different
> dB containers, what is the equivalent here of ignite i.e how do we
> represent different entity say employee in local file system and how to
> insert and retrieve record
>
> Thanks
> Rajesh
>
> On 17 Jan 2018 3:59 p.m., "Mikael" <mi...@telia.com> wrote:
>
>> You have to run an Ignite instance to use it (you can embed it in your
>> application), you can't just use the key value store on it's own, a LOCAL
>> cache would be the closest to a Berkeley DB store.
>>
>> Docs at : https://apacheignite.readme.io/docs/data-grid
>>
>>
>>
>> Den 2018-01-17 kl. 11:05, skrev Rajesh Kishore:
>>
>>> Hi,
>>>
>>> I am newbie to Apache Ignite. We are trying to explore Ignite as key
>>> value DB to be replaced with our existing Berkely DB in application.
>>>
>>> Currently, Bekley DB is embedded in the application and db container
>>> operations are performed using Berkely DB apis , similar functionalities we
>>> would need for Ignite.
>>>
>>> The idea is to replace berkley db apis to Ignite apis to use Ignite as
>>> key value DB.
>>> I could not find any docs for the usage of ignite libraries to be used
>>> in the application.
>>>
>>> Any pointers please
>>>
>>> Thanks & Regards,
>>> Rajesh Kishore
>>>
>>
>>
>

Re: usage of Apache ignite as Key value DB

Posted by Mikael <mi...@telia.com>.
There are lots of examples not using SQL, have a look at:

https://apacheignite.readme.io/docs/jcache

Ignite implements the JCache API, just use get/put and so on.


Den 2018-01-17 kl. 12:44, skrev Rajesh Kishore:
> This is much informative. Further I want to use key value apis instead 
> of sql apis which is only given in the example.
> The idea is that it should ease my migration process from Berkley dB 
> based code where I am relying on key value apis to play with record in 
> different dB containers, what is the equivalent here of ignite i.e how 
> do we represent different entity say employee in local file system and 
> how to insert and retrieve record
>
> Thanks
> Rajesh
>
> On 17 Jan 2018 3:59 p.m., "Mikael" <mikael-aronsson@telia.com 
> <ma...@telia.com>> wrote:
>
>     You have to run an Ignite instance to use it (you can embed it in
>     your application), you can't just use the key value store on it's
>     own, a LOCAL cache would be the closest to a Berkeley DB store.
>
>     Docs at : https://apacheignite.readme.io/docs/data-grid
>     <https://apacheignite.readme.io/docs/data-grid>
>
>
>
>     Den 2018-01-17 kl. 11:05, skrev Rajesh Kishore:
>
>         Hi,
>
>         I am newbie to Apache Ignite. We are trying to explore Ignite
>         as key value DB to be replaced with our existing Berkely DB in
>         application.
>
>         Currently, Bekley DB is embedded in the application and db
>         container operations are performed using Berkely DB apis ,
>         similar functionalities we would need for Ignite.
>
>         The idea is to replace berkley db apis to Ignite apis to use
>         Ignite as key value DB.
>         I could not find any docs for the usage of ignite libraries to
>         be used in the application.
>
>         Any pointers please
>
>         Thanks & Regards,
>         Rajesh Kishore
>
>


Re: usage of Apache ignite as Key value DB

Posted by Rajesh Kishore <ra...@gmail.com>.
This is much informative. Further I want to use key value apis instead of
sql apis which is only given in the example.
The idea is that it should ease my migration process from Berkley dB based
code where I am relying on key value apis to play with record in different
dB containers, what is the equivalent here of ignite i.e how do we
represent different entity say employee in local file system and how to
insert and retrieve record

Thanks
Rajesh

On 17 Jan 2018 3:59 p.m., "Mikael" <mi...@telia.com> wrote:

> You have to run an Ignite instance to use it (you can embed it in your
> application), you can't just use the key value store on it's own, a LOCAL
> cache would be the closest to a Berkeley DB store.
>
> Docs at : https://apacheignite.readme.io/docs/data-grid
>
>
>
> Den 2018-01-17 kl. 11:05, skrev Rajesh Kishore:
>
>> Hi,
>>
>> I am newbie to Apache Ignite. We are trying to explore Ignite as key
>> value DB to be replaced with our existing Berkely DB in application.
>>
>> Currently, Bekley DB is embedded in the application and db container
>> operations are performed using Berkely DB apis , similar functionalities we
>> would need for Ignite.
>>
>> The idea is to replace berkley db apis to Ignite apis to use Ignite as
>> key value DB.
>> I could not find any docs for the usage of ignite libraries to be used in
>> the application.
>>
>> Any pointers please
>>
>> Thanks & Regards,
>> Rajesh Kishore
>>
>
>

Re: usage of Apache ignite as Key value DB

Posted by Mikael <mi...@telia.com>.
You have to run an Ignite instance to use it (you can embed it in your 
application), you can't just use the key value store on it's own, a 
LOCAL cache would be the closest to a Berkeley DB store.

Docs at : https://apacheignite.readme.io/docs/data-grid



Den 2018-01-17 kl. 11:05, skrev Rajesh Kishore:
> Hi,
>
> I am newbie to Apache Ignite. We are trying to explore Ignite as key 
> value DB to be replaced with our existing Berkely DB in application.
>
> Currently, Bekley DB is embedded in the application and db container 
> operations are performed using Berkely DB apis , similar 
> functionalities we would need for Ignite.
>
> The idea is to replace berkley db apis to Ignite apis to use Ignite as 
> key value DB.
> I could not find any docs for the usage of ignite libraries to be used 
> in the application.
>
> Any pointers please
>
> Thanks & Regards,
> Rajesh Kishore