I agree. It's unfortunate that Amazon's API forces you to tightly couple your DAOs to their data store. Given that fact the decision makes sense though.
One eventual solution could be using something like AspectJ to enhance the Persistent implementations with the necessary annotations. I think that having multiple compilers is a workable if not ideal option, but if that's the case I think there should be some planning around what the official spec is and we should focus efforts on creating a test suite that verifies the compliance of data stores and objects against the written spec. On Aug 24, 2012 6:58 PM, "Lewis John Mcgibbney" <[email protected]> wrote: > Hi Ed, > > I've provided (where I can) answers for your questions to get us > started here. Please see inline. > > On Fri, Aug 24, 2012 at 1:23 PM, Ed Kohlwey <[email protected]> wrote: > > > Questions: > > > > 1. Are annotations the only way to implement the desired features? > > Yes AFAIK. If I'm preempting your thoughts here, I agree that this is > really restrictive (with respect to obtaining a more generalised > design approach for a Gora compiler) but annotations are essential for > for DynamoDBMapper [0] to achieve the correct mappings. As we were > operating under the restrictions of the GSoC timeline, the decision > was made to implement a DynamoDB specific compiler at this stage with > the view of developing a more widely applicable implementation as the > webservices API matured. > > > 2. What if other data stores have other annotations? Will we create > more > > compilers for them? > > This relates to my answer above... ideally the utopian vision would be > to use implementations which do not restrict us to annotations for > mappings but just now (and as no other options seemed immediately > available) we have the one compiler for Avro based implementations, > one for Amazon DynamoDB (with the aim of having one to cover all web > services back stores if possible) but maybe individual compilers for > other web services stores... this is far from ideal. > > > 3. Renato had mentioned that Gora supports "data services" now > > (presumably in addition to databases). I'm not sure I understand this > > distinction. I have heard Dynamo is a managed database that > implements a > > model similar to Cassandra. Can you elaborate on this statement? > > OK so this relates to the proposed addition of web services to the > gora-core API (namely classes such as QueryWSBase[1], > WSDataStoreBase[2] including specific packages for implementing web > backed datastores of varying natures e.g. file-backed and > webservice-backed) which do not rely upon Avro for serializations > between the data store. For clarification on this point Gora's > Persistent class extends from Avro's SpecificRecord which is certainly > not appropriate for DynamoDB as Amazon uses web service requests for > serializing to and from the data store and retrieving records. > Additionally Avro based stores remain implementations of > PersistentBase (still extending SpecificRecord) whilst the web > services backed stores now implement PersistentWSBase. > > The reports which can be found here [4] contain commentary on all of > this as and when we became aware of it during the design and > progression of the project. > > I've intentionally not included replies to your thoughts section as I > think it's best for me to leave this to simmer for a bit... also > because I'll most certainly need to read it another once or twice for > it to lodge properly ;) > > Hopefully Renato can chime in here with his thoughts, if there is > anything I've failed to include or have stated incorrectly. > > Thanks > Lewis > > [0] > http://docs.amazonwebservices.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodb/datamodeling/DynamoDBMapper.html > [1] > http://svn.apache.org/repos/asf/gora/branches/goraamazon/gora-core/src/main/java/org/apache/gora/query/ws/impl/QueryWSBase.java > [2] > http://svn.apache.org/repos/asf/gora/branches/goraamazon/gora-core/src/main/java/org/apache/gora/store/ws/impl/WSDataStoreBase.java > [3] > http://svn.apache.org/repos/asf/gora/branches/goraamazon/gora-core/src/main/java/org/apache/gora/persistency/ws/impl/PersistentWSBase.java > [4] > http://svn.apache.org/repos/asf/gora/branches/goraamazon/gora-dynamodb/reporting/ >

