一网打尽18种主流数据库:12种SQL+6种NoSQL
还记得两三年前仅有几家云计算平台供应商可供选择的时候,似乎市场上也没有多少云数据库。但是云蓬勃发展之后,云数据库也呈现雨后春笋之势。而哪些是真正可靠而易用的,对用户而言,并不好分析。所以,本文分析了18种数据库的可用性以及应用方向(注意,这
还记得两三年前仅有几家云计算平台供应商可供选择的时候,似乎市场上也没有多少云数据库。但是云蓬勃发展之后,云数据库也呈现雨后春笋之势。而哪些是真正可靠而易用的,对用户而言,并不好分析。所以,本文分析了18种数据库的可用性以及应用方向(注意,这里说的管理数据库服务,不是仍然需要用户管理和实施的数据库实例)。仍有不足之处,希望听到大家更多的评论。
SQL services
1.Amazon Relational Database Service(RDS)
AWS的RDS是第一个云数据库服务,也是目前最完整的数据库服务。如同AWS的大部分服务一样,其作为AWS的管理接口,可以兼容大部分AWS所提供的其他云计算服务。其最初仅是为了AWS自身掌握和管理MySQL服务而存在,而现在RDS还支持Microsoft SQL Server或Oracle Database。这一消息在2012年5月由AWS博客发布,当时称Microsoft SQL Server将成为RDS的一部分。当然,业内分析者认为这是亚马逊为了避免用户认为“被迫绑定”而做出的妥协与让步。用户可以运行装载在Amazon EC2上的Windows SQL Server实例,但是这些操作需要DBA经验以及对工作负荷管理有清晰认识。而RDS则提供了更易实现的管理数据库服务。
2.Clustrix Database as a Service
不久前,数据库厂商Clustrix刚加入云,但其在云计算方面早有积累。其服务,可以运行在Rackspace Cloud,为用户提供高性能的固态硬盘,可靠的single-tenant部署,以及弹性MySQL(旗舰版)。Clustrix称其适合在OLTP(联机事务处理)和OLAP(联机分析处理)的应用,并可以利用2500个以上的指标来监测系统。
3.EnterpriseDB Postgres Plus Cloud Database
EnterpriseDB是商业化Post greSQL数据库,由Postgres Plus提供的基于云的旗舰版产品。其目标是企业开发商,Postgres Plus Cloud包含高可用群集、高连接数和与Oracle的高兼容性。
4.FathomDB
有些读者对FathomDB的印象还停留在作为Rackspace的合作伙伴,FathomDB与AWS当时新的RDS相竞争。但现在,FathomDB仍然存在,但却是作为开源其原有技术以帮助开发者建立任何服务而不仅局限在托管数据库服务方面。据悉,该公司正在开发下一代数据库服务,持续关注。
5.Google Cloud SQL
Google Cloud SQL不是最丰富的数据库,但是也有其独到之处。首先,其与谷歌其他云服务能够集成,并实现轻松互动;其次,凭借谷歌在云计算的名气,Cloud SQL很容易在区域中复制,效用最大。虽然目前其仅支持Java和Python的开发应用,且实例受限于10GB存储容量。
6.Heroku Postgres
Heroku Postgres是PaaS平台——Heroku的内部PostgresSQL数据库。其设计是为了可靠性而后数据保护(Heroku声称可以达到99.99%的正常运行时间,并准备实现99.9999999999%(小数点后还有9个9,数据持久性),且不需要通过PaaS平台,将经验传递给开发者。Heroku Postgres还有一个有趣的功能——数据夹。其允许用户通过URL将一个SQL查询结果发送给其他人。
7.HP Cloud Relational Database for MySQL
显然,这个名字还没有准备好。因为其仍处于内测阶段,还有很多工作要做,很多功能需要添加。作为构建在OpenStack上的一个MySQL分布,理论上看,将一个数据库业务一朵云移到另一朵上更为容易。
8.IBM SmartCloud Application Services
如同HP的云数据库一样,IBM的云数据库也在建设中。详细的具体特点还比较少。但是相比其他,IBM SmartCloud Application Services是建立在IBM DB2的基础上,作为IBM PaaS平台——SmartCloud Application Service的一部分来提供,目前也在测试阶段。
9.Microsoft SQL Database
其前身是SQL Azure,在微软新的重点策略——混合云中,SQL Database是一个关键关键组成部分。其既可以作为一个独立的云数据库使用,也可以提供Microsoft SQL Server的用户共同体验,以及允许在本地服务器数据库上的数据共享。SQL Database还提供了一种选择,使得在同一公司基础设施架构中,与其他数据库部署同步。
10.Oracle Database Cloud Service
并非适合每个人,但是对于现有的使用Oracle数据库的用而言,如果想要选择云主机就要感谢Oracle Database Cloud Service的存在了。毕竟,声称其所有功能和性能都与Oracle Database 11g Release 2相当。不过其定价并不明确,每月付费金额是基于数据库大小的,而长期合同则估计要单独确定。
11.Rackspace Cloud Databases
Cloud Databases是Rackspace最新增加的在线数据库服务,一开始就建立在OpenStack平台上。在早期接入方式上,用户很难使用SLAs或云主机相关功能(如监测、备份或图形用户界面)。但受益于基于虚拟化和存储区域网络体系架构,这些用户得到了高性能和可靠性的的服务承诺。
12.Xeround
服务于亚马逊RDS,Xeround可能是市场上最受欢迎的云数据库之一。其也是最灵活的云数据库,基于MySQL的服务可以部署在任何公有云拼图,比如AWS,Rackspace,Joyent,Heroku等。Xeround声称自动缩放是其主要的一个优势,基于MySQL前端架构设计使得其理论上可以支持多种数据库选项,较为独特。
NoSQL services
1.Amazon DynamoDB
DynamoDB是亚马逊今年2月发布的NoSQL产品,其本身基于原始的Dynamo kay-value,最初是为了满足公司内部需求。具体看,就是设计网页或大数据应用时满足快速访问数据和及时实现部署的弹性收放。DynamoDB建立在SSD结构上,并自动实现数据添加功能。据悉,DynamoDB是一个共享型的数据库云服务。所谓共享型的数据库云服务,是指一台机器上的CPU、内存及磁盘资源会给多用户使用。按照AWS CTO Werner Vogels的说法:“DynamoDB是一个性能好、可靠高且具有可扩展性的NoSQL云数据库服务,DynamoDB集15年分布式非关系性数据库开发之精粹,又通过内部使用考验,是AWS团队精心打造的产品。”事实上,在AWS首页的Database列表中,只能看到RDS和DynamoDB,显然DynamoDB已经替换了SimpleDB原来在这个列表中的位置。详细对比可见《程序员文章》解析DynamoDB
2.Amazon ElastiCache
Amazon ElastiCache不是技术上的NoSQL服务,但是其完全可以实现为开发者提供类似Memcached管理服务,以确保用户可以在MySQL部署尽可能快地使用数据。Memcached已被诸多网络所应用,包括Facebook。据了解,Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
3.Cloudant
虽然Cloudant基于开源的CouchDB架构的数据库平台,但其自己认为自己并非是NoSQL服务,而仅是一个数据层。其通过收集全球各地的云供应商的资源来提供可预见的扩展性NoSQL存储,并内置了MapReduce analytics engine。这也是农业企业巨头——Monsanto采用Cloudant来支持其基因架构的一个原因。
从应用来看,Cloudant的数据存储方案更加适合分布式产生的数据,比如传感网、web服务器、移动设备服务等等。
4.Database.com
作为Salesforce.com的独立数据库服务,Database.com不是NoSQL,也不是SQL。可以确定的是,多租户数据库架构也是为Salesforce.com的CRM和Force.com平台而服务的。其存储的数据类型非常多,包含非结构数据,专为但不仅局限于为Salesforce.com服务。
5.Microsoft Windows Azure Table Storage
这是专为Windows Azure而存在的NoSQL数据存储,其目的是为了方便查询数百万TB非关系型数据。因为其是 Windows Azure Storage的一部分,平均每个账户总数据库最大不超过100TB(Blob,Table和Queue storage)。
6.MongoHQ/MongoLab
MongoDB是迄今为止最流行的NoSQL数据库,其可以承担起管理云的重任。因此,围绕在MongoDB周围有很多服务,其中MongoHQ/MongoLab是最广为人知的。其应用场景很简单:快速部署、全面监测与实现高可靠性。二者都是通过提供共享和专用产品的方式来吸引更多用户。
显然,作者Derrick Harris 没有花费笔墨来描述Oracle、SQLServer、Symfoware、DB2、Sybase等更多耳熟能详的数据库,但作为目前市场主流的这18种创新数据库,与云计算的关系无疑更为紧密。(郭雪梅/编译)
cloud-databases-101

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go 言語は、効率的かつ簡潔で習得が容易なプログラミング言語であり、同時プログラミングやネットワーク プログラミングに優れているため、開発者に好まれています。実際の開発ではデータベースの操作が欠かせませんが、今回はGo言語を使ってデータベースの追加・削除・変更・クエリ操作を実装する方法を紹介します。 Go 言語では、データベースを操作するために通常、よく使用される SQL パッケージや gorm などのサードパーティ ライブラリを使用します。ここでは SQL パッケージを例として、データベースの追加、削除、変更、クエリ操作を実装する方法を紹介します。 MySQL データベースを使用していると仮定します。

Apple の最新リリースの iOS18、iPadOS18、および macOS Sequoia システムでは、さまざまな理由で紛失または破損した写真やビデオをユーザーが簡単に回復できるように設計された重要な機能が写真アプリケーションに追加されました。この新機能では、写真アプリのツール セクションに「Recovered」というアルバムが導入され、ユーザーがデバイス上に写真ライブラリに含まれていない写真やビデオがある場合に自動的に表示されます。 「Recovered」アルバムの登場により、データベースの破損、カメラ アプリケーションが写真ライブラリに正しく保存されない、または写真ライブラリを管理するサードパーティ アプリケーションによって失われた写真やビデオに対する解決策が提供されます。ユーザーはいくつかの簡単な手順を実行するだけで済みます

Hibernate ポリモーフィック マッピングは、継承されたクラスをデータベースにマップでき、次のマッピング タイプを提供します。 join-subclass: 親クラスのすべての列を含む、サブクラス用の別個のテーブルを作成します。 table-per-class: サブクラス固有の列のみを含む、サブクラス用の別個のテーブルを作成します。 Union-subclass: join-subclass と似ていますが、親クラス テーブルがすべてのサブクラス列を結合します。

MySQLi を使用して PHP でデータベース接続を確立する方法: MySQLi 拡張機能を含める (require_once) 接続関数を作成する (functionconnect_to_db) 接続関数を呼び出す ($conn=connect_to_db()) クエリを実行する ($result=$conn->query()) 閉じる接続 ( $conn->close())

HTML はデータベースを直接読み取ることはできませんが、JavaScript と AJAX を通じて実現できます。この手順には、データベース接続の確立、クエリの送信、応答の処理、ページの更新が含まれます。この記事では、JavaScript、AJAX、および PHP を使用して MySQL データベースからデータを読み取る実践的な例を示し、クエリ結果を HTML ページに動的に表示する方法を示します。この例では、XMLHttpRequest を使用してデータベース接続を確立し、クエリを送信して応答を処理することで、ページ要素にデータを埋め込み、データベースを読み取る HTML の機能を実現します。

PHP でデータベース接続エラーを処理するには、次の手順を使用できます。 mysqli_connect_errno() を使用してエラー コードを取得します。 mysqli_connect_error() を使用してエラー メッセージを取得します。これらのエラー メッセージをキャプチャしてログに記録することで、データベース接続の問題を簡単に特定して解決でき、アプリケーションをスムーズに実行できるようになります。

Golang でデータベース コールバック関数を使用すると、次のことを実現できます。 指定されたデータベース操作が完了した後にカスタム コードを実行します。追加のコードを記述せずに、個別の関数を通じてカスタム動作を追加します。コールバック関数は、挿入、更新、削除、クエリ操作に使用できます。コールバック関数を使用するには、sql.Exec、sql.QueryRow、または sql.Query 関数を使用する必要があります。

Go 標準ライブラリのデータベース/SQL パッケージを通じて、MySQL、PostgreSQL、SQLite などのリモート データベースに接続できます。データベース接続情報を含む接続文字列を作成します。 sql.Open() 関数を使用してデータベース接続を開きます。 SQL クエリや挿入操作などのデータベース操作を実行します。 defer を使用してデータベース接続を閉じ、リソースを解放します。
