Перайсці да зместу

NoSQL

З Вікіпедыі, свабоднай энцыклапедыі

NoSQL (ноу-эс-кью-эл, ад англ.: non SQL — не-SQL)[1] — гэта падыход да праектавання баз даных, які прадастаўляе механізмы для захоўвання і пошуку даных, адрозныя тых, што выкарыстоўваюцца ў рэляцыйных базах даных. Замест тыповай таблічнай структуры рэляцыйнай базы даных NoSQL-сістэмы змяшчаюць даныя ў адной структуры, якая не патрабуе яўнага апісання схемы базы даных і такім чынам дазваляе неструктураваныя наборы даных.[2] Сістэмы NoSQL таксама часам называюць Not only SQL («не толькі SQL»), каб падкрэсліць, што яны могуць падтрымліваць мовы запытаў, падобныя на SQL. [3] [4]

Нерэляцыйныя базы даных існуюць з канца 1960-х гадоў, але назва «NoSQL» была створана толькі ў пачатку 21-га стагоддзя з развіццём тэхналогій Web 2.0.[5] Базы даных NoSQL таксама выкарыстоўваюцца для апрацоўкі вялікіх даных і ў вэб-праграмах у рэжыме рэальнага часу.[6]

Структуры даных, якія выкарыстоўваюцца базамі даных NoSQL (напрыклад, пара ключ-значэнне, графы або дакументы), адрозніваюцца ад структур рэляцыйных баз даных, што робіць некаторыя аперацыі больш хуткімі ў NoSQL. Часам структуры даных NoSQL таксама разглядаюцца як «больш гнуткія», чым табліцы рэляцыйных баз даных.[7]

Тэрмін NoSQL быў выкарыстаны Карла Строцы ў 1998 годзе, каб назваць створаную ім базу даных Strozzi NoSQL, якая не выкарыстоўвала SQL, але па-ранейшаму была рэляцыйнай.[8] Яго разуменне тэрміна адрозніваецца ад канцэпцыі NoSQL, якая распаўсюдзілася пасля 2009 года. Строцы мяркуе, што, паколькі сучасны рух NoSQL "цалкам адыходзіць ад рэляцыйнай мадэлі, яго варта было б больш правільна называць «NoREL» [9], маючы на ўвазе «not relational» — «нерэляцыйны».

Віды і прыклады

[правіць | правіць зыходнік]

Існуюць розныя класіфікацыі баз даных NoSQL. Далей прыводзяцца прыклады суадносна з выкарыстанымі мадэлямі даных: [10]

Від Прыклады
Кэш ключ-значэнне Apache Ignite, Couchbase, Coherence, eXtreme Scale, Hazelcast, Infinispan, Memcached, Redis, Velocity
Сховішча ключ-значэнне Azure Cosmos DB, ArangoDB, Amazon DynamoDB, Aerospike, Couchbase, ScyllaDB, Azure Cosmos DB, Oracle NoSQL Database, FoundationDB, InfinityDB, LMDB, MemcacheDB
Сховішча картэжаў Apache River, GigaSpaces, Tarantool, TIBCO ActiveSpaces, OpenLink Virtuoso
Сховішча дакументаў Azure Cosmos DB, ArangoDB, BaseX, Clusterpoint, Couchbase, CouchDB, DocumentDB, eXist-db, IBM Domino, MarkLogic, MongoDB, RavenDB, Qizx, RethinkDB, Elasticsearch, OrientDB
Шырокакалоннае сховішча Azure Cosmos DB, Amazon DynamoDB, Bigtable, Cassandra, Google Cloud Datastore, HBase, Hypertable, ScyllaDB
Графавая база даных Azure Cosmos DB, AllegroGraph, ArangoDB, InfiniteGraph, Apache Giraph, MarkLogic, Neo4J, OrientDB, Virtuoso

Апрацоўка рэляцыйных даных

[правіць | правіць зыходнік]

Паколькі ў большасці баз даных NoSQL адсутнічае магчымасць аб’яднання запытаў, схему базы даных звычайна трэба распрацоўваць па-іншаму. Ёсць тры асноўныя метады апрацоўкі рэляцыйных даных у базах даных NoSQL.

Шматразовыя запыты

[правіць | правіць зыходнік]

Замест таго, каб атрымліваць усе даныя з дапамогай аднаго запыту, выконваецца некалькі запытаў. Запыты ў NoSQL часта выконваюцца хутчэй, чым запыты ў рэляцыйных базах, таму кошт дадатковых запытаў можа быць прымальным.

Ненармалізаваныя даныя

[правіць | правіць зыходнік]

Замест таго, каб захоўваць толькі знешнія ключы (англ.: foreign keys), захоўваюць фактычныя знешнія значэнні разам з данымі мадэлі. Напрыклад, запіс аб каментары ў блогу можа ўключаць імя карыстальніка, што дазваляе пазбегнуць паўторнага пошуку па ідэнтыфікатары карыстальніка. Аднак калі імя карыстальніка змяняецца, яго трэба будзе змяніць у многіх месцах базы даных.

Укладзеныя даныя

[правіць | правіць зыходнік]

З дакументнымі базамі даных, такімі як MongoDB, можна змясціць больш даных у меншай колькасці калекцый. Напрыклад, у праграме для вядзення блога можна выбраць захаванне каментарыяў у дакуменце паведамлення ў блогу, каб пры аднаразовым пошуку можна было атрымаць усе каментарыі. Такім чынам, пры такім падыходзе адзіны дакумент змяшчае ўсе даныя, неабходныя для канкрэтнай задачы.

  1. http://nosql-database.org/ Архівавана 26 снежня 2018. «NoSQL DEFINITION: Next Generation Databases mostly addressing some of the points : being non-relational, distributed, open-source and horizontally scalable».
  2. https://www.ibm.com/topics/nosql-databases «What is a NoSQL database?»
  3. NoSQL (Not Only SQL). — «NoSQL database, also called Not Only SQL»
  4. Fowler. NosqlDefinition. — «many advocates of NoSQL say that it does not mean a "no" to SQL, rather it means Not Only SQL»
  5. Amazon Goes Back to the Future With 'NoSQL' Database. WIRED (19 студзеня 2012). Праверана 6 сакавіка 2017.
  6. RDBMS dominate the database market, but NoSQL systems are catching up. DB-Engines.com (21 лістапада 2013). Праверана 24 November 2013.
  7. Vogels. Amazon DynamoDB – a Fast and Scalable NoSQL Database Service Designed for Internet Scale Applications. All Things Distributed (18 студзеня 2012). Праверана 6 сакавіка 2017.
  8. Lith. Investigating storage solutions for large data: A comparison of well performing and scalable data storage solutions for real time extraction and batch insertion of data. Göteborg: Department of Computer Science and Engineering, Chalmers University of Technology (27 лістапада 2010). — «Carlo Strozzi first used the term NoSQL in 1998 as a name for his open source relational database that did not offer a SQL interface[...]»  Праверана 12 May 2011.
  9. NoSQL Relational Database Management System: Home Page. Strozzi.it (2 кастрычніка 2007). Праверана 29 March 2010.
  10. Strauch. NoSQL Databases 23–24. Праверана 27 жніўня 2017.