ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexey Goncharuk (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (IGNITE-51) Support store-by-value mode
Date Fri, 20 Feb 2015 07:58:11 GMT

     [ https://issues.apache.org/jira/browse/IGNITE-51?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Alexey Goncharuk updated IGNITE-51:
-----------------------------------
    Description: 
# Need to introduce interface {{CacheObject}} that will hide the implementation details of
cached object representation.
{code}
public interface CacheObject {
    public int hashCode();
    public <T> T value(GridCacheContext ctx);
    public <T> T getField(String name);
    public byte[] valueBytes();
}
{code}
Implementation of this class must always store serialized form of the object and should be
optionally store deserialized form of the object. Cache object must never keep the original
reference of the user object.
# Inside {{GridCacheMapEntry}} fields {{key}}, {{keyBytes}}, {{value}} and {{valueBytes}}
should be replaced with corresponding {{CacheObject}} references.
# Same goes for other cache classes that were using keys, values or thereof bytes implicitly
({{IgniteTxEntry}}, {{GridCacheEntryInfo}}, etc)
# Transformation of user object to a cache object in Ignite should be implemented in {{GridPortableProcessor}}
which should be renamed to {{IgniteCacheObjectProcessor}}. {{IgniteCacheSerializarionManager}}
should be removed.
# Marshalling of {{CacheObject}} should take advantage of portable marshalling mechanism and
always use only the serialized bytes stored in the {{CacheObject}}.
# {{storeValueBytes}} flag should be removed from configuration.
# {{allowBinaryEquals}} flag should be introduced to cache configuration (default true). When
true, cache keys should not be deserialized and binary form of the object altogether with
the hash code should be used to check key equality. {{GridCacheConcurrentMap}} should be updated
accordingly.
# {{keepDeserialized}} flag should be introduced to cache configuration (default false, must
be internally set to true when indexing is enabled). When {{keepDeserialized}} is {{true}},
cache object should cache deserialized form of the user object.
# {{copyOnGet}} flag should be added to cache configuration (default true). When true, new
value should be deserialized and returned to user on each cache operation implying return
value. Ignite should maintain a list of known immutable types (such as {{Integer}}, {{String}})
for which {{copyOnGet}} is ignored. New annotation {{@IgniteImmutable}} should be introduced
to mark immutable types for which this flag is also ignored.


  was:
# Need to introduce interface {{CacheObject}} that will hide the implementation details of
cached object representation.
{code}
public interface CacheObject {
    public int hashCode();
    public <T> T value(GridCacheContext ctx);
    public byte[] valueBytes();
}
{code}

Implementation of this class must always store serialized form of the object and should be
optionally store deserialized form of the object. Cache object must never keep the original
reference of the user object.

# Inside {{GridCacheMapEntry}} fields {{key}}, {{keyBytes}}, {{value}} and {{valueBytes}}
should be replaced with corresponding {{CacheObject}} references.
# Same goes for other cache classes that were using keys, values or thereof bytes implicitly
({{IgniteTxEntry}}, {{GridCacheEntryInfo}}, etc)
# Transformation of user object to a cache object in Ignite should be implemented in {{GridPortableProcessor}}
which should be renamed to {{IgniteCacheObjectProcessor}}. {{IgniteCacheSerializarionManager}}
should be removed.
# Marshalling of {{CacheObject}} should take advantage of portable marshalling mechanism and
always use only the serialized bytes stored in the {{CacheObject}}.


> Support store-by-value mode
> ---------------------------
>
>                 Key: IGNITE-51
>                 URL: https://issues.apache.org/jira/browse/IGNITE-51
>             Project: Ignite
>          Issue Type: Sub-task
>          Components: cache
>            Reporter: Semen Boikov
>            Assignee: Alexey Goncharuk
>             Fix For: sprint-2
>
>
> # Need to introduce interface {{CacheObject}} that will hide the implementation details
of cached object representation.
> {code}
> public interface CacheObject {
>     public int hashCode();
>     public <T> T value(GridCacheContext ctx);
>     public <T> T getField(String name);
>     public byte[] valueBytes();
> }
> {code}
> Implementation of this class must always store serialized form of the object and should
be optionally store deserialized form of the object. Cache object must never keep the original
reference of the user object.
> # Inside {{GridCacheMapEntry}} fields {{key}}, {{keyBytes}}, {{value}} and {{valueBytes}}
should be replaced with corresponding {{CacheObject}} references.
> # Same goes for other cache classes that were using keys, values or thereof bytes implicitly
({{IgniteTxEntry}}, {{GridCacheEntryInfo}}, etc)
> # Transformation of user object to a cache object in Ignite should be implemented in
{{GridPortableProcessor}} which should be renamed to {{IgniteCacheObjectProcessor}}. {{IgniteCacheSerializarionManager}}
should be removed.
> # Marshalling of {{CacheObject}} should take advantage of portable marshalling mechanism
and always use only the serialized bytes stored in the {{CacheObject}}.
> # {{storeValueBytes}} flag should be removed from configuration.
> # {{allowBinaryEquals}} flag should be introduced to cache configuration (default true).
When true, cache keys should not be deserialized and binary form of the object altogether
with the hash code should be used to check key equality. {{GridCacheConcurrentMap}} should
be updated accordingly.
> # {{keepDeserialized}} flag should be introduced to cache configuration (default false,
must be internally set to true when indexing is enabled). When {{keepDeserialized}} is {{true}},
cache object should cache deserialized form of the user object.
> # {{copyOnGet}} flag should be added to cache configuration (default true). When true,
new value should be deserialized and returned to user on each cache operation implying return
value. Ignite should maintain a list of known immutable types (such as {{Integer}}, {{String}})
for which {{copyOnGet}} is ignored. New annotation {{@IgniteImmutable}} should be introduced
to mark immutable types for which this flag is also ignored.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message