PartiQLを使えばNoSQLをSQL互換で操作できるらしいが、これからはNewSQLという選択肢もあり得る?

f:id:ts0818:20201129131305j:plain

stone circle is a circular alignment of standing stones. They are commonly found across Northern Europe and Great Britain, and typically date from the Late Neolithic and Early Bronze Age eras, with most concentrations appearing from 3000 BCE. The best known examples include those at the henge monument at Avebury, the Rollright Stones, and elements within the ring of standing stones at Stonehenge. Ancient stone circles appear throughout Europe, with many existing in the Pyrenees, on the Causse de Blandas in southern France in the Cevennes, in the Alps, Bulgaria, and Poland. Another type can be found in the Horn of Africa.

https://en.wikipedia.org/wiki/Stone_circle

⇧紀元前3000年代が発祥と推測されてる「stone circle」ですが、何のために構築されたかは未だによく分かっていないようですね。

地域的には「欧州」「アフリカ」に残されてるそうな。

「円形に石を配置」っていう「インターフェイス」は共通しとるみたいね。

By the way、

article.auone.jp

日本ではあまり知られていないけれど、世界で注目されている企業、それがShopify(ショッピファイ)です。企業のECサイト開発・運営を手がけている同企業によって、ルイ・ヴィトン、ディズニーやナイキ、ワークマンなど、いま多くの企業が「アマゾンにはもう出店しない」と宣言し始めています。

Amazonが危機? Shopifyの実力|au Webポータル経済・ITニュース

⇧「オンラインショッピング」に出店してる「企業」の「AWS」への評判が宜しくないという風潮が出始めているらしい。

ただ、上記の記事からは、「AWS」に不満を持つ理由が明らかにされてはいないのですが...

まぁ、「AWS」も最近、不透明なやり取りをしてたようですし、

www.j-cast.com

   アマゾンジャパンの広報部は6日、取材に対し、「さまざまな会社と契約しており、契約の見直しは随時行っております。個別の会社との契約状況については開示できません」と契約解除を否定も肯定もしなかった。

アマゾンと配送業者に契約トラブル、ドライバー悲鳴 「この配送センターはつぶれます」「いきなり無職に」: J-CAST ニュース【全文表示】

⇧上記のような不誠実な対応を見るに、「顧客離れ」はブーメランのようなもんかね。企業の規模が大きくなると、「顧客との信頼」は蔑ろにされるんですかね。


今回も関係ない話で始まりましたが、「PartiQL」ってものについて調査してみました。レッツトライ~。 

 

NoSQLって?

Wikipediaさんによりますと、

NoSQL(一般に "Not only SQL" と解釈される)とは、関係データベース管理システム (RDBMS) 以外のデータベース管理システムを指すおおまかな分類語である。

NoSQL - Wikipedia

関係データベースを杓子定規に適用してきた長い歴史を打破し、それ以外の構造のデータベースの利用・発展を促進させようとする運動の標語としての意味合いを持つ。関係モデルではないデータストアの特徴として、固定されたスキーマに縛られないこと、関係モデルの結合操作を利用しないこと(場合によっては単にそのような機能が欠落しているだけ)、水平スケーラビリティが確保しやすい事が多いこと、トランザクション処理を利用できないものが多いことなどが挙げられる。

NoSQL - Wikipedia

学術的な世界では、この種のデータベースのことを構造型ストレージ (structured storage) と呼ぶことが多い。

NoSQL - Wikipedia

⇧ ってな感じで、「関係モデルの結合」「トランザクション処理」 なんかは苦手なんだとか。その代わりに「水平スケーラビリティ」が得られやすいのですと。

 

どんな用途に向いてるのかについては、 

NoSQL系データベース管理システムは、データの格納および取得が高度に最適化されているものが多い。その最適化のために機能性を最小限にしているものもある。その最たる例が、「値」およびそれを取得するための「キー」だけを格納できるKey-Value型データベースである。NoSQL系データベースは、関係データベースのような汎用性は欠くものの、その制約された条件下ではRDBMSより高いパフォーマンスを持つ。そのためビッグデータ系ソリューションでしばしば活用される。

NoSQL - Wikipedia 

NoSQL系データベース管理システムが有用な場面は、関係モデルを必要としないデータを扱う時や、大量のデータを扱う時である。用途は多様であり、数百万のkey-valueペアを格納したり、数10個程度の連想配列を格納したり、数百万の構造的データを格納したりと、様々に使われる。この構造は、大規模なデータを統計的に解析したり、増えつづける情報をリアルタイムに解析するのにも便利である。

NoSQL - Wikipedia

⇧「ビッグデータの活用」一択と言っても過言ではないのではないかという程、とにかく大量のデータを扱う場合に適しているんだと。

産業界での有名な実装として、GoogleBigTableアマゾンAmazon DynamoDBなどがある。オープンソースの実装も数多く存在し、例えばMongoDBRedisApache HBaseHypertableApache Cassandraなどがある。

NoSQL - Wikipedia

⇧「NoSQL」としては上記が有名どころっすかね。

「NoSQL」のデータモデルとしては、

thinkit.co.jp

f:id:ts0818:20201129140439p:plain
この他にも、複数のデータモデルに対応するマルチモデル型のNoSQLもあります。

HBaseの概要とアーキテクチャ | Think IT(シンクイット)

⇧ 上図のように、4つが代表的なんだそうな。

棲み分けとしては、

⇧ 上図のようになるようです。

 

 

NewSQLって?

「NoSQL」の良いところと「RDBMS(Relational DataBase Management System)」の良いところのどっちもあったら良いのにな~、というご要望に応えようとしたのが、「NewSQL 」ってことみたい。

NewSQL is a class of relational database management systems that seek to provide the scalability of NoSQL systems for online transaction processing (OLTP) workloads while maintaining the ACID guarantees of a traditional database system.

https://en.wikipedia.org/wiki/NewSQL

Many enterprise systems that handle high-profile data (e.g., financial and order processing systems) are too large for conventional relational databases, but have transactional and consistency requirements that are not practical for NoSQL systems.

https://en.wikipedia.org/wiki/NewSQL

The only options previously available for these organizations were to either purchase more powerful computers or to develop custom middleware that distributes requests over conventional DBMS. Both approaches feature high infrastructure costs and/or development costs. NewSQL systems attempt to reconcile the conflicts.

https://en.wikipedia.org/wiki/NewSQL

⇧「エンタープライズ」系のシステムにとって「RDBMS(Relational DataBase Management System)」のような「トランザクション処理」は必須なんだけど、「エンタープライズ」系のシステムが扱うデータが大きくなり過ぎて、「NoSQL」のような「スケーラビリティ」 が欲しいけど、「NoSQL」は「トランザクション処理」利用できないこと多いしな、悩ましいな~、ってのを解決するってのが「NewSQL」の目指すところみたいね。

 

「NewSQL」については、

qiita.com

⇧ 上記サイト様がまとめてくださってます。

スライドも公開してくれてるようです。

⇧ 2020年時点の「NewSQL」としては、

  • Google Cloud Spanner
  • CockroachDB
  • TiDB
  • YugaByteDB

がメジャーどころらしい。

「NewSQL」自体は、2011年頃には既に存在したらしいのですが、

2012年に"Spanner: Google’s Globally Distributed Database"として論文が発表され、Google内部で利用されていたが、2017年からはGoogle Cloud Spannerとして一般ユーザも利用可能となっている。

2020年現在のNewSQLについて - Qiita

⇧ 開発が進んだ契機としては、Google の貢献によるところが大きいようです。

 

PartiQLって?

「NoSQL」は「SQL(Structured Query Language)」 の文法が使えないらしいという。

sikushima.hatenablog.com

 逆に、NoSQLを採用すれば、今度はRDBMSが自動で行ってきた処理を、別途、構築する必要が出てきます。

NoSQLとSQLについて - SQLer 生島勘富 のブログ

⇧ う~ん、学習コストはどのぐらいになるのかしら...

ただ、最近、「SQL」の文法で「NoSQL」を操作できるっていう「PartiQL」というものがあることを知ったのですが、

www.publickey1.jp

AWSはNoSQLデータベースサービスのDynamoDBが、SQLで操作可能になるSQL互換のクエリ言語「PartiQL」に対応したことを発表しました

AWS、DynamoDBをSQLで操作可能に。SQL互換のクエリ言語「PartiQL」対応を発表 - Publickey

⇧ ということらしい。

というか、「NoSQL」側が歩み寄ったわけね。「NoSQL」を使ったことが無いので推測でしかないのだけど、操作しにくいって声が多かったのかな?

 

「PartiQL」は何なのか?

partiql.org

SQL-compatible access to relational, semi-structured, and nested data.

https://partiql.org/

⇧「SQL互換アクセス」を可能にするんだと。

AWSの対応を見る限り、「PartiQL」を「NoSQL」に対応させるには、各々の「NoSQL」側で対応してもらうしかない感じっぽいですね。

partiql.org

PartiQL is a language that provides SQL-compatible unified query access across multiple data stores containing structured tabular data (as in SQL), in addition to semi-structured and nested data. PartiQL is already adopted by multiple AWS services (Amazon S3 Select, Amazon Glacier Select, Amazon Redshift Spectrum, Amazon Quantum Ledger Database) and Amazon internal systems. More AWS services will follow along with third party database engines.

https://partiql.org/charter.html

⇧ 現状、「PartiQL」に対応できてる全量については確認できませんが、直近だと「NoSQL」の1つである「DynamoDB」の対応は済んだということみたいね。

 

「PartiQL」は「AWS」が開発したものらしいですが、「PartiQL」を使えば、データを操作するためのインターフェイスを統一できるんだそうな、

aws.amazon.com

⇧ つまり「SQL」文っぽい記述でデータを操作できるってことみたい、「SQL互換アクセス」を謳ってますし。

「PartiQL」の記述(ソースコード)は、

⇧上記のようなイメージで処理されるんだそうな。

 

 まぁ、「NoSQL」も「NewSQL」も使ったことはないんだけど、「PartiQL」を利用すれば、「NoSQL」が「SQL互換」で操作できるってことみたいなので、機会を見つけて「NoSQL」デビューしてみますかね。

何はともあれ「インターフェイス」を共通化するって大事よね。

今回はこのへんで。