Remember how I said the IPv6 address space is big? Here’s a diagram where the v4 address space is shown as a box 1.6 inches on a side. Using the same scale, the box for the IPv6 address space is a square about the size of our solar system. So…yeah…bigness incarnate. I see your bigness and raise you 340 trillion trillion trillion addresses.
I used to be in the Object Oriented DataBase business, but am all better now, thank you for asking. This is relevant because the only way to make objects work is when you can uniquely identify entities. Various databases have come up with different ways to do this:
- unique table row identifiers
- mapping in-memory objects via an address to/from storage
- single-table databases with hundreds of columns
- mapping in-memory pages to/from storage
- and let’s not forget the Web. A URI is specifically a way to refer to specific information, or in the case of a search engine, a way to gain an indirect reference to types of information, which typically are taxonomy free and referred to only by bags of keywords.
It occurred to me that we could easily, trivially in fact, represent every entity (device, facility, tag, point, definition, etc.) ever created, ever, in every copy of CygNet ever installed, anywhere, and all of these items created in the future, in an infinitesimal fraction of the IPv6 address space. And yes, this would include meta-objects like collections of entities, and collections of collections. Oh, and I should point out that you never have to delete an item if you don’t want to. IPv6 is the Alice’s Restaurant of networking. You don’t have to clean up for a very long time.
You do end up needing an ARS on steroids that’s essentially a high-performance metadata (location of an entity as a URI) server to help you get and store items, and to pass out new PUIDs (Persistent GUID) and to communicate with other EMSs (Entity Metadata Service).
EMSs would work in a fashion analogous to DNS, in that not every EMS would have a list of everything everywhere. They would know who to ask, and I would eschew a hierarchical model in favor of a federated model where groups of EMSs agree to resolve certain stretches of the address space. In addition to EMSs, we’d have a Storage Management Service (SMS) responsible for storing and retrieving the actual entities.
I hear you asking, “Ummm…have you been drinking?”
No, I don’t drink or do drugs. Try again.
“Why? Why would you want to do this? What could possibly justify this model?”
Page numbers didn’t become common until several generations after the introduction of the printing press. Page numbers were the addressing unit of the late Middle Ages. They made business and reference science possible (along with Arabic numerals). A flat, effectively infinite address space is the Table Of Contents and Index (both of these a side-effect of page numbering) of the coming era of ubiquitous networked computing.
You need to be able to uniquely identify, instantiate, and store business entities, and the simpler it is to do this, the cheaper it is.
Every generation of digital technology was predicated on a “fact” that addressability had some upper limit: 30KW, 4Kb, 64Kb, 640Kb, 2GB, 4GB, etc., and this is only memory. Similar curves exist for data and metadata. Every generational transition involved an order of magnitude increase (at least) in the available addressable space accessible by computational entities. Old technologies had to be thrown away, or maintained at great cost (by increasingly scarce and expensive developers willing to remain locked to old tech) to stay functional.
I’d like to avoid that problem. Shifting to common address space makes certain types of planning and debugging much easier, especially if you use logical subdivisions, e,g. CygNet image backups for Customer Foo at EOY 2015 occupy addresses FOO-BAR, forever. Connect a support EMS with management authorization and you’re looking at customer data.
Page numbers weren’t invented, so far as I have been able to determine (yes, I’ve looked for this), for 80-100 years after the invention and common use of the printing press (in Europe, at least). Indices took even longer. Why? Because it never occurred to anyone, except lunatics, that you might want to somehow categorize and access data in anything other than a linear fashion. Religious texts seem to have been the first to adopt this model, to make it quicker and easier to find verses justifying whatever horrible thing you were thinking of doing.
The history of ordered alphabets is similar. Today, most developers and analysts literally have never thought of a universe in which everything exists via a single addressing mechanism. It’s as inconceivable as the notion of page numbers was to Dark Age scribes. But…it has to happen. Why?
Ronald Coase is why. His work on transaction costs leads me to conclude that corporations will, indeed must adopt technologies that lower transaction costs, and unified addressing is part of that, just as page numbers and Arabic numbering systems made accounting and universal literacy possible.
I believe that this is probably part of what’s driving Microsoft’s most recent foray into functional programming, e.g. http://msdn.microsoft.com/en-us/magazine/cc164244.aspx – Data is just…data. You use it, you store it, you request it. The addressing mechanism shouldn’t get in the way, and right now we have in-memory structures, on-disk structures, and database structures. The real-world limitation is, of course, speed of access, but the SMS would be responsible for keeping data fresh, cached, and backed-up to slow storage as required.
Yeah…I know, I’m still trying to convince myself that this is necessary, and I fully understand that it’s not currently necessary, but just as Gary Wescom foresaw an era with billions of computers networked together, I’m thinking ahead to an era where we have effectively uncountable computational entities that need to be managed.
Other services required:
MSMS – Metadata Schema Mapping Service – translates between CygNet v6 addresses and foreign address taxonomies designed to represent unique items. It would almost certainly be a specialty implementation of the EMS.
- Library Of Congress
- Database Mappings (location + database name + row Id + …)
- Manufacturer-specific serial number datastores
- Structured, site/domain-specific URIs
- Social Security Numbers
- Phone Numbers