NoSQLをRDBの代わりに使うと、どういう恐ろしいことが起こるか。PARTAKEの作者が語る

2010年12月21日


NoSQLBigTableFacebookTwitterCassandraAmazonSimpleDB使

NoSQL使 Shinya KawanakaCassandra使

NoSQL 

NoSQL使


NoSQLRDB使
NoSQL fig1

PARTAKENoSQL

Apache Cassandra 0.6使

1
NoSQL fig2

NoSQL






NoSQL fig3

Cassandraでは、新しいKeyの追加が必要。インデックスを増やす代わりに、新しくテーブルを増やすようなもの(Cassandra 0.7ではSecondary Indexにより若干改善されている)。

NoSQL fig4

恐ろしい事例2つ目。

NoSQL fig5

2つ以上のキーを同時に更新したい場合。片方を更新後にクラッシュしたとする。

NoSQL fig6

CassandraCommitRollbackCassandraReplay

3Cassandra
NoSQL fig7

複数のクライアントからほぼ同時にカウントアップの処理がきたとき、Cassandra内できちんと整合性を保証することは難しい。本当に必要なら、分散ロックを導入し、速度を犠牲にする実装を自分でしなければならない。

NoSQL fig8

ただし0.8系でやっと数が数えられるというウワサも。

まとめ。「NoSQL = Domain Specific Database」(目的特化型データベース)だ。

NoSQL fig9

PARTAKEPARTAKE使


PARTAKEShinya KawanakaNoSQL

 NoSQL 

NoSQL = Domain Specific DatabaseNoSQLCassandra0.7Secondary Index

  PARTAKE

NoSQLPARTAKE

 NoSQL RDBNoSQL使NoSQLdiss

NoSQLCriticalRDBRDB

 NoSQL使PARTAKE

PARTAKE使Toy Application

Google App EngineBigTableRDB

PARTAKECassandra1@mayahjp


NoSQL3 from Shinya Kawanaka 

 2017/12/5Partake


Kent BeckNoSQL


NoSQLCAP


NoSQLInfoQNoSQLNoSQL

あわせて読みたい

NoSQL データベース Cassandra




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed


10


Stack Overflow6IT使JavaScriptPostgreSQL1Stack Overflow 2024 Developer Survey
GoogleBILooker StudioGemini in Looker
Docker Desktop 4.32AWSAzureCompose File
GoogleAIUIAI Generated UI
GoogleAIProject Oscar
AWSMySQLODBCAmazon AuroraAWSIAM
AIEinstein Service AgentSalesforce
GitLabDatadogCEO
Google DocsMarkdown
PostgreSQLCharmed PostgreSQLCanonical