What's the difference between creating a table and creating a columnfamily in Cassandra?

陌路散爱 提交于 2019-12-02 22:03:41

To answer the original question you posed: a column family and a table are the same thing.

  • The name "column family" was used in the older Thrift API.
  • The name "table" is used in the newer CQL API.

More info on the APIs can be found here: http://wiki.apache.org/cassandra/API

If you need to use "group by,order by,count,sum,ifnull,concat ,joins and some times nested querys" as you state then you probably don't want to use Cassandra, since it doesn't support most of those.

CQL supports COUNT, but only up to 10000. It supports ORDER BY, but only on clustering keys. The other things you mention are not supported at all.

Refer the document: https://cassandra.apache.org/doc/old/CQL-3.0.html

It specifies that the LRM of the CQL supports TABLE keyword wherever COLUMNFAMILY is supported.

This is a proof that TABLE and COLUMNFAMILY are synonyms.

In cassandra there is no difference between table and columnfamily. they are one concept.

Nativ

Column family are somewhat related to relational database's table, with a distribution differences and maybe even idealistic character.

Imaging you have a user entity that might contain 15 column, in a relational db you might want to divide the columns into small-related-column-based struct that we all know as Table. In distributed db such as Cassandra you'll be able to concatenate all those tables entry into a single long row, so if you'll use profiler/ db manager you'll see a single table with 15 columns instead of 2/3 tables. Another interesting thing is that every column family is written to different nodes, maybe on different cluster and be recognized by the row key, meaning that you'll have a single key to all the columns family and won't need to maintain a PK or FK for every table and maintain the relationships between them with 1-1, 1-n, n-n relations. Easy!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!