БАЗЫ ДАННЫХ
Использование систем управления баз данных (СУБД) является наиболее эффективным способом реализации работы с данными: производителями СУБД обеспечивается максимальная гибкость, производительность, масштабируемость и надежность решений, за счет возможностей репликации, кластеризации, сегментации. В зависимости от характера решаемых задач может использовать одна или несколько специализированных баз данных.
Реляционные базы данных.
Это самый распространённый тип БД. Структура БД описывается в виде схемы, представляющей из себя набор таблиц и связей между ними. Каждая таблица — это набор колонок, представляющих из себя название колонки и ее тип. Для установления связей между таблицами используются primary и foreign ключи, которые также являются колонками. Все записи таблицы однозначно идентифицируются по primary ключу – идентификатору записи. Для оптимизации производительности используются специальные индексы по одной или нескольким колонкам таблицы. Для работы с реляционными базами данных используется язык SQL и его производные специфичные для конкретных производителей СУБД. Структура реляционных БД делает ее достаточно гибким инструментом для работы практически с любыми типами данных, любого уровня связанности.
Примеры реляционных СУБД: MS SQL, Oracle, MySQL, PostgreSQL, MariaDB, SQLite.
NoSQL базы данных.
Название подчеркивает не реляционный характер таких БД, подразделяются на следующие типы:
Документно-ориентированные – в основе которых лежит документное хранилище с поддержкой иерархической структуры. В отличие от реляционных не требует спецификации схемы: документ представляет из себя запись в формате XML, JSON или BSON, что дает большую гибкость работы с данными динамической структуры. К таким базам данных относится: MongoDB, CouchDB.
Ключ-значение – базы данных, в которой объекты (произвольные) хранятся по ключу. Достаточно примитивный вариант БД, используется обычно в задачах кеширования данных, хранения пользовательских сессий, чрезвычайно производительные и масштабируемые. Примеры таких БД: Redis, Memcached.
Столбцовые – их особенностью является хранения данных не построчно, а по столбцам. Дает преимущество в производительности поиска и выборки по отдельным столбцам в больших массивах данных. Примеры: Cassandra, cstore_fdw (PostgreSQL extension).
Графовые – информация хранится как свойства узлов, отношения представлены в виде ребер. Используется в основном в специфичных сценариях требующих обработки связей между узлами, например, в алгоритмах социальных сетей, системах обнаружения мошенничества в финансовых и страховых услугах. Примеры: Neo4j, OrientDB.
Time series DB
Специализированные базы данных для хранения, обработки временных числовых рядов. Обычно используются для работы систем мониторинга, сбора и анализа телеметрии, построения графических временных метрик. Примеры таких систем: InfluxDB, Prometheus, TimescaleDB (расширение к PostgreSQL).
Специалисты компании "Кросс-Информ" обладают знаниями и навыками работы с базами данных:
MS SQL, Oracle, MySQL, SQLite, MongoDB, Redis, InfluxDB.
При разработке приложений требующих использования реляционных БД обычно используются вспомогательные object-relational mapping (ORM) системы. Их использование позволяет разработчикам создавать приложения, работающие с концептуальной моделью данных, а не с реляционной схемой хранения. Цель состоит в уменьшении объема кода и смещению акцента с реализации бизнес-логики обработки данных из SQL в программный код, что упрощает разработку, облегчает дальнейшую поддержку и развитие кода разрабатываемой системы.
При разработке на языке программирования C# наиболее популярными ORM системами являются Entity Framework (от Microsoft) и NHibernate.
Мы в своей работе преимущественно используем Entity Framework (EF). Существуют провайдеры EF поддерживающие работу с MS SQL Server, SQLite, PostgreSQL, MySQL.
Есть также версия Entity Framework Core – используемая для кроссплатформенной .NET Core, т.е. может работать как на Windows, так и на Linux.