Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id B4DEC200B48 for ; Mon, 18 Jul 2016 19:46:22 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id B3862160A65; Mon, 18 Jul 2016 17:46:22 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 15E6E160A87 for ; Mon, 18 Jul 2016 19:46:21 +0200 (CEST) Received: (qmail 16825 invoked by uid 500); 18 Jul 2016 17:46:21 -0000 Mailing-List: contact dev-help@avro.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@avro.apache.org Delivered-To: mailing list dev@avro.apache.org Received: (qmail 16776 invoked by uid 99); 18 Jul 2016 17:46:21 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 18 Jul 2016 17:46:21 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id CBD522C142E for ; Mon, 18 Jul 2016 17:46:20 +0000 (UTC) Date: Mon, 18 Jul 2016 17:46:20 +0000 (UTC) From: "Doug Cutting (JIRA)" To: dev@avro.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (AVRO-1704) Standardized format for encoding messages with Avro MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Mon, 18 Jul 2016 17:46:22 -0000 [ https://issues.apache.org/jira/browse/AVRO-1704?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15382696#comment-15382696 ] Doug Cutting commented on AVRO-1704: ------------------------------------ I doubt we'll ever need this abstracted, and having it so might encourage a proliferation of message formats, but it might also prove useful someday, so I can live with that. However I still don't see the need for multiple levels of abstraction (interface + abstract base class). That still seems like vast overkill to me, but is probably not worth fighting about. As far as terminology, "datum" is used to refer to the in-memory data structure (generic, specific, reflect, Thrift, protobuf) while "encode/decode" refer to specific serialized formats (binary, json). A reader/writer translates between the in-memory structure and the abstract encoding API. So where does "message" fit into this taxonomy? I suppose it's a new serialized format, an extension of "binary", so "encode/decode" are probably more appropriate than "read/write". Not sure what you mean about the builder. > Standardized format for encoding messages with Avro > --------------------------------------------------- > > Key: AVRO-1704 > URL: https://issues.apache.org/jira/browse/AVRO-1704 > Project: Avro > Issue Type: Improvement > Reporter: Daniel Schierbeck > Assignee: Niels Basjes > Fix For: 1.9.0, 1.8.3 > > Attachments: AVRO-1704-2016-05-03-Unfinished.patch, AVRO-1704-20160410.patch > > > I'm currently using the Datafile format for encoding messages that are written to Kafka and Cassandra. This seems rather wasteful: > 1. I only encode a single record at a time, so there's no need for sync markers and other metadata related to multi-record files. > 2. The entire schema is inlined every time. > However, the Datafile format is the only one that has been standardized, meaning that I can read and write data with minimal effort across the various languages in use in my organization. If there was a standardized format for encoding single values that was optimized for out-of-band schema transfer, I would much rather use that. > I think the necessary pieces of the format would be: > 1. A format version number. > 2. A schema fingerprint type identifier, i.e. Rabin, MD5, SHA256, etc. > 3. The actual schema fingerprint (according to the type.) > 4. Optional metadata map. > 5. The encoded datum. > The language libraries would implement a MessageWriter that would encode datums in this format, as well as a MessageReader that, given a SchemaStore, would be able to decode datums. The reader would decode the fingerprint and ask its SchemaStore to return the corresponding writer's schema. > The idea is that SchemaStore would be an abstract interface that allowed library users to inject custom backends. A simple, file system based one could be provided out of the box. -- This message was sent by Atlassian JIRA (v6.3.4#6332)