СИСТЕМА И МЕТОДЫ ХРАНЕНИЯ И УПРАВЛЕНИЯ ОБЪЕКТАМИ ДАННЫХ

1. Система хранения и управления данными в вычислительной среде, включающей в себя физический носитель данных и оперативную память компьютера, характеризующаяся тем, что любой самостоятельно хранимый набор данных, именуемый объектом базы данных, обладает глобальным уникальным идентификатором GUID, а полная совокупность упомянутых объектов образует физическую базу данных.
2. Система управления данными по п.1, в которой упомянутый GUID уникально идентифицирует объект базы данных, и при этом кодирует местоположение упомянутого объекта базы данных на физическом носителе и используется для получения доступа к упомянутому объекту данных.
3. Система управления данными по п.1, отличающаяся тем, что упомянутый GUID представлен целым компьютерным числом.
4. Система управления данными по п.1, в которой упомянутый объект базы данных включает в себя заголовок объекта и кортеж значений.
5. Система управления данными по п.4, в которой упомянутый заголовок объекта базы данных включает в себя значение полной длины объекта в байтах информации, а также уникальный идентификатор типа кортежа значений UIDT, собственный GUID объекта и номер состояния объекта данных.
6. Система управления данными по п.5, в которой упомянутая длина объекта является полной длиной объекта в байтах информации в формате целого компьютерного числа.
7. Система управления данными по п.5, в которой упомянутый номер состояния объекта является целым компьютерным числом, указывающим на номер конкретного промежуточного состояния базы данных, при котором были сделаны последние изменения в содержимом объекта.
8. Система управления данными по п.5, в которой упомянутый уникальный идентификатор типа кортежа значений UIDT является целым компьютерным числом, которое однозначно указывает на структуру метаданных, содержащую описание каждого отдельного элемента кортежа, или на уникальный способ организации кортежа.
9. Система управления данными по п.4, в которой упомянутый кортеж значений является динамически расширяемым массивом ячеек, каждая из которых является контейнером для хранения отдельно взятого значения, и идентифицируется в кортеже значений своим неизменным порядковым номером, именуемым индексом.
10. Система управления данными по п.9, в которой упомянутое отдельно взятое значение включает в себя заголовок, который содержит полную длину собственно хранимого значения в байтах информации в формате целого компьютерного числа, и собственно хранимое значение.
11. Система управления данными по п.10, в которой упомянутое собственно значение является или атомарным, или динамически расширяемым массивом ячеек по аналогии с кортежем значений, доступ к которым осуществляется по их индексу.
12. Система по п.11, отличающаяся тем, что упомянутое собственно значение в атомарной форме или в качестве элемента массива является объектом базы данных.
13. Система по п.11, отличающаяся тем, что упомянутое собственно значение в атомарной форме или в качестве элемента массива является списком произвольной длины, каждая запись которого содержит два значения, образующих логически связанную пару «ключ-значение».
14. Система управления данными по любому из пп.12 и 13, отличающаяся тем, что упомянутое собственно значение содержит либо содержимое указанного субъекта данных, либо упомянутый субъект инкапсулирован в объект базы данных, и упомянутое собственно значение содержит GUID этого субъекта.
15. Способ управления данными, характеризующийся тем, что любое отдельное изменение или логически связанная совокупность изменений, вносимые извне в номенклатуру или содержимое полного множества хранимых объектов физической базы данных по п.1, тем самым переводят базу данных в новое состояние, и упомянутые изменения осуществляются таким образом, что образуется подмножество хранимых объектов данных нового состояния базы данных, и при этом в заголовке каждого из объектов данных упомянутого подмножества в качестве значения номера состояния объекта сохраняется число, соответствующее порядковому номеру сделанных изменений, отсчитываемому от начала существования базы данных.
16. Способ по п.15, отличающийся тем, что все упомянутые изменения, затрагивающие содержимое уже существующего отдельного объекта базы данных, вносятся в его полную копию, которая принадлежит упомянутому ранее подмножеству объектов нового состояния базы данных и автоматически создается при отсутствии таковой в упомянутом подмножестве, при этом как исходный объект, так и его более поздняя копия обладают одинаковым GUID, но различаются по значению номера состояния, хранимого в заголовке объекта по п.7.
17. Способ по п.15, отличающийся тем, что для каждого вновь создаваемого объекта базы данных упомянутая ранее система хранения и управления данными выделяет новый GUID, являющийся уникальным в полном множестве хранимых объектов, который сохраняется в заголовке упомянутого объекта по п.5.
18. Способ по п.15, отличающийся тем, что в случае, когда вся упомянутая совокупность исходных изменений сделана полностью, объекты базы данных упомянутого подмножества нового состояния сохранятся на физическом носителе, замещая собой более ранние копии этих же объектов, но при этом упомянутые более ранние копии объектов остаются доступны в оперативной памяти компьютера без сохранения их на физическом носителе.
19. Способ по п.15, отличающийся тем, что в случае, когда независимо от причины вся упомянутая совокупность исходных изменений не может быть сделана полностью, все объекты базы данных упомянутого ранее подмножества нового состояния базы данных полностью уничтожаются.
20. Способ управления данными, характеризующийся тем, что выборка значений из объектов базы данных реализуется таким образом, что независимо от наличия последующих изменений, фактически вносимых в базу данных после начала выборки, все без исключения значения выбираются таким образом, как будто копии объектов базы данных, в которые вносятся изменения после начала упомянутой, выборки данных, полностью недоступны для выборки.
21. Способ по п.20, отличающийся тем, что перед началом упомянутой выборки значений у системы управления данными запрашивается номер последнего актуального состояния базы данных, и этот номер используется в течение всей выборки совместно с GUID для доступа к объектам базы данных запрошенного или более раннего состояния.
22. Способ управления данными, характеризующийся тем, что обеспечивает конвертацию GUID объекта базы данных в физический адрес оперативной памяти компьютера, занимаемого упомянутым объектом, таким образом, что из нескольких одновременно существующих в оперативной памяти копий одного и того же объекта, порожденных внесением изменений в базу данных, будет выбрана такая самая старшая копия, значение номера состояния которой будет меньше или равно запрошенному вместе с GUID номеру состояния базы данных.
23. Способ управления данными, характеризующийся тем, что для получения доступа к любому хранимому значению из кортежа значений любого объекта физической базы данных достаточно указать физический адрес, занимаемый объектом в оперативной памяти компьютера, и индекс ячейки, занимаемой значением, в кортеже значений объекта, или последовательный перечень индексов ячеек в случае, когда ячейка кортежа значений объекта базы данных содержит динамически расширяемый массив ячеек.
24. Система управления данными по п.4, отличающаяся тем, что упомянутый объект базы данных, именуемый в данном случае объектом класса, является частным экземпляром, производным от объекта базы данных, именуемого в данном случае классом данных.
25. Система управления данными по п.24, отличающаяся тем, что упомянутый в п.2 GUID объекта базы данных, содержащего класс данных, является, по существу, уникальным идентификатором класса данных ID С, входящим в домен идентификаторов пользовательского типа данных UDT, который, в свою очередь, является частью общего домена идентификаторов типов данных UIDT.
26. Система управления данными по п.24, в которой кортеж значений по п.4 упомянутого класса данных в каждой ячейке содержит экземпляр фундаментальной абстрактной структуры данных, именуемой атрибутом класса, а сам упомянутый кортеж значений класса данных именуется кортежем атрибутов.
27. Система управления данными по п.26, в которой каждый экземпляр упомянутого атрибута класса однозначно идентифицируется его индексом в кортеже атрибутов своего класса данных.
28. Система управления данными по п.26, в которой каждый экземпляр упомянутого атрибута класса является мета-описателем типа и условий существования значения, обладающего таким же индексом в кортеже значений в каждом объекте класса, производном от класса данных, которому принадлежит упомянутый экземпляр атрибута.
29. Система управления данными по п.26, в которой упомянутый объект класса содержит в заголовке значение UIDT по п.8 равное IDC класса данных по п.25.
30. Система управления данными по п.24, в которой кортеж значений по п.4 упомянутого производного объекта класса произведен от кортежа атрибутов по п.26 своего класса данных.
31. Система управления данными по п.30, в которой каждое значение из кортежа значений любого объекта класса производно от соответствующего по индексу атрибута из кортежа атрибутов своего класса данных, и существует по правилам, определяемым содержимым упомянутого атрибута.
32. Система управления данными по п.28, в которой упомянутый атрибут класса обладает пользовательским наименованием, уникальным в полном множестве наименований всех экземпляров атрибутов из кортежа атрибутов своего класса данных, а также включает в себя уникальный идентификатор UIDT типа значения, хранимого в производных объектах данных, и метрику типа упомянутого значения.
33. Система управления данными по п.28, в которой упомянутый атрибут класса включает в себя одномерный динамически расширяемый массив ячеек, каждая из которых содержит пользовательское наименование ячейки упомянутого массива.
34. Система управления данными по п.33, в которой атрибут класса описывает: или атомарную форму существования производных значений данного атрибута в объектах класса, если в упомянутом массиве не инициализирована ни одна ячейка, или перечислимую форму существования производных значений данного атрибута в объектах класса в форме динамически расширяемого массива ячеек по п.17.
35. Система управления данными по п.24, в которой упомянутый класс данных является производным экземпляром абстрактного класса данных.
36. Система управления данными по п.24, в которой упомянутый класс данных, именуемый в данном случае дочерним классом, является производным экземпляром другого экземпляра класса данных, именуемого в данном случае родительским классом, и при этом перманентно наследует полный кортеж атрибутов упомянутого родительского класса данных, а значение UIDT заголовка упомянутого дочернего класса по п.25 равно значению IDC родительского класса данных.
37. Система управления данными по п.36, в которой любые изменения, вносимые в кортеж дочернего класса данных, не изменяют при этом содержимого кортежа атрибутов упомянутого родительского класса данных, и при этом унаследованные от родительского класса атрибуты дочернего класса данных сохраняют прямую наследственную связь с соответствующими атрибутами родительского класса.
38. Система управления данными, характеризующаяся тем, что любая связь между двумя объектами класса по п.24 является строго взаимно симметричной и реализуется взаимными ссылками упомянутых объектов класса друг на друга таким образом, что каждая ссылка включает в себя GUID целевого объекта класса.
39. Система управления данными по п.38, отличающаяся тем, что связь между двумя объектами класса производится от взаимного симметричного отношения классов данных, от которых производны упомянутые объекты класса, и упомянутое отношение является абстрактным мета-описателем условий реализации взаимной связи между объектами класса.
40. Система управления данными по п.39, отличающаяся тем, что упомянутое отношение классов данных реализуется двумя экземплярами атрибутов класса, именуемыми в данном случае атрибутами отношения, таким образом, что каждый из упомянутых атрибутов отношения включает в себя однозначный указатель на оппозитный атрибут отношения, а частные свойства собственно отношения классов содержатся в свойствах упомянутых атрибутов отношения.
41. Система по п.40, отличающаяся тем, что каждый из упомянутых атрибутов отношения в значении UIDT содержит идентификатор IDC целевого в упомянутом отношении экземпляра класса данных, а в значении метрики типа значения сохраняет индекс оппозитного атрибута отношения в кортеже атрибутов целевого в упомянутом отношении класса данных.
42. Система по п.40, отличающаяся тем, что связывание двух классов данных отношением классов реализуется таким образом, что упомянутые атрибуты отношения создаются по одному экземпляру в кортежах атрибутов каждого из упомянутых экземпляров классов данных, и при этом один из двух упомянутых атрибутов отношения всегда является первичным по факту своего создания в классе данных, и именуется атрибутом прямой ссылки, а второй атрибут отношения произведен от первого атрибута и именуется атрибутом обратной ссылки.
43. Система по п.40, отличающаяся тем, что допускает создание упомянутого симметричного отношения, инкапсулированного в одном классе данных, таким образом, что оба экземпляра атрибутов отношения создаются в одном кортеже атрибутов упомянутого класса данных.
44. Система по п.40, отличающаяся тем, что упомянутое отношение классов данных может быть отношением типа «один-к-одному», которое характеризуется тем, что оба атрибута отношения являются равноправными, и описывают производное значение в кортежах объектов класса как атомарное значение GUID объекта целевого класса отношения.
45. Система по п.40, отличающаяся тем, что упомянутое отношение классов данных может быть отношением типа «многие-к-одному», которое характеризуется тем, что в классе данных, играющем в упомянутом отношении роль «многие», может быть размещен только атрибут прямой ссылки упомянутого отношения, и соответственно, в классе данных, играющем в упомянутом отношении роль «один», атрибут обратной ссылки будет создан автоматически по п.42.
46. Система по п.45, отличающаяся тем, что оба атрибута, образующие отношение типа «многие-к-одному», перманентно имеют перечислимую форму динамически расширяемого массива ячеек для представления производного значения в кортежах значений объектов своего класса.
47. Система по п.45, отличающаяся тем, что значение в кортеже объекта данных, производное от атрибута обратной ссылки отношения типа «многие-к-одному», является списком вида ключ-значение, именуемым списком обратных ссылок.
48. Способ управления данными, обеспечивающий строгую симметрию реализации отношений таким образом, что при создании атрибута прямой ссылки в кортеже исходного класса данных автоматически создается производный от него атрибут обратной ссылки в кортеже целевого класса данных, а каждой прямой ссылке в исходном объекте данных на целевой объект данных соответствует одна и только одна обратная ссылка в целевом объекте данных на исходный объект.
49. Система управления данными по п.24, в которой перманентно существует только один предопределенный, обладающий фиксированным значением идентификатора GUID, системный экземпляр класса данных, именуемый суперклассом, а также перманентно существует хотя бы один экземпляр объекта данных, именуемый супер-объектом, производный от упомянутого супер-класса, также обладающий фиксированным значением идентификатора GUID.
50. Система управления данными по п.49, в которой каждый вновь создаваемый экземпляр пользовательского класса данных автоматически содержит отношение типа «многие-к-одному» с упомянутым ранее супер-классом, и каждому вновь создаваемому объекту данных упомянутого пользовательского класса в качестве значения атрибута, указателя на супер-класс, автоматически присваивается GUID упомянутого ранее супер-объекта.