Про database: какие бывают, что с ними делают и с чем их едят

Казалось бы, база данных она и в Африке database, но читая аутентичную техническую литературу по СУБД (которую русские переводчики традиционно переводят как DBMS — database management system), я ни разу этот термин — DBMS — там не увидел (не исключаю, что плохо смотрел, но ей-богу не вру).

Получается, этот термин выдуман? И много ли такого самопала?

В этой публикации я собрал так называемое «семантическое поле» вокруг термина database — какие базы данных бывают, что с ними делают и с чем их едят. Мне показалось, что это будет явно нагляднее и достовернее, чем обычные глоссарии. Решать, конечно же, вам.

Итак, поехали.

Какие бывают?

Объектные базы данных появились в конце 1980-х — начале 1990-х годов и снова вышли из моды.
Object databases came and went again in the late 1980s and early 1990s.

 

В начале 2000-х появились базы данных XML, но нашли только узкое применение.
XML databases appeared in the early 2000s, but have only seen niche adoption.

 

Существует несколько основных причин широкого внедрения баз данных NoSQL
There are several driving forces behind the adoption of NoSQL databases

 

…JSON . Преимущество данного формата в том, что он намного проще, чем XML. Эту модель данных поддерживают такие документоориентированные БД, как MongoDB, RethinkDB, CouchDB и Espresso.
JSON has the appeal of being much simpler than XML. Document-oriented databases like MongoDB, RethinkDB, CouchDB, and Espresso support this data model.

 

В документоориентированных БД для древовидных структур соединения не нужны, так что их поддержка часто очень слаба.
In document databases, joins are not needed for one-to-many tree structures, and support for joins is often weak.

 

Оптимизаторы запросов для реляционных баз данных — непростые вещи, они потребовали многих лет исследований и разработки
Query optimizers for relational databases are complicated beasts, and they have consumed many years of research and development effort

 

Пример 2.3 демонстрирует запрос на языке Cypher, предназначенный для вставки левой части рис. 2.5 в графовую базу данных.
Example 2-3 shows the Cypher query to insert the lefthand portion of Figure 2-5 into a graph database

 

В большинстве баз данных OLTP хранилище располагается построчно: все значения из одной строки таблицы хранятся рядом друг с другом.
In most OLTP databases, storage is laid out in a row-oriented fashion: all the values from one row of a table are stored next to each other.

 

Многие наборы данных попросту не настолько велики, так что вполне допустимо держать их полностью в оперативной памяти, возможно распределенной по нескольким машинам. Этот факт привел к разработке размещаемых в оперативной памяти БД.
Many datasets are simply not that big, so it’s quite feasible to keep them entirely in memory, potentially distributed across several machines. This has led to the development of in-memory databases.

 

По аналогии с управлением параллельным доступом к многопользовательской базе данных, блокировка требует, чтобы перед вызовом или обновлением значения глобальной переменной ее помечали для изменений.
Similar to concurrency control in a multiuser database environment, locking requires that before the value of a global variable can be used or updated, the variable must be «checked out.»

 

Исследователям, работающим с геномными данными, часто приходится выполнять поиск сходства последовательностей, означающий сравнение очень длинной строки (соответствующей молекуле ДНК) со схожими, но не идентичными строками из большой базы данных. Ни одна из описанных выше БД не способна справиться с этим, вследствие чего исследователями было написано такое специализированное ПО для геномной базы данных, как GenBank.
Researchers working with genome data often need to perform sequence-similarity searches, which means taking one very long string (representing a DNA molecule) and matching it against a large database of strings that are similar, but not identical. None of the databases described here can handle this kind of usage, which is why researchers have written specialized genome database software like GenBank.

 

Многие одноранговые сети, такие как BitTorrent, не имеют никакой центральной базы данных контента.
Many peer-to-peer systems, such BitTorrent, do not have any central database of content.

 

Этот процесс поиска может повторяться сколь угодно долго, чтобы в результате создать большую местную базу данных того, что имеется в наличии.
This lookup process can be repeated indefinitely to build up a large local database of what is out there.

 

Все вышеупомянутые приложения вовлекают взаимодействия между человеком и удаленной базой данных, полной информации.
All of the above applications involve interactions between a person and a remote database full of information.

 

Что они делают? Что с ними делают?

Почему вас как разработчика приложений должны волновать внутренние нюансы того, как БД хранит данные и как она их находит?
Why should you, as an application developer, care how the database handles storage and retrieval internally?

 

Полнотекстовый поиск — вид модели данных, часто используемый в БД.
Full-text search is arguably a kind of data model that is frequently used alongside databases.

 

Многие БД используют очень похожий на db_set механизм, журнал, представляющий собой файл, предназначенный только для добавления данных в его конец.
Similarly to what db_set does, many databases internally use a log, which is an append-only data file.

 

Сценарий восстановления в SQL Server — процесс восстановления данных из одной или более резервных копий и возврат в исходное состояние базы данных.
A restore scenario in SQL Server is the process of restoring data from one or more backups and then recovering the database.

 

В SQL Server инструкция CREATE создает базу данных, используемые для нее файлы и их файловые группы.
In SQL Server, CREATE statement creates a new database and the files used and their filegroups.

 

В SQL Server инструкция ALTER изменяет базу данных или файлы и файловые группы, связанные с базой данных.
In SQL Server, ALTER statement modifies a database, or the files and filegroups associated with the database.

 

Удаленная база данных может быть повторно создана только с помощью восстановления из резервной копии.
A dropped database can be re-created only by restoring a backup.

 

При удалении база данных удаляется из экземпляра SQL Server. Также с физического диска удаляются файлы, используемые базой данных.
Dropping a database deletes the database from an instance of SQL Server and deletes the physical disk files used by the database.

(Прим. пер.: Хоть на русском эти «изменение» и «удаление» звучат одинаково, на английском это разные инструкции: 
ALTER и DROP для объектов;
UPDATE и DELETE для записей).

 

В случае ошибки можно будет восстановить базу данных путем возврата ее в предыдущее состояние с помощью моментального снимка.
If you make a mistake, you can use the snapshot to recover by reverting the database to the snapshot.
(Прим. пер: вообще, сам факт — «восстанавливаем базу из копии» — это restore. Чтобы помимо этого привести БД в рабочее состояние (накатить или откатить изменения) и позволить пользователям что-то с ней делать — это recover).

 

Потенциально процедура возврата занимает гораздо меньше времени, чем восстановление [базы данных] из резервной копии, но при этом она не поддерживает накат.
Reverting is potentially much faster for this purpose than restoring from a backup; however, you cannot roll forward afterward.
(Прим. пер: речь идет о накате транзакций, где могли быть указаны операции, которые еще происходили с БД после снимка. В устной речи «накатить изменения» встречалось неоднократно).

 

Использование одного класса для чтения и записи БД является формой централизованного управления.
Using one class to read from and write to a database is a form of centralized control.

 

PHP-код может быть встроен в Web-страницы для получения доступа к БД и отображения содержащейся в ней информации.
It [PHP] can be embedded in Web pages to access and present database information.

 

SQL «де-факто» является стандартным языком выполнения запросов, обновлений реляционнных БД и управления ими.
SQL is the de facto standard language for querying, updating, and managing relational databases.

 

Как они будут себя чувствовать, если база данных неожиданно окажется испорченной?
How would they feel if that database was suddenly corrupted?

 

… предикат within_recursive возвращает все содержащиеся в нашей базе данных географические пункты в Северной Америке (или в любом другом месте).
… the within_recursive predicate can tell us all the locations in North America (or any other location name) contained in our database.

 

Вместо этого каждый пользователь поддерживает свою собственную базу данных в местном масштабе и обеспечивает список других людей по соседству, которые являются членами системы.
Instead, each user maintains his own database locally and provides a list of other nearby people who are members of the system.

 

Связанные словосочетания

Для эффективного поиска значения конкретного ключа в БД необходима другая структура данных: индекс.
In order to efficiently find the value for a particular key in the database, we need a different data structure: an index.

 

Поддерживаемые сценарии восстановления зависят от модели восстановления базы данных и выпуска SQL Server.
The supported restore scenarios depend on the recovery model of the database and the edition of SQL Server.

 

Модель восстановления — это свойство базы данных, которое управляет процессом регистрации транзакций, определяет, требуется ли для журнала транзакций резервное копирование, а также определяет, какие типы операций восстановления доступны.
A recovery model is a database property that controls how transactions are logged, whether the transaction log requires (and allows) backing up, and what kinds of restore operations are available.

 

Для большинства сценариев восстановления необходимо применить резервную копию журналов транзакций и позволить компоненту SQL Server Database Engine запустить процесс восстановления для подключения базы данных к сети.
For most restore scenarios, it is necessary to apply a transaction log backup and allow the SQL Server Database Engine to run the recovery process for the database to be brought online.

 

Восстановление — это процесс, используемый SQL Server для запуска каждой базы данных в транзакционно-согласованном (чистом) состоянии.
Recovery is the process used by SQL Server for each database to start in a transactionally consistent — or clean — state.

 

Еще одна прекрасная причина создания класса — сокрытие деталей реализации, и таких сложных, как мудреный способ доступа к БД, и столь банальных, как отдельный элемент данных, хранимый в форме числа или строки.
The desire to hide implementation details is a wonderful reason to create a class whether the details are as complicated as a convoluted database access or as mundane as whether a specific data member is stored as a number or a string.

 

Виды рефакторинга, предполагающие изменение интерфейса класса или метода, схемы БД или булевых тестов, обычно более рискованны.
Refactorings that involve class or routine interface changes, database schema changes, or changes to boolean tests, among others, tend to be more risky.

 

Так [словарями данных] называются базы данных, которые описывают важную для проекта информацию. Во многих случаях словарь связан преимущественно со схемами баз данных.
A data dictionary is a database that describes all the significant data in a project. In many cases, the data dictionary focuses primarily on database schemas.

 

Вы можете неграмотно спроектировать таблицы БД
Errors can include <…> improperly designing database tables

 

Инструменты генерации кода обычно ориентированы на приложения для баз данных, но к этому классу относятся и другие программы.
Code-generating tools tend to focus on database applications, but that includes a lot of applications.

 

Архитектура должна включать план управления ограниченными ресурсами, такими как соединения с БД, потоки и дескрипторы.
The architecture should describe a plan for managing scarce resources such as database connections, threads, and handles.

 

Архитектура должна описывать, как система будет реагировать на рост числа пользователей, серверов, сетевых узлов, записей в БД, транзакций и т. д.
The architecture should describe how the system will address growth in number of users, number of servers, number of network nodes, number of database records, size of database records, transaction volume, and so on.

 

Приведено ли описание организации и содержания БД?
Is the database organization and content specified?

 

Поэтому я принял конвенцию, в соответствии с которой файлам .frm (файлам формы) дозволялось только извлекать данные из БД и сохранять их обратно, но не передавать эти данные другим частям программы.
Consequently, I adopted a design convention that the .frm file (the form file) was allowed only to retrieve data from the database and store data back into the database. It wasn’t allowed to communicate that data directly to other parts of the program.

 

Они [подсистемы] позволяют легко изменять структуру БД без изменения большей части программы.
They [subsystems] make it easy to change the database design structure without changing most of the program.

 

Вопрос «Будет ли эта организация базы данных работать?» недостаточно хорошо определяет направление прототипирования.
A design question like «Will this database framework work?» does not provide enough direction for prototyping.

 

Вы можете даже не знать специфику базы данных.
You don’t even need to know the database specifics.

 

Мы также коснулись вопроса CSS и XSL/ XPath, не являющихся языками запросов БД, но имеющих с ними интересные параллели.
We also touched on CSS and XSL/XPath, which aren’t database query languages but have interesting parallels.

 

… центральное место в моделях обработки данных стали отводить не компьютерам, а базам данных.
… data processing was changing from a computer-centered view of information systems to a database-centered view.

 

Суть изменения заключалась в отведении центрального места пулу данных, над которыми компьютер выполняет некоторые действия (подход, ориентированный на БД).
The change was to focus on a pool of data on which the computer happened to act (a database-oriented view).

 

Возможно, вы используете также встроенные библиотеки классов-контейнеров, научные функции, классы пользовательского интерфейса и классы для работы с БД.
You might also use prebuilt libraries of container classes, scientific functions, user interface classes, and database-manipulation classes.

 

Чтобы добыть у бухгалтерии необходимые данные, нам, возможно, нужно на скорую руку собрать индивидуальные отчеты, а это значит, нужно будет подключить к делу разработчиков или программистов, работающих с базами данных.
To get Finance the data they need, we may have to cobble together some custom reports, which means bringing in the application developers or database people.

 

Обновить тридцать пять инстанций баз данных Oracle…
Upgrade thirty-five instances of Oracle databases… 

 

Вэс говорит: «Это не изменение! Это просто запуск скрипта баз данных».
But Wes says, “That’s not a change! That’s just running a database script.

 

Прежде чем запрос на такое изменение поступил бы к нам, нужно было, чтобы он получил согласие ото всех владельцев приложений и баз данных, а также от бизнес-отдела.
Before that change request would even come to us, I would expect him to get the nod from the application and database owners, and also the business.

 

Декларативные языки … скрывают подробности реализации ядра базы данных, благодаря чему у СУБД появляется возможность повышать производительность без необходимости вносить изменения в запросы.
A declarative query language … hides implementation details of the database engine, which makes it possible for the database system to introduce performance improvements without requiring any changes to queries.

 


Вот и все. Надеюсь, было познавательно. Репост категорически приветствуется.

 

Отбирали примеры: Квасникова ИринаСмирнова ЮлияПанибратова НадеждаЕвгений Бартов
Раскладывал по полкам: Евгений Бартов
Используемая литература:

  • Code Complete by  Steve McConnell
  • Computer networks by  Andrew Tannenbaum
  • Designing Data-Intensive Applications by Martin Kleppmann
  • The Phoenix Project by Gene Kim 
  • Microsoft SQL documentation  и др.
#alproTS, #english, #l10n, #russian, #t9n, #translation, #xl8