asterixdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Yingyi Bu <buyin...@gmail.com>
Subject Re: Questions of building record in AsterixDB
Date Fri, 29 Apr 2016 22:25:58 GMT
My answer is inlined.

>> My feeling is SerializerDeserializer offers another level of abstraction
>> but with output I can write value directly without construct AType
object.
>> I am wondering if there are any preferences over these two?

I agree with you. However, a SerializerDeserializer has to be stateless,
hence it cannot be used at runtime for complex type objects such as records
and lists,
because it will create a lot Java objects.

>> in other words, parser has to guarantee that the
>> processed records has to match the dataset definition(non-optional
>> attribute cannot have null value). I tried to assign null value to
non-null
>> attributes. It will be inserted successfully but read records will have
>> problem.

That sounds right to me.  Please file a JIRA issue and assign to you (
if you're working on that).
I'm guessing that you can do similar things to CastRecordDescriptor
if you want to handle general cases in that region.

>> 3. Set to null or skip
>> For optional(nullable) attributes, if I want to insert a record with null
>> value on that attribute. Should I assign null value or should I just skip
>> it? (Probably this is related to the missing attribute that Yingyi
>> mentioned today?)

Assign null value.
Missing means the field doesn't exist in a record at all.

Best,
Yingyi


On Fri, Apr 29, 2016 at 2:06 PM, Xikui Wang <xikuiw@uci.edu> wrote:

> Hi devs,
>
> I came across several questions while I was constructing records in
> AsterixDB.  Hope someone can help me clear the confusion. :)
>
> 1. Write directly to data output or use SerializerDeserializer
> I am working with AbstractDataParser now. I see people using different ways
> to append attributes to data output. Either use:
> output.Write(typetag.serialize());
> output.WriteInt(0);
> to write into data output directly, or
> use AInt8SerializerDeserializer.serialize(int8Serde) to serialize a AINT8
> instance to output. *SerializerDeserializer uses writeByte to write output.
>
> My feeling is SerializerDeserializer offers another level of abstraction
> but with output I can write value directly without construct AType object.
> I am wondering if there are any preferences over these two?
>
> 2. RecordType validation after parser but before add to frame?
> My observation is after parser finish writing the output and pass it to
> next level, there is no such validation that checks whether non-optional
> field is null or not. In other words, parser has to guarantee that the
> processed records has to match the dataset definition(non-optional
> attribute cannot have null value). I tried to assign null value to non-null
> attributes. It will be inserted successfully but read records will have
> problem.
>
> 3. Set to null or skip
> For optional(nullable) attributes, if I want to insert a record with null
> value on that attribute. Should I assign null value or should I just skip
> it? (Probably this is related to the missing attribute that Yingyi
> mentioned today?)
>
> Thanks for your help.
>
> Best,
> Xikui
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message