Details

    • Bug
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Won't Fix
    • 10.0.3
    • None
    • None
    • MariaDB 10.0.3-MariaDB Cassandra 1.2  Rhat 6 64 bit

    Description

      Unable to access Cassandra engine - the following error:

      MariaDB [casstest]> create table t1 ( rowkey varchar(36) primary key,  data1 varchar(60), data2 bigint ) engine=cassandra  thrift_host='localhost' keyspace='mariadbtest2'column_family='cf1';
      ERROR 1429 (HY000): Unable to connect to foreign data source: connect() failed: Permission denied [1]
      MariaDB [casstest]>

      Cassandra working fine and MariaDB working fine, the integration is not working.

      Attachments

        Issue Links

          Activity

            Hello,

            This seems to be the problem with data model change in Cassandra 1.2.

            Cassandra 1.2 seems to have a split in the data model. One can have either:

            1. Old-style column family (that one creates with cassandra-cli
            or in CQL with "WITH COMPACT STORAGE" attribute)

            2. New-style column family (created with CREATE TABLE in CQL-3)

            Cassandra itself seems to be poor at interoperability: Thrift clients cannot
            access new-style column families. On the other hand, CQL-3 requires that all
            columns are pre-defined, which means you cannot use CQL-3 to read data that
            was inserted through Thrift.

            Cassandra SE uses Thrift and so is a victim of this mess.

            psergei Sergei Petrunia added a comment - Hello, This seems to be the problem with data model change in Cassandra 1.2. Cassandra 1.2 seems to have a split in the data model. One can have either: 1. Old-style column family (that one creates with cassandra-cli or in CQL with "WITH COMPACT STORAGE" attribute) 2. New-style column family (created with CREATE TABLE in CQL-3) Cassandra itself seems to be poor at interoperability: Thrift clients cannot access new-style column families. On the other hand, CQL-3 requires that all columns are pre-defined, which means you cannot use CQL-3 to read data that was inserted through Thrift. Cassandra SE uses Thrift and so is a victim of this mess.

            I have looked at what is required to update Cassandra SE. It seems that

            • We will still need to support Thrift (because some data can only be accessed through Thrift API)
            • We will need to use CQL to access new-style CQL column families.

            Thrift API has a execute_cql3() method, but the problem with it is that it is not possible to stream the resultset. The entire resultset will be materialized on a node in Cassandra cluster, then sent to MariaDB node, where thrift library will also materialize it before returning control to Cassandra SE. This means that attempt to run "SELECT * FROM cassandra_table" (without the implied "LIMIT 10K") will kill the node. (pure Thrift API supports streaming, current Cassandra SE will run this SELECT * query without consuming all of the memory).

            Cassandra 1.2 has a new network protocol for CQL. The protocol supports streaming. Datastax does not provide a C++ client library, but it seems there is a 3rd-party client library: https://github.com/mstump/libcql. I've just found it by googling so I don't have an idea whether this library is sufficient for Cassandra SE.

            psergei Sergei Petrunia added a comment - I have looked at what is required to update Cassandra SE. It seems that We will still need to support Thrift (because some data can only be accessed through Thrift API) We will need to use CQL to access new-style CQL column families. Thrift API has a execute_cql3() method, but the problem with it is that it is not possible to stream the resultset. The entire resultset will be materialized on a node in Cassandra cluster, then sent to MariaDB node, where thrift library will also materialize it before returning control to Cassandra SE. This means that attempt to run "SELECT * FROM cassandra_table" (without the implied "LIMIT 10K") will kill the node. (pure Thrift API supports streaming, current Cassandra SE will run this SELECT * query without consuming all of the memory). Cassandra 1.2 has a new network protocol for CQL. The protocol supports streaming. Datastax does not provide a C++ client library, but it seems there is a 3rd-party client library: https://github.com/mstump/libcql . I've just found it by googling so I don't have an idea whether this library is sufficient for Cassandra SE.

            Interesting read... It seems, DataStax intends to make a C++ client library: https://github.com/mstump/libcql/issues/16#issuecomment-19923916 ... and it is not clear how that will relate to libcql.

            psergei Sergei Petrunia added a comment - Interesting read... It seems, DataStax intends to make a C++ client library: https://github.com/mstump/libcql/issues/16#issuecomment-19923916 ... and it is not clear how that will relate to libcql.

            Sergei,

            Any updates on this bug - I have meetup coming up at Silicon Valley MySQL user group discussing this feature - MariaDB and Cassandra integration. Do we have an ETA on this by any chance?

            alex_accelerationdb Alex (Inactive) added a comment - Sergei, Any updates on this bug - I have meetup coming up at Silicon Valley MySQL user group discussing this feature - MariaDB and Cassandra integration. Do we have an ETA on this by any chance?

            Unfortunately, I cannot get any resources to continue to work on this. Changing the status to "Wont fix", because currently there are no plans for further development of Cassandra SE.

            psergei Sergei Petrunia added a comment - Unfortunately, I cannot get any resources to continue to work on this. Changing the status to "Wont fix", because currently there are no plans for further development of Cassandra SE.

            People

              psergei Sergei Petrunia
              alex_accelerationdb Alex (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.