cari
Rumahpangkalan datatutorial mysqlNoSQL数据库面面观

http://www.infoq.com/cn/news/2013/11/introducing-nosql Alexey Vasiliev是一位知名的Web开发者与Linux系统管理员,曾参与开发过多个项目,如falcon、mongodb_logger、sht_rails及piro等项目。近日,Vasiliev就当前各种NoSQL数据库的优势与劣势撰文进行了

http://www.infoq.com/cn/news/2013/11/introducing-nosql


Alexey Vasiliev是一位知名的Web开发者与Linux系统管理员,曾参与开发过多个项目,如falcon、mongodb_logger、sht_rails及piro等项目。近日,Vasiliev就当前各种NoSQL数据库的优势与劣势撰文进行了详尽的分析。这些分析与比较将会对广大开发者项目的NoSQL数据库选型提供一定的帮助与指导作用。

NoSQL数据库现在已经变得非常流行了,在NoSQL这个大概念下实际上包含了大量的方式与项目,旨在实现各种数据库模型,他们与传统的关系型数据库管理系统存在着非常大的差别,而传统的关系型数据库系统是通过SQL的方式来访问数据的。在NoSQL领域中,传统观念中的模式可以通过不同的数据结构来实现,如散列表、数组、树、图等等。

术语“NoSQL”最早出现在上个世纪90年代末期,然而真正为大家所熟知则是在2009年中期。起初,它只是由Carlo Strozzi创建的一个小型开源数据库,将所有数据以ASCII文件的形式存储,并使用shell脚本而非SQL来访问这些数据。这个数据库与当前的“NoSQL”概念并没有任何相似之处。

Johan Oskarsson在2009年6月于旧金山组织了一场会议,讨论IT市场的新技术、数据存储与处理等主题。之所以会举办这场会议的主要原因在于BigTable和Dynamo等新产品的出现。“NoSQL”这个术语则是由来自RackSpace的Eric vans提出的。这个术语原本就是用在这场会议当中的,也没有什么更深层次的含义。不过最后的结果却是它迅速在互联网上蔓延开来,成为IT领域的一个新趋势。随后,Pramod J.Sadalage与Martin Fowler编写了“NoSQL Distilled”一书,旨在对日益庞大的NoSQL世界进行组织。

现在大约有150多种NoSQL数据库(nosql-database.org),下面就来探讨一下NoSQL的主要发展方向。

列簇存储

面向列的DBMS是这样一种数据库管理系统,它将数据表存储为数据列而非行的形式。从物理上来说,表是列的集合,每一列从本质上来说都是只有一个字段的表。这些数据库通常用于分析系统、商业智能与分析型数据存储。

优点:

  • 可以比较数据,因为在表的一列中,数据通常都是同种类型的。
  • 可以通过便宜、性能一般的硬件实现高速的查询性能;由于压缩的原因,相对于关系型数据库来说,这种方式磁盘上的数据所占据的空间要少5到10倍。

缺点:

  • 通常没有事务。
  • 对于熟悉传统RDBMS的开发者来说存在不少限制。

典型代表:

  • HBase
  • Cassandra
  • Accumulo
  • Amazon SimpleDB

键值存储

你可以通过这种数据库将键值对存储到持久化存储中,随后使用键来读取值。那么对于这种初看起来用途非常有限的解决方案来说有哪些好处呢?在根据键来保存/读取值时,系统是非常高效的,因为它没有SQL处理器、索引系统以及分析系统等诸多限制。这种解决方案提供了最高效的性能,代价最低的实现以及可伸缩性。

优点:

  • RDBMS太慢了,SQL游标的负担过于沉重。
  • 采用RDBMS的解决方案来存储少量数据的代价有些大。
  • 没必要使用SQL查询、索引、触发器、存储过程、临时表、表单以及视图等等。
  • 由于其轻量级的设计,键值数据库可以很容易实现可伸缩性以及高性能。

缺点:

  • 关系型数据库的限制可以从底层就确保数据的完整性,而键值存储就没有这些限制,数据的完整性是由应用来控制的。在这种情况下,数据的完整性可能会由于应用代码的错误而做一些妥协。
  • 在RDBMS中,如果模型设计良好,那么数据库的逻辑结构就能完全反映出存储数据的结构,并且与应用的结构有所不同(数据是独立于应用的)。对于键值存储来说,要想取得这种效果是非常困难的事情。

典型代表:

  • Amazon DynamoDB
  • Riak
  • Redis
  • LevelDB
  • Scalaris
  • MemcacheDB
  • Kyoto Cabinet

文档存储

文档存储指的是用于存储、搜索与管理面向文档的信息(半结构化数据)的程序,其中心概念就是文档。具体的面向文档数据库的实现是不同的,不过总的来说,他们都会以各种标准化格式对数据(文档)进行封装与加密,主要格式有XML、YAML、JSON、BSON、PDF等等。

优点:

  • 足够灵活的查询语言。
  • 易于水平扩展。

缺点:

在很多时候原子性是得不到保障的。

典型代表:

  • MongoDB
  • Couchbase
  • CouchDB
  • RethinkDB

图型数据库

图型数据库指的是使用图结构的数据库,通过结点、边与属性来表示和存储数据。根据定义,图型数据库是一种提供了无需索引而彼此邻接的存储系统。这意味着每个元素都包含了直接指向邻接元素的指针,因此没必要再通过索引进行查找了。

优点:

  • 对于关联数据集的查找速度更快。
  • 可以很自然地扩展为更大的数据集,因为他们无需使用代价高昂的连接运算符。

缺点:

  • RDBMS可以用在更为通用的场景下,图型数据库只适合类似于图的数据。

典型代表:

  • Neo4j
  • FlockDB
  • InfoGrid
  • OrientDB

多模数据库

这些数据库包含了多种数据库的特性。

有两种不同的产品分组可以认为是多模的:

  • 支持多种数据模型和用例的多模数据库。比如说,ArangoDB宣称它拥有键值存储的好处,同时还提供了面向文档以及图型数据库的支持。
  • 支持多种模式的通用目的的数据库。比如说,Oracle的MySQL 5.6支持SQL方式的访问,也可以通过Memcached API实现键值访问。

典型代表:

  • ArangoDB
  • Aerospike
  • Datomic

对象数据库

数据库中的数据都建模为对象、属性、方法以及类。面向对象的数据库通常适合于需要高性能数据处理的应用,这种应用一般都有非常复杂的结构。

优点:

  • 相比于关系元组来说,对象模型最适合于展现现实世界,对于复杂、多方位的对象来说尤为如此。
  • 使用层次特性来组织数据。
  • 访问数据时并不需要专门的查询语言,因为访问是直接面向对象的。然而,有时也是需要使用查询的。

缺点

  • 在RDBMS中,由于表的创建、修改或是删除而导致的模式修改通常并不依赖于应用。在使用对象数据库的应用中,模式修改类通常意味着还要对与当前类关联的其他应用类进行修改。这会导致对整个系统进行修改。
  • 对象数据库通常会通过单独的API与特定的语言绑定,只有通过该API才能查询数据。在这方面,RDBMS就做得很好,这要归功于它所使用的通用查询语言。

典型代表:

  • VelocityDB
  • Objectivity
  • ZODB
  • Siaqodb
  • EyeDB

多维数据库

这是针对在线分析处理的一种数据库,它可以从各种关系型数据库中检索数据,并且以某种方式将信息组织为类别和段当中。

典型代表:

  • GlobalsDB
  • Intersystems Cache
  • SciDB
  • Rasdaman

多值数据库

多维数据库的变种。主要的特性是支持使用属性来存储值的列表。

典型代表:

  • Rocket U2
  • OpenInsight
  • Reality

总结

NoSQL的发展速度异常迅猛,不过这并不意味着关系型数据库就没落了。他们还会在很多场景下发挥着巨大的作用,并且与NoSQL数据库共存。我们现在处在多种持久化存储共存的时代,并不存在处于垄断地位的关系型数据库与NoSQL数据库。架构师们对数据库的选择将会基于数据存储本身的特性,以及所预估的数据量。

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Terangkan kolam penampan InnoDB dan kepentingannya untuk prestasi.Terangkan kolam penampan InnoDB dan kepentingannya untuk prestasi.Apr 19, 2025 am 12:24 AM

Innodbbufferpool mengurangkan cakera I/O dengan data caching dan halaman pengindeksan, meningkatkan prestasi pangkalan data. Prinsip kerjanya termasuk: 1. Bacaan Data: Baca data dari Bufferpool; 2. Penulisan Data: Selepas mengubah suai data, tulis kepada Bufferpool dan menyegarkannya ke cakera secara teratur; 3. Pengurusan cache: Gunakan algoritma LRU untuk menguruskan halaman cache; 4. Mekanisme Membaca: Muatkan halaman data bersebelahan terlebih dahulu. Dengan saiz bufferpool dan menggunakan pelbagai contoh, prestasi pangkalan data dapat dioptimumkan.

Mysql vs Bahasa Pengaturcaraan Lain: PerbandinganMysql vs Bahasa Pengaturcaraan Lain: PerbandinganApr 19, 2025 am 12:22 AM

Berbanding dengan bahasa pengaturcaraan lain, MySQL digunakan terutamanya untuk menyimpan dan mengurus data, manakala bahasa lain seperti Python, Java, dan C digunakan untuk pemprosesan logik dan pembangunan aplikasi. MySQL terkenal dengan prestasi tinggi, skalabilitas dan sokongan silang platform, sesuai untuk keperluan pengurusan data, sementara bahasa lain mempunyai kelebihan dalam bidang masing-masing seperti analisis data, aplikasi perusahaan, dan pengaturcaraan sistem.

Belajar MySQL: Panduan Langkah demi Langkah untuk Pengguna BaruBelajar MySQL: Panduan Langkah demi Langkah untuk Pengguna BaruApr 19, 2025 am 12:19 AM

MySQL bernilai belajar kerana ia adalah sistem pengurusan pangkalan data sumber terbuka yang sesuai untuk penyimpanan data, pengurusan dan analisis. 1) MySQL adalah pangkalan data relasi yang menggunakan SQL untuk mengendalikan data dan sesuai untuk pengurusan data berstruktur. 2) Bahasa SQL adalah kunci untuk berinteraksi dengan MySQL dan menyokong operasi CRUD. 3) Prinsip kerja MySQL termasuk seni bina klien/pelayan, enjin penyimpanan dan pengoptimum pertanyaan. 4) Penggunaan asas termasuk membuat pangkalan data dan jadual, dan penggunaan lanjutan melibatkan menyertai jadual menggunakan Join. 5) Kesilapan umum termasuk kesilapan sintaks dan isu kebenaran, dan kemahiran debugging termasuk menyemak sintaks dan menggunakan perintah menjelaskan. 6) Pengoptimuman prestasi melibatkan penggunaan indeks, pengoptimuman penyata SQL dan penyelenggaraan pangkalan data yang tetap.

Mysql: Kemahiran penting untuk pemula untuk menguasaiMysql: Kemahiran penting untuk pemula untuk menguasaiApr 18, 2025 am 12:24 AM

MySQL sesuai untuk pemula untuk mempelajari kemahiran pangkalan data. 1. Pasang alat pelayan dan klien MySQL. 2. Memahami pertanyaan SQL asas, seperti SELECT. 3. Operasi data induk: Buat jadual, masukkan, kemas kini, dan padam data. 4. Belajar Kemahiran Lanjutan: Fungsi Subquery dan Window. 5. Debugging dan Pengoptimuman: Semak sintaks, gunakan indeks, elakkan pilih*, dan gunakan had.

MySQL: Data berstruktur dan pangkalan data hubunganMySQL: Data berstruktur dan pangkalan data hubunganApr 18, 2025 am 12:22 AM

MySQL dengan cekap menguruskan data berstruktur melalui struktur jadual dan pertanyaan SQL, dan melaksanakan hubungan antara meja melalui kunci asing. 1. Tentukan format data dan taip apabila membuat jadual. 2. Gunakan kunci asing untuk mewujudkan hubungan antara jadual. 3. Meningkatkan prestasi melalui pengindeksan dan pengoptimuman pertanyaan. 4. Secara kerap sandaran dan memantau pangkalan data untuk memastikan pengoptimuman keselamatan data dan prestasi.

MySQL: Ciri dan keupayaan utama dijelaskanMySQL: Ciri dan keupayaan utama dijelaskanApr 18, 2025 am 12:17 AM

MySQL adalah sistem pengurusan pangkalan data sumber terbuka yang digunakan secara meluas dalam pembangunan web. Ciri -ciri utamanya termasuk: 1. Menyokong pelbagai enjin penyimpanan, seperti InnoDB dan Myisam, sesuai untuk senario yang berbeza; 2. Menyediakan fungsi replikasi master-hamba untuk memudahkan pengimbangan beban dan sandaran data; 3. Meningkatkan kecekapan pertanyaan melalui pengoptimuman pertanyaan dan penggunaan indeks.

Tujuan SQL: Berinteraksi dengan Pangkalan Data MySQLTujuan SQL: Berinteraksi dengan Pangkalan Data MySQLApr 18, 2025 am 12:12 AM

SQL digunakan untuk berinteraksi dengan pangkalan data MySQL untuk merealisasikan penambahan data, penghapusan, pengubahsuaian, pemeriksaan dan reka bentuk pangkalan data. 1) SQL Melaksanakan operasi data melalui Pilih, Masukkan, Kemas kini, Padam Penyataan; 2) Gunakan pernyataan membuat, mengubah, drop untuk reka bentuk dan pengurusan pangkalan data; 3) Pertanyaan kompleks dan analisis data dilaksanakan melalui SQL untuk meningkatkan kecekapan membuat keputusan perniagaan.

Mysql for Beginners: Bermula dengan Pengurusan Pangkalan DataMysql for Beginners: Bermula dengan Pengurusan Pangkalan DataApr 18, 2025 am 12:10 AM

Operasi asas MySQL termasuk membuat pangkalan data, jadual, dan menggunakan SQL untuk melakukan operasi CRUD pada data. 1. Buat pangkalan data: createdatabasemy_first_db; 2. Buat Jadual: CreateTableBooks (Idintauto_IncrementPrimaryKey, Titlevarchar (100) NotNull, Authorvarchar (100) NotNull, Published_yearint); 3. Masukkan Data: InsertIntoBooks (Tajuk, Pengarang, Published_year) VA

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.