On 03/28/2014 11:29 AM, Serge Kovaleff wrote:
Hi Iliia,

I would take a look into BSON http://bsonspec.org/

Cheers,
Serge Kovaleff

On Thu, Mar 27, 2014 at 8:23 PM, Illia Khudoshyn <ikhudos...@mirantis.com <mailto:ikhudos...@mirantis.com>> wrote:

    Hi, Openstackers,

    I'm currently working on adding bulk data load functionality to
    MagnetoDB. This functionality implies inserting huge amounts of
    data (billions of rows, gigabytes of data). The data being
    uploaded is a set of JSON's (for now). The question I'm interested
    in is a way of data transportation. For now I do streaming HTTP
    POST request from the client side with gevent.pywsgi on the server
    side.

    Could anybody suggest any (better?) approach for the
    transportation, please?
    What are best practices for that.

    Thanks in advance.

--
    Best regards,

    Illia Khudoshyn,
    Software Engineer, Mirantis, Inc.

    38, Lenina ave. Kharkov, Ukraine

    www.mirantis.com <http://www.mirantis.ru/>

    www.mirantis.ru <http://www.mirantis.ru/>

    Skype: gluke_work

    ikhudos...@mirantis.com <mailto:ikhudos...@mirantis.com>


    _______________________________________________
    OpenStack-dev mailing list
    OpenStack-dev@lists.openstack.org
    <mailto:OpenStack-dev@lists.openstack.org>
    http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev




_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
Hi Iliia,
I guess if we a talking about cassandra batch loading the fastest way is to generate sstables locally and load it into Cassandra via JMX or sstableloader
http://www.datastax.com/dev/blog/bulk-loading

If you want to implement bulk load via magnetodb layer (not to cassandra directly) you could try to use simple tcp socket and implement your binary protocol (using bson for example). Http is text protocol so using tcp socket can help you to avoid overhead of base64 encoding. In my opinion, working with HTTP and BSON is doubtful solution because you wil use 2 phase encoddung and decoding: 1) "object to bson", 2) "bson to base64", 3) "base64 to bson", 4) "bson to object" 1) "obect to json" instead of 1) "object to json", 2) "json to object" in case of HTTP + json

Http streaming as I know is asynchronous type of http. You can expect performance growing thanks to skipping generation of http response on server side and waiting on for that response on client side for each chunk. But you still need to send almost the same amount of data. So if network throughput is your bottleneck - it doesn't help. If server side is your bottleneck - it doesn't help too.

Also pay your attention that in any case, now MagnetoDB Cassandra Storage convert your data to CQL query which is also text. It would be nice to implement MagnetoDB BatchWriteItem operation via Cassandra sstable generation and loading via sstableloader, but unfortunately as I know this functionality support implemented only for Java world

--
Best regards,
Dmitriy Ukhlov
Mirantis Inc.

_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to