Jump to content

NoSQL

Википедиа — Чөлөөт нэвтэрхий толь
03:45, 11 Дөрөвдүгээр сар 2017-ий байдлаарх ErkaIS (хэлэлцүүлэг | оруулсан хувь нэмэр) хэрэглэгчийн хийсэн залруулга

NoSQL("SQL бус", "Дан ганц SQL ч биш", "харьцаа хамаарлын бус" хэмээн нэрлэгдэх нь бий) өгөгдлийн сан нь[1] харьцаа өгөгдлийн сангийн хүснэгтэн загвараас загвар, ажиллагааны хувьд өөр байдлаар өгөгдлийг хадгалах, буцаан татаж авах механизмаар хангадаг. Ийм төрлийн өгөгдлийн сан нь 1960 - аад оноос хойш оршиж байсан авч, Web 2.0(Facebook, Google, Amazon.com гэх мэт) - ын хэрэгцээнээс үүдэн 21 - р зууны эхэн үеэс "NoSQL" хэмээх нэршил нь олон нийтийн дунд өргөн тархасан юм.[2][3][4] Өнөө үед NoSQL өгөгдлийн сангууд нь их-өгөгдөл, бодит-хугацааны веб аппликейшнүүд дээр өргөнөөр ашиглагдаж байна.[5] NoSQL системүүдийг зарим тохиолдолд "Дан ганц SQL ч биш" хэмээн дууддаг нь SQL-төсөөт квери хэлийг дэмжих хандлагатай байдагтай холбоотой.[6][7]

Уг аргачлалыг хэрэглэх үндэслэл: Энгийн загвар, тархсан төхөөрөмжүүдийн хувьд "босоо" өргөжүүлэлт хийхэд хялбар (харьцаа өгөгдлийн сангийн хувьд шүдний өвчин нь),[8] and finer control over availability. NoSQL өгөгдлийн сан дээр хэрэглэгддэг өгөгдлийн бүтэц(түлхүүр-утга, өргөн багана, граф, баримт бичиг гэх мэт) нь энгийн харьцаа өгөгдлийн сангууд дээр хэрэглэгддэгээс өөр бөгөөд тэр утгаараа зарим үйлдлүүд NoSQL дээр илүү хурдан гүйцэтгэгддэг. NoSQL өгөгдлийн санг ашиглах нь зохимжтой эсэх нь тухайн шийдэх гэж буй асуудлаас хамаарна. NoSQL өгөгдлийн санд хэрэглэгддэг өгөглийн бүтэц нь харьцаа өгөгдлийн сангийн хүснэгтэн бүтцээс ч уян хатан хэмээн тодорхойлогдох тохиолдол бий.[9]

Ихэнх NoSQL агуулах нь хүртээмжтэй байдал/availability(уншилт бүрийн хувьд хариу ирэх), хурд, хуваалтын тэсвэртэй байдлын хүрээнд тогтвортой байдлыг олгодог(CAP ын тёоромын хувьд) . NoSQL агуулахыг нэвтрүүлэхэд тулгардаг томоохон саадуудаас нэрлэбэл: доод түвшиний квери хэл ашигладаг(SQL - ын оронд), стандарт интерфэйсийн хувьд дутагдмал, одоо оршин байгаа харьцаа өгөгдлийн сангаас NoSQL рүү шилжихэд ихээхэн хэмжээний хөрөнгө оруулалт шаардана.[10] Ихэнх NoSQL агуулах нь ACID гүйлгээний хувьд дутагдалтай байдаг ч, MarkLogic, AeroSpike,  airCom c-treeACE, Google Spanner (техникийн талаасаа бол NewSQL өгөгдлийн сан), Symas LMDB, OrientDB хэмээх хэд хэдэн агуулах нь ACID - ыг загварынхаа гол төв болгосон.

Ихэнх NoSQL өгөгдлийн сан нь "хожим тогтворжилт" хэмээх концептийг хэрэгсдэг бөгөөд өгөгдлийн сангийн өөрчлөлт нь бүхий л зангилаа(node) - нууд руу "аажимдаа" хуулагдах юм. Тэгснээр квери шинэчлэгдсэн өгөгдлийг тэр даруй татаж чадахгүй байх магадлалтай,мөн квериний хүсэлтийн дагуу ирсэн үр дүн оновчтой биш байж болох юм(энэхүү асуудлыг хожуу уншилт хэмээн нэрийддэг). [11] Мөн түүнчлэн, зарим нэг NoSQL систем нь дутуу бичилт хийх, эсхүл өөр төрлийн өгөгдлийн алдагдал үүсгэдэг .[12] Азаар зарим нэг NoSQL систем нь өгөгдөл алдагдлаас сэргийлэх үүднээс "бичихээс-урьтаж тэмдэглэ" хэмээх зарчимыг ашигладаг.[13] Нэгээс олон өгөгдлийн сан дээр хийгдэх тархсан гүйлгээ боловсруулалтын хувьд, өгөгдлийн тогтвортой байдал нь NoSQL битгий хэл харьцаа өгөгдлийн санд хүртэл томоохон асуудлын тоонд ордог. Бүр одоо хэрэглэгдэж байгаа харьцаа өгөгдлийн сангийн хувьд хүртэл тархсан өгөгдлийн сангуудад нягт хамаарлыг(ө.х гадаад түлхүүрээр холбогдох) зөвшөөрдөггүй.[14] ACID гүйлгээ, X/Open Xa стандартыг тархсан гүйлгээ боловсруулалтын хувьд хангадаг цөөн хэдхэн систем бий.

Үүсэл хөгжил

NoSQL гэх нэр томъёог анх 1998 онд Карл Стрози өөрийнхөө хөгжүүлсэн "Стрози NoSQL нээлттэй эхийн харьцаа өгөгдлийн сан" гэх стандарт SQL интерфэйсийг ашиглаагүй харьцаа өгөгдлийн сан дээр ашиглаж байсан юм.[15] Түүний NoSQL харьцаа өгөгдлийн сан удирдах систем(ХӨСУС) нь 2009 онд гарж ирсэн NoSQL ын ерөнхий ойлголтоос(ө.х стандарт) ялгаатай. Стрози одоогийн NoSQL нь харьцаа загвараас эрс хазайж(салж) байгаа учраас, "NoRel" буюу "Холбоо хамааралгүй(харьцаагүй)" хэмээн нэрлэсэн нь илүү дөхөм гэж үзэж байгаа юм.

Жон Оскарсон 2009 оны эхээр зохион байгуулсан "нээлттэй эхийн тархсан, харьцаа өгөгдлийн сангууд" талаар хэлэлцсэн арга хэмжээн дээрээ NoSQL - ыг ахин танилцуулсан юм. Хуучны ихэнх NoSQL системүүд нь цул, тогтвортой, тусгаарлагдсан, бат бөх(ACID) - аар хангадаггүй байсан бөгөөд, энэ нь харьцаа өгөгдлийн сангийн системүүд дунд ноёлж байсан дадал/практикд харшилж байсан юм. [16]

2014 оны ашиг орлогоос үндэслэвэл, NoSQL - ын зах заал дээр MarkLogic, MongoDB, Datastax тэргүүн байранд орж байна. 2015 оны олон нийтийн үнэлгээнээс үзэхэд, хамгийн их хүн хэрэглэж байгаа NoSQL өгөгдлийн сангуудад MongoDB, Apache Cassandra, Redis орж байна.[17]

NoSQL өгөгдлийн сангийн төрөл ба жишээ

NoSQL өгөгдлийн санг ангилах маш олон аргачлал байдаг бөгөөд, аргачлал бүр нь өөр өөр категори, дэд-категориудтай. Өгөгдлийн загвараар нь ангилваас:

  • Баганан(Column): Accumulo, Cassandra, Druid, HBase, Vertica, SAP HANA
  • Баримт бичигт(Document): Apache CouchDB, ArangoDB, Clusterpoint, Couchbase, DocumentDB, HyperDex, IBM Domino, MarkLogic, MongoDB, OrientDB, Qizx, RethinkDB
  • Түлхүүр-утга(Key-value): Aerospike, ArangoDB, Couchbase, Dynamo, FairCom c-treeACE, FoundationDB, HyperDex, InfinityDB, MemcacheDB, MUMPS, Oracle NoSQL Database, OrientDB, Redis, Riak, Berkeley DB
  • Граф(Graph): AllegroGraph, ArangoDB, InfiniteGraph, Apache Giraph, MarkLogic, Neo4J, OrientDB, Virtuoso, Stardog
  • Олон-загварт(Multi-model): Alchemy Database, ArangoDB, CortexDB, Couchbase, FoundationDB, InfinityDB, MarkLogic, OrientDB

Степе Ены судалгаан дээр үндэслээд, илүү нарийн ангилвал :[18]

Төрөл Жишээ(харгалзах төрлийн)
Key-Value Cache Coherence, eXtreme Scale, GigaSpaces, GemFire, Hazelcast, Infinispan, JBoss Cache, Memcached, Repcached, Terracotta, Velocity
Key-Value Store ArangoDB, Flare, Keyspace, RAMCloud, SchemaFree, Hyperdex, Aerospike, quasardb
Key-Value Store (Eventually-Consistent) DovetailDB, Oracle NoSQL Database, Dynamo, Riak, Dynomite, MotionDb, Voldemort, SubRecord
Key-Value Store (Ordered) Actord, FoundationDB, InfinityDB, Lightcloud, LMDB, Luxio, MemcacheDB, NMDB, Scalaris, TokyoTyrant
Data-Structures Server Redis
Tuple Store Apache River, Coord, GigaSpaces
Object Database DB4O, Objectivity/DB, Perst, Shoal, ZopeDB
Document Store ArangoDB, Clusterpoint, Couchbase, CouchDB, DocumentDB, IBM Domino, MarkLogic, MongoDB, Qizx, RethinkDB, XML-databases
Wide Column Store BigTable, Cassandra, Druid, HBase, Hypertable, KAI, KDI, OpenNeptune, Qbase

Хамаарлын өгөгдлийн сан нь тогтсон-загваргүй буюу мөр, баганад суурилсан хадгалалтын оронд, value/утгад суурилсан хадгалалтыг хийдэг.

Key-value(түлхүүр-утгат) агуулах

Key-value(KV) агуулах нь холбоот массивыг(мап, dictionary/толь бичиг гэдгээрээ мөн танигдсан) өгөгдлийн загварынхаа гол цөм болгож ашигладаг . Энэ загварт, өгөгдөл нь түлхүүр түүнд харгалзах утгын хосмогуудын бүрдлээр дүрслэгддэг бөгөөд боломжит түлхүүр бүр бүрдэлд нэг л оршино.[19][20]

Key-value загвар нь энгийн хэрнээ гүйцэтгэл сайтай бөгөөд баялаг өгөгдлийн загварууд нь ихэвчлэн үүний extension буюу нэмэлт байдлаар орж ирдэг. Key-value загвар нь толь зүйн эрэмбээр түлхүүрүүдийг хадгалдаг салангид эрэмбэлэгдсэн загвар руу өргөжих боломжтой. Энэ нэмэлт нь сонгосон түлхүүрийн завсардах утгыг маш үр бүтээмжтэйгээр илгээдэг .[21]


Жишээ систем: ArangoDB, InfinityDB, Oracle NoSQL Database, Redis, dbm.

Баримт бичигт агуулах(Document store)

Баримт бичигт агуулахын гол ойлголт нь "баримт бичиг" юм. Баримт бичигт-суурилсан өгөгдлийн сан нь цаанаа арай өөр өөр боловч, бүгд нэгэн стандарт формат дор баримт бичгийг нууцалж(encapsulate), өгөгдлийн кодчилдог. Өгөгдлийн кодчлолд XML, YAML, JSON, BSON орно. Баримт бичиг нь өгөгдлийн санд дахин давтагдахгүй түлхүүр дор хадгалагдана. Баримт-бичигт суурилсан өгөгдлийн сангийн өөр нэгэн шинж чанар нь түлхүүрийн хайлт key-value store - оор гүйцэтгэгддэгээс гадна, доторх агуулгад нь суурилаад API эсхүл квери хэлээр баримт бичгийг татаж авах боломжтойд оршино. 

Баримт бичгийг зохион байгуулж, бүлэглэх доорх аргууд бий:

  • Цуглуулга(collection)
  • Тэг(tag)
  • Үл-харагдах мета-өгөгдөл
  • Дироктерийн шатлал

Харьцаа өгөгдлийн сантай харьцуулвал, цуглуулга нь хүснэгттэй, баримт бичиг нь бичлэгүүдтэй төстэй юм. Юугаараа өөр вэ гэхээр, хүснэгт дэх бичлэг бүр талбарын(баганын) ижил дараалалтай. Харин цуглуулга дахь баримт бичгүүд шал ондоо талбар(багана) - уудтай байж болно.

Граф

Энэ төрлийн өгөгдлийн сан нь  элемэнтүүд нь өөр хоорондоо төгсгөлөг холбоосоор холбогдсон, "граф" - аар үзүүлэхэд тохиромжтой өгөгдлийг загварчлахад зориулагдсан байдаг. Өгөгдлийн төрөл нь нийгмийн хамаарал/харилцаа, нийтийн тээврийн холбоо, авто замын зураг, сүлжээний топологи гэх зэрэг байж болох юм.

Граф өгөгдлийн сан ба түүний квери хэл
Нэр Хэл(нүүд) Тэмдэглэл
AllegroGraph SPARQL RDF triple store
ArangoDB AQL, JavaScript Multi-model DBMS Document, Graph database and Key-value store
DEX/Sparksee C++, Java, .NET, Python Graph database
FlockDB Scala Graph database
IBM DB2 SPARQL RDF triple store added in DB2 10
InfiniteGraph Java Graph database
MarkLogic Java, JavaScript, SPARQL, XQuery Multi-model document database and RDF triple store
Neo4j Cypher Graph database
OWLIM Java, SPARQL 1.1 RDF triple store
Oracle SPARQL 1.1 RDF triple store added in 11g
OrientDB Java, SQL Multi-model document and graph database
Sqrrl Enterprise Java Graph database
OpenLink Virtuoso C++, C#, Java, SPARQL Middleware and database engine hybrid
Stardog Java, SPARQL Graph database

Объект өгөгдлийн сан

  • db4o
  • GemStone/S
  • InterSystems Caché
  • JADE
  • ObjectDatabase++
  • ObjectDB
  • Objectivity/DB
  • ObjectStore
  • ODABA
  • Perst
  • OpenLink Virtuoso
  • Versant Object Database
  • ZODB

Хүснэгтэн

  • Apache Accumulo
  • BigTable
  • Apache Hbase
  • Hypertable
  • Mnesia
  • OpenLink Virtuoso

Тюпл агуулах

  • Apache Голын
  • GigaSpaces
  • Tarantool
  • TIBCO ActiveSpaces
  • OpenLink Virtuoso

Гурвалсан агуулах (RDF) өгөгдлийн сан

  • AllegroGraph
  • Apache JENA (фрэймворк, өгөгдлийн сан биш)
  • MarkLogic
  • Ontotext-OWLIM
  • Oracle NoSQL өгөгдлийн сан
  • Virtuoso Бүх Нийтийн Сервер
  • Stardog

Hosted

  • Amazon DynamoDB
  • Amazon SimpleDB
  • Datastore on Google Appengine
  • Clusterpoint database
  • Cloudant Data Layer (CouchDB)
  • Freebase
  • Microsoft Azure Tables[22]
  • Microsoft Azure DocumentDB[23]
  • OpenLink Virtuoso

Олон утгат өгөгдлийн сан

  • D3 Pick database
  • Extensible Storage Engine (ESE/NT)
  • InfinityDB
  • InterSystems Caché
  • jBASE Pick database
  • Northgate Information Solutions Reality, the original Pick/MV Database
  • OpenQM
  • Revelation Software's OpenInsight
  • Rocket U2

Олон загварт өгөгдлийн сан

  • ArangoDB
  • Couchbase
  • FoundationDB
  • MarkLogic
  • OrientDB

Чадамж

Бэн Скофилд NoSQL өгөгдлийн сангийн төрлүүдийг дараах байдлаар үнэлжээ:[24]

Өгөгдлийн загвар Чадамж Өргөсгөх боломж Уян хатан чанар Төвөгтэй байдал Функциональ хамаарал
Key–value store сайн сайн сайн байхгүй олон янз (байхгүй)
Column-oriented store сайн сайн дунд муу маш бага
Document-oriented store сайн олон янз (сайн) сайн муу олон янз (муу)
Graph database олон янз олон янз сайн сайн графын онол
Relational database олон янз олон янз муу дунд харьцаа алгебр


Харьцаа өгөгдлийг зохицуулах нь

Ихэнх NoSQL өгөгдлийн сан нь квериний хувьд холбох чадвараар дутмаг байдаг тул, өгөгдлийн сангийн схем нь өөр байдлаар загварчлагдах хэрэгцээ гарна. NoSQL өгөгдлийн санд харьцаа өгөгдлийг зохицуулах үндсэн 3 техник бий.

Давхар квери

Бүх өгөгдлийг нэг кверигээр татаж авахын оронд, хүссэн өгөгдлөө хэд хэдэн квери ашиглан татаж авах юм. NoSQL квери нь ихэвчлэн уламжлалт SQL кверинээс хурдан байдаг тул, нэмэлт квери ажиллуулах нь зардлын(цаг зарцуулалт г.м) хувьд хүлээн зөвшөөрөгдөхүйц хэмжээнд байх боломжтой. Хэрэв квериний тоо хэт их бол доорх хоёр арга тохиромжтой.

Кэшлэлт, хуулбарлалт, энгийн хэлбэрт шилжээгүй өгөгдөл

Дан ганц гадаад түлхүүрийг хадгалахгүйгээр, загварын өгөгдөлтэй хамт бодит гадаад утгыг хадгалах нь олонтаа. Жишээлбэл, блог дээрх коммент бүрд хэрэглэгчийн ID - аас гадна хэрэглэгчийн нэр багтсан гэж үзье, хэрэв зээ тэгж давхар хадгалсан бол хэрэглэгчийн нэр рүү нэмэлт хайлт хийхгүйгээр маш хялбараар хандах боломжтой болно. Хэдий тийм ч, хэрэглэгчийн нэр өөрчлөгдвөөс, өгөгдлийн сан дахь маш олон хэсгүүд дээр давхар өөрчлөгдөх хэрэг гарна. Тиймээс энэхүү аргыг өгөгдлийн сан дээр бичилтээс илүүтэй уншилт ихээр хийгдэж байгаа үед ашиглах нь тохиромжтой.[25]

Өгөгдлийг шигтгэх

MongoDB мэтийн баримт бичигт өгөгдлийн сангуудийн хувьд жижиг хэмжээний цуглуулганд илүү их хэмжээний өгөгдөл хийх нь олонтаа. Жишээ нь, блогийн аппликейшн байлааг гэж үзье. Хэрэв блог дахь сэтгэгдэлийг блогийн нийтлэлийн баримт бичиг дотор хадгалвал нэг л татан авалтаар бүхий л сэтгэгдэлийг авах боломжтой болно. Тиймээс энэ арга нь тодорхой үйлдлийн хувьд хэрэгтэй бүх мэдээллийг нэг баримт бичигт хадгалахад гол зорилго нь оршино.

ACID, холболт дэмждэг эсэх

Өгөгдлийн сан нь ACID, эсхүл холболтийг дэмждэг хэмээн тэмдэглэгдсэн байвал, тухайн өгөгдлийн сангийн баримт бичиг нь түүний баталгаа нь болно. 

Database ACID Joins
Aerospike Тийм Үгүй
ArangoDB Тийм Тийм
CouchDB Тийм Тийм
c-treeACE Тийм Тийм
HyperDex Тийм[nb 1] Тийм
InfinityDB Тийм Үгүй
LMDB Тийм Үгүй
MarkLogic Тийм Тийм[nb 2]
OrientDB Тийм Тийм
  1. HyperDex дээр худалдааны add-on болох Warp нэмэлтийг ашиглан ACID - ыг дэмждэг болгох боломжтой.
  2. Баримт бичигт өгөгдлийн сан дээр холболт хийх шаардлагагүй ч, MarkLogic дээр семантик(утга зүй) ашиглан холболт хийх боломжтой.[26]

Уншвал зохих

  • CAP - ын тёором
  • Объект өгөгдлийн сан удирдах системүүдийн харьцуулалт
  • Бүтэцлэгдсэн хадгалах програм хангамжуудын харьцуулалт 
  • Хамаарлын өгөгдлийн сан
  • Тархсан кеш
  • Талстат хайлт
  • Олон утгат өгөгдлийн сан
  • Олон-загварт өгөгдлийн сан
  • Гурвалсан агуулах
  • Схемийн-агностик өгөгдлийн сан

Ашиглагдсан материалууд

  1. http://nosql-database.org/ "NoSQL DEFINITION: Next Generation Databases mostly addressing some of the points: being non-relational, distributed, open-source and horizontally scalable"
  2. Mohan, C. (2013). "History Repeats Itself: Sensible and NonsenSQL Aspects of the NoSQL Hoopla" in Proc. 16th Int'l Conf. on Extending Database Technology.. 
  3. "NOSQL meetup Tickets, Thu, Jun 11, 2009 at 10:00 AM". Eventbrite.com. Татаж авсан: 2017-03-06.
  4. "Amazon Goes Back to the Future With 'NoSQL' Database". WIRED. 2012-01-19. Татаж авсан: 2017-03-06.
  5. "RDBMS dominate the database market, but NoSQL systems are catching up". DB-Engines.com. 21 Nov 2013. Татаж авсан: 24 Nov 2013.
  6. "NoSQL (Not Only SQL)". NoSQL database, also called Not Only SQL
  7. Fowler, Martin. "NosqlDefinition". many advocates of NoSQL say that it does not mean a "no" to SQL, rather it means Not Only SQL
  8. Leavitt, Neal (2010). "Will NoSQL Databases Live Up to Their Promise?" (PDF). IEEE Computer.
  9. Vogels, Werner (2012-01-18). "Amazon DynamoDB – a Fast and Scalable NoSQL Database Service Designed for Internet Scale Applications". All Things Distributed. Татаж авсан: 2017-03-06.
  10. Grolinger, K.; Higashino, W. A.; Tiwari, A.; Capretz, M. A. M. (2013). "Data management in cloud environments: NoSQL and NewSQL data stores" (PDF). Aira, Springer. Татаж авсан: 8 Jan 2014.
  11. "Jepsen: MongoDB stale reads". Aphyr.com. 2015-04-20. Татаж авсан: 2017-03-06.
  12. "Large volume data analysis on the Typesafe Reactive Platform". Slideshare.net. Татаж авсан: 2017-03-06.
  13. Fowler, Adam. "10 NoSQL Misconceptions". Dummies.com. Татаж авсан: 2017-03-06.
  14. "No! to SQL and No! to NoSQL | So Many Oracle Manuals, So Little Time". Iggyfernandez.wordpress.com. Татаж авсан: 2017-03-06.
  15. Lith, Adam; Mattson, Jakob (2010). "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" (PDF). Göteborg: Department of Computer Science and Engineering, Chalmers University of Technology. p. 70. Татаж авсан: 12 May 2011. 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[...]
  16. Chapple, Mike. "The ACID Model".
  17. "DB-Engines Ranking". Татаж авсан: 2015-07-31.
  18. Yen, Stephen. "NoSQL is a Horseless Carriage" (PDF). NorthScale. Татаж авсан: 2014-06-26.
  19. Sandy (14 January 2011). "Key Value stores and the NoSQL movement". http://dba.stackexchange.com/questions/607/what-is-a-key-value-store-database: Stackexchange. Татаж авсан: 1 January 2012. Key-value stores allow the application developer to store schema-less data. This data usually consists of a string that represents the key, and the actual data that is considered the value in the "key-value" relationship. The data itself is usually some kind of primitive of the programming language (a string, an integer, or an array) or an object that is being marshaled by the programming language's bindings to the key-value store. This structure replaces the need for a fixed data model and allows proper formatting. {{cite web}}: External link in |location= (help)CS1 maint: location (link)
  20. Seeger, Marc (21 September 2009). "Key-Value Stores: a practical overview" (PDF). http://blog.marc-seeger.de/2009/09/21/key-value-stores-a-practical-overview/: Marc Seeger. Татаж авсан: 1 January 2012. Key-value stores provide a high-performance alternative to relational database systems with respect to storing and accessing data. This paper provides a short overview of some of the currently available key-value stores and their interface to the Ruby programming language. {{cite web}}: External link in |location= (help)CS1 maint: location (link)
  21. Katsov, Ilya (1 March 2012). "NoSQL Data Modeling Techniques". Ilya Katsov. Татаж авсан: 8 May 2014.
  22. "Table storage | Microsoft Azure". Azure.microsoft.com. Татаж авсан: 2017-03-06.
  23. "DocumentDB – NoSQL Database Service | Microsoft Azure". Azure.microsoft.com. Татаж авсан: 2017-03-06.
  24. Scofield, Ben (2010-01-14). "NoSQL - Death to Relational Databases(?)". Татаж авсан: 2014-06-26.
  25. "Making the Shift from Relational to NoSQL" (PDF). Couchbase.com. Татаж авсан: December 5, 2014.
  26. "Can’t do joins with MarkLogic? It’s just a matter of Semantics! - General Networks". Gennet.com. Татаж авсан: 2017-03-06.

Цааш уншваас...

Нэмэлт линк