[ 
https://issues.apache.org/jira/browse/CASSANDRA-3281?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13177310#comment-13177310
 ] 

Edward Capriolo commented on CASSANDRA-3281:
--------------------------------------------

That is one part of it. If you think deeper DynamicCompositeType is still 
restrictive in some cases. Here are some very far fetched use cases that 
DynamicCompositeType can not support. (I am not suggesting these are useful but 
just to bring the limits of DynamicCompositeType to light.

A situation where each composite has a variable number of parts.
{noformat}
set ['ecapriolo']['a:b:c']['x']
set ['ecapriolo']['a:b']['y']
set ['ecapriolo']['a']['x:d']
{noformat}

Each column value could be a completely different serialized Java object. 
{noformat}
set ['ecapriolo']['house'][' new House()']
set ['ecapriolo']['car'][' new Car()']
set ['ecapriolo']['new Foo()'][' new Bar()']
{noformat}

Specifying every possible type that could appear in metadata would be 
impossible.
{noformat}
comparator='DynamicCompositeType(h=>HouseType,c=>CarType,f=foo....)'
{noformat}

The main goals of AnyType were:
* allow null for any type
* allow '' or null for row keys and column names
* allow all types to sort (and sort null) like a RDBMS

Along the way I realized:
* define rules for how two different AnyType's would sort. (In the application 
they were created for) Not using this. Not storing int and string in same 
column.
* I could also store arbitrary comparables (In the application they were 
created for) not using this just seemed too cool to not code up at the moment. 
* People are always telling you to use JSON to store blobs (it would be groovy 
if JSON sorted in a non byte order way.

So if the 'main goals' I mentioned were part of c* I would never have made 
anytype.
                
> Add an AbstractType anytype which stores meta data on a per column basis
> ------------------------------------------------------------------------
>
>                 Key: CASSANDRA-3281
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-3281
>             Project: Cassandra
>          Issue Type: New Feature
>            Reporter: Edward Capriolo
>            Priority: Minor
>
> A pet project of mine is an AbstractType for Cassandra that stores metadata 
> of the type in the column. https://github.com/edwardcapriolo/Cassandra-AnyType
> I described my use case any my design decisions here. 
> https://github.com/edwardcapriolo/Cassandra-AnyType/blob/master/README . The 
> biggest cases were needing to support null and '' as keys, column names, and 
> column values, however I also think the technique used to serialize Java 
> Objects as JSON but compare as a Java object is novel. 
> Side node: (The AbstractType interface has changed multiple times between 
> 0.6.X, 0.7.X, and 1.0.0-beta. I hope it stabilizes! ) 
> If people would like AnyType (or parts of it ) incorporated into Cassandra 
> that would be great. I am willing to tweak change it based on other peoples 
> ideas.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to