Movatterモバイル変換


[0]ホーム

URL:


Направо към съдържанието
УикипедияСвободната енциклопедия
Търсене

NoSQL

от Уикипедия, свободната енциклопедия
Тази статия се нуждае от подобрение.
Необходимо е:дооправяне на превода от ен,оформление.
Ако желаете да помогнете на Уикипедия, използвайте опциятаредактиране в горното меню над статията, за да нанесете нужните корекции.

Нерелационната база данни (наанглийски:NotonlyStructuredQueryLanguage, NoSQL) предоставя механизъм за съхранение и възстановяване на данни, който използва свободенсъгласуван модел за разлика от по-често ползванатарелационна база данни. Ползите на този подход включватхоризонтално мащабиране. Нерелационната база данни е най-често добре оптимизирано хранилище, съдържащо информация от типключ-стойност. Предназначението ѝ е да улесни процесите по възстановяване и добавяне на информация, с цел оптимизиране на производителността. Нерелационната база данни намира значима и нарастваща роля вreal-time web иbig data приложенията. Нерелационните системи са наричани „Not only SQL“ в превод „Не само база данни“ за да се подчертае, че те в действителност позволяват употребата на езици за търсене различни, но сходни на тези вSQL.

Нерелационната база данни има разпределена и устойчива на повреди архитектура, като обектите с информация се съхраняват на няколко сървъра. По този начин системата може да се предпази като добавя повече сървъри и тогава при повреда на сървър продължава да работи. Този тип база данни се разширява хоризонтално и се използва за управлението на голямо количество от данни, когато производителността (в реално време) е по-важна от последователността (както в индексирането на голям брой документи, обслужващите страници на натоварените сайтове и предоставянето настриймове).

ACID vs BASE. Нерелационната база данни не могат непременно да дадат пълна гаранция заACID (Atomicity, Consistency, Isolation, Durability). Обикновено съгласуваността е гарантирана или трансакциите са ограничени до един обект с информация. Това означава, че ако се даде достатъчно дълъг период от време, по време на който не се пращат промени, може да се очаква всички обновления да се разпространят в системата.

История

[редактиране |редактиране на кода]

За първи път терминът нерелационна база данни бива използван от Карло Строци през 1998 г. за да наименува неговата лекарелационна база данни сотворен код, която не излага стандартния SQL интерфейс.[1] Поради отклоняването на NoSQL движението от релационния модел, Строци предлага като по-подходящо наименованието „NoREL“.[2]

Ерик Еванс (по това време служител на Rackspace) отново използва термина нерелационна база данни в началото на 2009 г., когато Йоан Оскарсон от музикалния уебсайт Last.fm поисква от него да организира събитие относноразпределени бази от данни[3] сотворен код. Името използвано да постави етикет на появилите се и нарастващи по брой нерелационни, разпределени data stores (хранилище на данни на набор от интегрирани обекти), които не се опитват да гарантират ACID, който от своя страна е ключов атрибут на класическитерелационни системи за управление на бази данни.[4]

Класификация

[редактиране |редактиране на кода]

Съществуват различни подходи за класифициране на нерелационните база данни с различни категории и подкатегории. Поради различните подходи за определяне на нефункционалните изисквания и съвкупността от характеристики е трудно да се направи конкретен преглед на нерелационните бази данни. Все пак, класификацията, която може би е най-общоприета се базира на модела на данните. Част от нерелационните база данни и техните прототипи, класифицирани на базата на модела на данните са представени в следния списък:

  • Колона: Hbase,Cassandra, Accumulo
  • Документ:MongoDB, Couch, Raven
  • Ключ – стойност: Dynamo, Riak, Azure,Redis, Cache, GT.m
  • Граф: Neo4J, Allegro, Virtuoso, Bigdata
  • Мултимодел: Oracle NoSQL Database, ZZZ Base, ArangoDB

Класификации, базирани на модела на данните

[редактиране |редактиране на кода]

Щефан Йен в своя пост „A yes for NoSQL taxonomy“ предлага следната класификация:

ТипБази данни, в които се използва
KV ХранилищеKeyspace Flare SchemaFree RAMCloud
KV Store – Eventually consistentDynamo Voldemort Dynomite SubRecord Mo8onDb Dovetaildb
KV Подредено хранилище (KV Store – Ordered)TokyoTyrant Lightcloud NMDB Luxio MemcacheDB Actord
KV кеш (KV Cache)Memcached Repcached Coherence Infinispan EXtremeScale JBossCache Velocity Terracoqua
Tuple хранилище (хранилище от тип наредена n-орка) (Tuple Store)Gigaspaces Coord ApacheRiver
Обектни бази данни (Object Database)ZopeDB DB40 Shoal
Документно хранилище (Document Store)CouchDB MongoDB Jackrabbit XML-Databases ThruDB CloudKit Prsevere Riak-Basho Scalaris
Широко-колонно хранилище (Wide Columnar Store)Bigtable Hbase Cassandra Hypertable KAI OpenNeptune Qbase KDI

Класификация, която се базира на функционалност

[редактиране |редактиране на кода]

Бен Скофилд категоризира нерелационните бази данни (cf. [Sco10]) въз основа на нефункционални категори и („(il)ities“) и рейтинг на съвкупността от функциите, които покриват.

Модел на даннитеПроизводителностМащабируемостГъвкавостСложностФункционалност
Хранилище ключ-стойностВисокаВисокаВисокаНямаПроменлива

(нулева)

Колонно хранилищеВисокаВисокаСреднаНискаМинимална
Документно хранилищеВисокаПроменлива (висока)ВисокаНискаПроменлива (ниска)
Граф бази данниПроменивапроменливаВисокаВисокаТеория на графите
Релациоонни бази данниПроменливапроменливаНискаСреднаРелационна алгебра

Документни хранилища

[редактиране |редактиране на кода]

Централната концепция, която стои зад документното хранилище е нотацията за „документ“. Докато всяка документно-ориентирана имплементация се различава според детайлите на тази дефиниция, като цяло, всички те приемат, че документите енкапсулират и кодират данните (или информацията) в някакви стандартни формати.

Използваните формати са:XML,YAML,JSON както и бинарни формати катоBSON,PDF andMicrosoft Office документи (MS Word,Excel и др.).

Различните имплементации предлагат различен подход към организирането и групираненето на документите:

  • Колекции
  • Тагове
  • Невидими метаданни
  • Йерархия на директориите

Ако направим аналогия с релационните бази данни, колекциите могат да се възприемат като таблици, а документите могат да се приемат за записи. Нерелационните и релационните база данни все пак има съществена разлика: всеки запис в таблицата при релационните бази данни има еднаква последователност от полета, докато документите в колекцията могат да имат полета, които са напълно различни.

Адресът на документите се представя в базата данни чрез уникален ключ, които идентифицира документа. Една от другите основни характеристики на документно-ориентираните бази данни е, че освен простото търсенето по ключ-документ или ключ-стойност, което може да се използва за извличане на документа, базите данни предоставят и потребителски интерфейс или език за заявки, които ще позволи докуметите да бъдат откривани въз основа на тяхното съдържание. Някои NoSQL документни хранилища предлагат алтернативен начин за извличане на информация, като използватMapReduce технологии. ВCouchDB използването на MapReduce е задължително, ако се цели документиете да бъдата извличани на базата на съдържание. Това се нарича „Изгледи“ и представлява индексирана колекция с резултата от алгоритмите на MapReduce.

ИмеЕзикБележки
BaseXJava,XQueryXML база данниXML database
CloudantErlang,Java,Scala,CJSON хранилище (online услуга)
ClusterpointC++XML, добавен за пълно текстово търсенеFull text search
Couchbase ServerErlang,C++ПоддържаJSON и документи в бинарен вид
Apache CouchDBErlangJSON база данни
djondb[5][6][7]C++JSON, ACID документно хранилище
ElasticSearchJavaJSON, Търсачки
eXistJava,XQueryXML база данни
JackrabbitJavaРеализирана е катоJava Content Repository
IBM Lotus Notes иLotus DominoLotusScript,Java, IBM X PagesMultiValue
MarkLogic ServerXQuery,Java,RESTXML database – поддържаJSON, текст и бинарни формати
MongoDBC++,C#,GoBSON хранилище (бинарен формат JSON)
Oracle NoSQL DatabaseJava,C
OrientDBJavaПоддържаJSON и SQL
SednaXQuery,C++XML база данни
SimpleDBErlangonline услуга
OpenLink VirtuosoC++,C#,Java,SPARQLХибрид между мидълуеър (софтуер, който стои между два или повече типа софтуер и превежда информацията между тях) и машина за база данни (database engine)
ZZZ BaseC++MultiValue, JSON, XML

Граф бази данни

[редактиране |редактиране на кода]

Граф базите данни (наанглийски:Graph database) са създадени за данни, чиито елементи са добре представени кактографи (взаимосвързани елементи с неопределен брой отношения между тях). Типовете отношения могат да бъдат например социални отношения, връзки между линиите на градския транспорт, пътни карти, мрежови топологии и др.

ИмеЕзикБележки
AllegroGraphSPARQLRDF GraphStore
IBM DB2SPARQLRDF GraphStore добавена в DB2 10
DEXJava,C++,.NETВисоко производителна граф база данни
FlockDBScala
InfiniteGraphJavaВисоко производителна, мащабируема разпределена граф база данни
Neo4jJava
OpenLink VirtuosoC++,C#,Java,SPARQLХибрид между мидълуеър (софтуер, който стои между два или повече типа софтуер и превежда информацията между тях) и машина за база данни (наанглийски:database engine)
OrientDBJava
Sones GraphDBC#
OWLIMJava,SPARQL 1.1RDF граф хранилище с аргументи
ZZZ BaseC++Високо производителна, мащабируема, разпределена мултимодел база данни - реализирана в единствен изпълним файл около 1 мегабайт

Ключ–стойност хранилища

[редактиране |редактиране на кода]

Ключ–стойност хранилищата (наанглийски:key-value stores) позволяват да съхранявате данни във формат, който не е таблица или схема. Данните могат да бъдат записани като стандартнитипове данни, ползвани в програмните езици или катообект. Ето защо няма нужда да се използва фиксиран модел за данни. Съществуващите видовеключ–стойност хранилища са:

Условно консистентни

[редактиране |редактиране на кода]

Съхраняващи данните в памет с произволен достъп

[редактиране |редактиране на кода]

Съхраняващи на твърдия диск

[редактиране |редактиране на кода]

Обектни бази данни

[редактиране |редактиране на кода]

Източници

[редактиране |редактиране на кода]
  1. Lith, Adamи др.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)//Department of Computer Science and Engineering, Chalmers University of Technology,2010.с. 70.Посетен на12 май 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[...]
  2. NoSQL Relational Database Management System: Home Page//Strozzi.it,2 октомври 2007.Посетен на29 март 2010.
  3. NoSQL 2009//Blog.sym-link.com,12 май 2009. Архивиран оторигиналана16 юли 2011.Посетен на29 март 2010.
  4. Mike Chapple.The ACID Model// Архивиран оторигиналана29 декември 2016.Посетен на30 юли 2013.
  5. djondb.com
  6. tinman.cs.gsu.edu
  7. undefvoid.blogspot.com
Взето от „https://bg.wikipedia.org/w/index.php?title=NoSQL&oldid=12333211“.
Категория:
Скрита категория:

[8]ページ先頭

©2009-2026 Movatter.jp