I wouldn't really say this is a conventional "design pattern".
The issue here isn't just the global scope of access, but the fact that you're looking things up each time by "index", rather than using the compiler facilities (like named variables).
As others have said, this sounds somewhat like how a database works. But that is only from the perspective of its external API, where the whole point is to provide an abstraction of storage, including allowing permanent records to be referred to in a machine-independent and session-independent way (because those things will change over the life of the record, and the reference must stay valid).
It's not really how database engines work internally as executable programs.
As a technique for storing "variables" as we usually know them within running programs, this is either just extravagant complexity and reimplementation in bespoke software of the things that are adequately provided by hardware and standard compilers, or it is designed to overcome unusual memory constraints where perhaps there needs to be shared memory between two processes, a system for accessing it, and an inability to compile the two processes simultaneously so as to guarantee a specific memory layout.
Even if the technique is legitimate, there's the potential there won't be a specific name for it because it isn't used often enough by enough practitioners, but is instead used (and perhaps, autonomously invented by) by a very small number of those creating applications under highly specific circumstances, for whom the technique is just an unnamed facet of how their application works (and of which facet their understanding is entirely non-verbal).