Базы данных

До этого момента основным хранилищем для наших данных служили либо программные структуры данных по типу Array, Hash или Set, либо запись в файлы нашей файловой системы. Но что делать, когда нужно хранить много данных ? Как эффективно записывать эти данные файл и эффективно их читать ? ЧТо делать, если записи будут параллельными ?

За долгое время с такими проблемами столкнулись множество разрабочиков и компаний и к текущему моменту создано огромное количество продуктов, которые решают их. Все эти продукты можно назвать одним термином - Базы данных.

База данных или СУБД (Система управления базами данных) - програмный продукт отвечающий за чтение, запись, изменение и удаление данных, дающий нам определнные гарантии по долговечности этих данных, а также определнный API, которым мы, как разработчики, обязаны пользоваться для работы с этими продуктами.

Существует огромное количество СУБД, которые могут решать одни и теже проблемы, но делать это по разному и предалагать своим клиентам тот или иной отличительный функционал от своих конкурентов. За долгое время развития все базы данных поделились на 2 семейста: SQL и NoSQL.

  • SQL базы данных - семейство баз данных имеющий стандартизированный API в виде языка запросов SQL. Так как данные СУБД поддерживают SQL, то отсюда вытекают дополнительные характериситики таких баз данных: Строгая схема данных, реляционность (возможность одних данных зависеть от других) и тд. SQL СУБД могут быть как бесплатными с открытым исходным кодом, так и платными коммерческими продуктами. Наиболее известные СУБД на текущий момент это - MySQL, PostgreSQL, Oracle Database, IBM Db2

  • NoSQL базы данных - любая другая база данных, которая имеет синтаксис API отличный от SQL. Они могут быть как реляционными, так и наоброт. В отличии от многих SQL решений, NoSQL часто предлагают такие возможности как масштабируемость, гибкие схемы и тд. Наиболее известные такие базы данных: MongoDB, DynamoDB, ElasticSearch.

Так как NoSQL существует огромное множество и у каждой такой системы API может в корне отличаться друг от друга, то в этом модуле мы их разбирать не будет. Все таки в коммерции SQL подобные решения имеют куда большую ценность и гораздо чаще встречаются, поэтому данный модуль будет посвящен исключительно SQL базам данных. В модуле Rails мы затроним для ознакомления такие NoSQL решения как ElasticSearch и Redis.

Last updated