On 12/07/2010 03:06 AM, Xingen Wang wrote:
  I just want my rpc framework be able to transport any objects through
network without any modification in the existing schema definition.

Can I achieve this objective with Avro

Perhaps. A way to do this is to define a general schema. If, for example, your objects were named records whose named fields could be null, boolean, long, double, string or a nested record value, then your schema might be something like:

{"name":"data", "type":"record", "fields":[
  {"name":"value", "type":
    ["null",
     "boolean",
     "long",
     "double"
     "string",
     {"name":"record", "type":"record", "fields":[
       {"name":"fields", "type":
         {"type":"array", "items":
           {"name":"field", "type":"record", "fields":[
             {"name":"name", "type":"string"},
             {"name":"value", "type":"data"}
           ]}
         }
       }]}
]}

Note that this is almost a schema for the JSON data model.

Doug

On Tue, Dec 7, 2010 at 9:12 AM, Jeff Hammerbacher <[email protected]
<mailto:[email protected]>> wrote:

    Hey Xingen,

        1. Does the json schema support extends? e.g. First, I define an
        general-purpose json schema named "Object", and in other json
        schema, try to extends this "Object".


    Avro IDL supports includes:
    http://avro.apache.org/docs/current/idl.html#imports. It does not
    support extensions, to the best of my knowledge. Perhaps you could
    file a feature request at https://issues.apache.org/jira/browse/AVRO?

        2. In the primitive types, I can't find one type that can
        represent any objects. I tried "record", but you have to specify
        "name" and "fields" for it.


    You could make a union of all of the primitive types? I'm not sure
    exactly what you're trying to accomplish with this question though.

    Thanks,
    Jeff




--
Xingen Wang

Reply via email to