Можно ли найти конкретного человека, жившего в XVII веке? Выражаясь современным языком «пробить по базам». Оказывается, архивные документы хранят массу информации об обычных людях того периода. Однако существует ряд сложностей, не позволяющих обычному исследователю добраться до этой информации. Во-первых, нужно пройти определённую процедуру по получению доступа в архив. Во-вторых, не всегда можно выйти на нужный документ, используя так называемый научно-справочный аппарат – различные описи и реестры документов, имеющиеся в архиве. Наконец, не имея навыков чтения документов XVII века, которые написаны скорописью, почти нереально ознакомиться с его содержанием.
Данные проблемы предполагается решить с помощью создания базы данных служилых людей XVII века. Об этом небольшая история.
Как всё началось.
Привет! Меня зовут Дмитрий и вот уже более 10 лет я изучаю историю южных уездов России XVII века. Территориально – это современные Белгородская, а также соседние Воронежская, Курская, Липецкая и другие области. Населены они были тогда так называемыми служилыми людьми – они получали здесь в качестве служебного жалования земельные наделы, которые сами и обрабатывали. В XVIII веке их потомки стали однодворцами, а затем государственными крестьянами. Большая часть населения Курской, Воронежской и соседних губерний XIX века происходят из тех самых служилых людей XVI–XVII веков.
История и краеведение – это хобби, которое выросло из увлечения генеалогическими исследованиями, которые я начал в 1999 году. В поисках предков дошёл до начала XVII века (ранее просто отсутствуют архивные документы). В какой-то момент мне стало интересно, как жили мои предки, в какие события были вовлечены и что происходило вокруг – в общем попробовать представить их окружение и быт. Я начал искать информацию, ходить в библиотеки. По правде сказать, историю в школе я не любил. Учился в физмат классе, проявлял повышенные способности к математике, выигрывал олимпиады. Но после развала союза в 1992 году выбрал «перспективную» профессию экономиста, по которой и получил высшее образование в Новосибирском госуниверситете. Затем работал в различных компаниях аналитиком, менеджером, руководителем среднего звена. Имею опыт работы с базами данных (Access), немного SQL, но всё это на довольно элементарном уровне.
Как жили 400 лет назад?
В моих исторических исследованиях (с частью статей можно ознакомиться здесь: http://www.old-kursk.ru/avtor/evsukov.html) меня прежде всего интересует жизнь простых людей. В начале я даже не мог себе представить, сколько сведений содержат документы XVII века, которые в основном хранятся в архиве древних актов (РГАДА), регулярным посетителем которого я стал после переезда в Москву. Здесь и различные судебные разбирательства об оскорблениях, грабежах, спорной земле, краже свиней, незаконном покосе травы и т.п. Так, по одному из моих собственных предков удалось обнаружить дело о вымогательстве у него крупной денежной суммы. Вымогателями оказались племянники пращура, которые просили его в течение недели положить 50 рублей в яму под вишнёвым кустом в 20 шагах от дороги. Случилось это в 1649 (!) году (полный текст письма-вымогательства здесь: http://www.evsyukov.ru/sprav/rodevs.html). На таких данных можно составлять интересные биографические истории людей, живших почти 400 лет назад (пример: http://www.old-kursk.ru/book/pdf/evs_almanah.html).
Но есть один нюанс... Все эти документы почти недоступны для обычного исследователя не только из-за того, что хранятся в РГАДА, где их непросто обнаружить в силу сложной организации справочного аппарата архива, но и из-за того, что написаны они т.н. скорописью – деловым письмом того времени. Обычному человеку эту письменность сходу не прочесть.
Таким образом, найти нужного человека или описание какого-либо события – большая проблема. Чтобы облегчить себе задачу вот уже более 10 лет я «индексирую» просмотренные дела и ввожу найденных служилых людей в специальные таблицы. Что-то подобное делают ещё не менее десятка исследователей. Собранными материалами обмениваемся друг с другом, кто-то выкладывает их в интернете или публикует на форумах. В результате за годы работы имею в своём распоряжении «справочный аппарат» в виде некоторого количества таких разрозненных таблиц, которыми пользуюсь в своих поисках. Всего в них порядка полумиллиона строк.
Как найти человека в XVII веке? - "Пробить по базам"
Уже давно вынашиваю планы создать из этих таблиц единую базу, которую в дальнейшем можно будет пополнять разнородными сведениями как из самих архивных документов, так и из их печатных публикаций, а также упоминаний на форумах и т.п. Поделюсь своими мыслями на этот счёт. Ищу единомышленников, которым может стать интересна эта тема.
Продумал структуру реляционной базы данных (перечень таблиц, полей и связей). В общих чертах идея такая – фиксировать в документах упоминания различных исторических событий и задействованных в них людей в привязке ко времени и месту. Событиями могут быть, например, перепись земель, смотр войска, бой с татарами и т.п., или более мелкие – такие как судебный спор, выделение земли отдельных служилым людям и прочее. Поиск по базе вести по ФИО, роду службы, времени, месту, событию и т.п.
В создании такой базы, а вернее в индексации дел, есть несколько трудностей. Одна из них заключается в сложности (а иногда и невозможности) однозначной идентификации людей в документах. Один и тот же человек может быть записан то как «Ивашко Семенов сын Кочетов», то как «Иван Кочет», иногда без фамилии, а может быть и вовсе с какой-то другой. Эта проблема решается созданием справочников (словарей) имён, отчеств и фамилий в отдельных таблицах, связанных отношением «один-ко-многим». Для примера приведу рабочие варианты реестров имён (http://www.evsyukov.ru/sprav/names.html – внимание есть неточности) и фамилий (http://www.evsyukov.ru/sprav/famreest.html - помимо очевидных вариаций написания встречаются и такие как Артебякин-Вертебякин или, скажем, Нафонайлов-Афонайлов- Фонайлов). Отдельно создаётся справочник персон, который предполагается наполнять при выявлении однозначных соответствий между персонами в разных документах (например, берутся два документа с разностью в 10-15 лет и настраиваются соответствия между персонами из обоих списков).
Есть ряд идей как обновлять базу. Например, при экспорте данных из внешних таблиц в случае отсутствия отдельных имён/фамилий/отчеств экспертом-оператором базы принимается решение об их привязке к унифицированным написаниям, уже имеющимся в справочниках (с одновременным обновлением этих справочников).
Сложнее выглядит фиксирование родственных связей (отец-сын, брат-брат и т.п.). Думаю, использовать рекурсивные связи, но есть сомнения в корректности выполнения запросов.
Тестовый вариант базы пока сделал в Access (ниже скриншот одного из вариантов). Однако более перспективным видится использование PostgreSQL.
Каким может быть размер базы? По моим оценкам для достаточной репрезентативности по изучаемому региону – не менее 5 млн записей. Перспективный объём – десятки миллионов записей. Если масштабировать на центральные, северные регионы и Сибирь – ещё в несколько раз больше.
В настоящее время пишу диссертацию по истории одного из южных уездов, поэтому планирую для начала протестировать эту базу на ограниченной выборке (20-40 тыс. записей). Думаю, что на первом этапе вполне хватит рабочей (тестовой) локальной версии, на которой можно будет отладить структуру и различные виды запросов. Туда же нужно будет прикрутить модуль экспорта и проверки/корректировки данных. На втором этапе можно подумать о серверном варианте, который позволит работать с базой группе исследователей.
Конечно, я не упомянул здесь один из важнейших аспектов ввода информации, связанный с распознаванием образов. При наличии такой возможности процесс наполнения базы может ускориться на порядки. Но об этом в следующий раз.
А может быть графы?...
Остался главный вопрос. А подходит ли реляционная база под такие задачи?..
Поясню. В диссертации планирую исследовать в том числе социальные связи между жителями. Например, «товарищеские/соседские» (вместе подавали челобитную, были свидетелями при выделении земли, проживали в одной деревне и др.), «вражда/соперничество» (судебные разбирательства, кражи, разбой и др.), «экономические» (сделки по продаже имущества), «вертикальные» (например, поручение, выдаваемое воеводой) и прочее.
В наше время во многом аналогичные задачи решаются при описании взаимодействий участников внутри социальных сетей. Поэтому знающие люди подсказали, что для анализа больше подходят графовые базы. Так, вершинами могут быть события, персоны и др., рёбрами – взаимодействия между персонами, участие в событиях и т.п.
Как думаете, какой вариант более подходит под описанную задачу? Буду рад выслушать, пообсуждать любые идеи и найти единомышленников для реализации проекта.
Комментарии (13)
Javian
30.01.2023 18:45Видимо астрологи объявили месяц метрических книг. Вчера вечер провел в поиске по архиву этих книг от Яндекса https://habr.com/ru/company/yandex/blog/712510/
Удивлялся написанию имен и фамилий в 18 веке. Например у невесты имя было Клеопатра Петровна.
welga
30.01.2023 20:04Можно также для каждой персоне БД присвоить цифровой код , по подобию СНИЛС, добавив в него символы века. Это нужно, чтобы потом легко по этому номеру находить однозначно нужных предков, так как поиск по Ф.И.О и дате рождения не всегда дает нужный результат, тем более, что они могут уточняться.
dim-ev Автор
30.01.2023 21:02Я думал сделать так. Создать для персон отдельную таблицу-справочник, в котором уникальное ID персоны (пусть будет ИНН) будет связано со всеми фактами упоминаний этой персоны в основной таблице. НО! У меня есть ещё три справочника - по фамилиям, именам и отчествам (учитывают все возможные варианты написания соответственно фамилий, имен и отчеств по всем персонам), чтобы по запросу по унифицированным ФИО подгружались все возможные варианты написаний. Но не будет ли это конфликтовать с единым справочником?...
jobless
31.01.2023 06:52В недрах ГИЦ МВД ищите контакты с теми кто помнит о наличии диссертаций времен бумажных учётов на тему правильного формирования запросов по ФИО и методикам интерпретации результатов поиска.
al_kotler
31.01.2023 14:05Я своих предков смог проследить до 1848 года. И только благодаря тому что в станице Воровсколесской нашелся человек похожий на автора статьи. Который создал сайт http://vorovskolesskaja.narod.ru и выложил на него исповедные росписи (раздел Генеалогия). А до этого мои предки предположительно прибыли из Воронежской губернии. Только вряд ли были служивыми людьми. И они точно не были из Хоперских казаков которые первыми сюда прибыли и попали в роспись 1827 года.
Praksitel
31.01.2023 15:18Очень интересно! Живу в Липецкой области, sql и postgres знаю, готов помочь, чем смогу!
dim-ev Автор
31.01.2023 20:50Отлично, давайте спишемся. В Липецкой области находились несколько древних городов: Елец, Чернавск, да и Сокольск, который теперь в состава Липецка. Приходилось заниматься населением этих уездов XVII века - тоже сплошь служилые люди были.
JohnSelfiedarum
31.01.2023 15:30Всё показанное Вами очень хорошо укладывается в понятие "аналитическая база данных". Именно там можно легко строить выборки типа "соседи соседей, которые могли видеть". Из наиболее универсальных можно взять ClickHouse - она и масштабируется, и раскидывает вычислительные мощности по разным серверам. При желании то же самое можно реализовать и в других распределённых базах, типа GreenPlum, Hadoop.
menstenebris
Реляциями можно описать любую структуру, но не всегда удобно. Поэтому если нет понимания какую систему хранения выбрать, реляционная база будет оптимальным выбором. Тем более что postgres для этой задачи имеет хорошее преимущество, документы можно хранить в JSON, как в документоориентированной БД.
Часто бывает что для разных задач используют несколько баз данных. И хотя postgres имеет свой движок полнотекстового поиска. Более слабый, но часть задач покрывает. Когда ожидается серьёзный полнотекстовый поиск то чаще берут ElasticSearch в связку.
Это же применимо и к графовым базам. Циклические графовые связи (связи между людьми) можно хранить в графовой базе, а ациклические в реляционной.
Можно попробовать натянуть AGE на Postgres