你是否对“Cassandra Day之路”有正确的理解?

首先

关于Cassandra Day的事情

今年的6月1日,Cassandra Day将在日本举办。去年,Cassandra Day已经在柏林、伦敦、阿姆斯特丹、河内、雅加达、休斯敦、圣克拉拉、西雅图和新加坡举办过。

为了本次在东京的举办,我们将发布有关Apache Cassandra的文章。

image.png

关于Apache Cassandra

如果要用一句话来概括,Apache Cassandra是一个开源的分布式数据库管理系统。

与其他分布式数据库管理系统类似,我们可以使用多个通用服务器来构建一个数据库(也可以仅使用一个服务器来满足开发等目的)。

在这里,我们将略去详细的解释,而将介绍的任务留给对此感兴趣的人,这部分可以通过官方网站或维基百科来了解。

 

关于数据库的分类

在这里,首先我们离开特定名词Cassandra。
对于对数据库进行分类的方法,有几个选择,但我们从中选取一个进行讨论。

列指向数据库和行指向数据库

常見的觀點

作为数据库的分类方法,可以分为列向数据库和行向数据库。

对于作为关系数据库(RDB)的行导向数据库,有时会将无数个NoSQL数据库无差别地称之为列导向数据库。

实际上,被称为“列式数据库”的数据库可以分为两种类型。

顺便提一下,在日语的维基百科中,虽然对这两者的差别进行了注意,但是使用了“列指向数据库管理系统”对应的“カラム指向データモデル”的表达方式。

在使用日语中,将“列”的本土词汇和外来词“カラム”的片假名拼写进行区分,我认为是一种主观且仅仅在日本国内成立的不充分表达。我认为这种区分并不准确,因为它并没有表示“数据模型”而是表示了“数据库管理系统内部的数据存储方式”。考虑到这一点,我想进行整理。

列(也可以称为“栏目”)指向有两个不同的意思。

首先,我认为将“列(column)导向”这个词普遍化整理一下,可能会得出以下结论。

    データの編成に列が重要な意味をもつ

这可以进一步分解为以下两个特征。

    • 列が「物理配置」に関係している

 

    列単位でのデータ「アクセス」(データの「集約」と呼ばれることも)に優れる

如果用一个普遍的表达来替代这句话,可以说,这适用于与“列”相关的许多数据库的说明。但是,实际上存在两种实体大不相同的类型。

在物理配置方面的差异

在物理配置方面,有以下两种类型。

    • A:各行毎に異なるファイルに格納されている。

 

    B:特定の項目(列)の値(とその並び順)によって、レコード(行)が、物理的に分割されている。

在数据访问方面的差异。

在自豪的数据访问方式中,有以下两种类型。

    • A:特定の列の値の「集計」

 

    B:特定の列の値による「レコード抽出」、「検索(とソート)」

在此,可能会使情况变得复杂化的是一个词,“集約”,有时会被用来解释B的意思(在日语中并不不自然,但可能有人会在听到“集約”一词时联想到“集計”的意思。如果非要寻找与英语的对应关系的话,可以考虑使用“集計(aggregation)”和“集約(consolidation)”。

专栏和宽栏

这段说明的目的是为了解开可能引起误解的部分,但可能对已经理解的人来说会感到有些繁琐。(需要至少九九十九天也许)

换句话说,通常用另一种普遍使用的语言来阐述,即如下所示。

    • A = カラムナー

 

    B = ワイドカラム

关于每个问题,我将试着用条目的形式进行整理。

在这里,我们可以将解释过的关于哪种访问方式卓越的要素解读为数据库设计目的的一部分。

专栏作家

    • オブジェクティブ:特定の列の値の「集計」

「天文学的(ヒューマン・リーダブルでない)」量のビッグデータを、人間にとって意味のある値に「集約」(和・平均・最大値などいわゆる集約関数の範疇)

行追加は高コスト(複数ファイルへの書き込み)
データは論理的に「過去」データ
代表的なデータベース(ストレージ):Google Bigquery、Amazon Athena、Cloudera Impala (Apache Avro, Apache Parquet, Apache ORC)

广播电视节目栏目

    • オブジェクティブ:特定の行の値による「検索(とソート)」

「無限にスケール(成長)」するデータの分散配置=探索経路最適化

行追加にコスト最適化(ソート順に追加書き込み)
「リアルタイム」データの扱いに優れる
代表的なデータベース:HBase、Cassandra

总结

最后终于到达了”Cassandra”。
即使有时会用同一个词”列指向”命名,但是,希望能够传达出列族和宽行的设计目的完全不同的信息。

当回顾自己的经历时,常常有这样的先入观念:“NoSQL”=“大数据”=“数据分析”=“信息系统”(实际上这个等式的联系程度会因个人和情况而有所不同)。如果再加上一点,“信息系统”=“可有可无”这样的等式,也许也可以。这与我前面整理的宽列目标非常不同。那么,宽列数据库在哪些具体场景中使用?如果有机会,我会再次演讲介绍。