RFC 2258
Internet Nomenclator Project
Internet Nomenclator Project ๐
RFC 2258 โจ is an Informational doc (so it's giving "here's some info," not "you must do this") from J. Ordille at Bell Labs, Lucent Technologies, dated January 1998 ๐ . The original title block doesn't list anything it obsoletes or updates, so there's nothing to report there ๐ .
Status of This Memo ๐
bestie, this memo is just giving info for the Internet community ๐ซถ It does not specify an Internet standard of any kind, so nobody's on the hook for implementing it. Distribution is totally unlimited too, so share away ๐ฆ
Copyright Notice ยฉ๏ธ
Copyright (C) The Internet Society (1998). All Rights Reserved. ๐
Abstract ๐ธ
okay so the whole goal of the Internet Nomenclator Project is to bring together the hundreds of publicly available CCSO servers from all over the world ๐ Each CCSO server has its own database schema, which is basically its own custom setup for whatever organization runs it ๐ ๏ธ The project is blending all those different schemas into one query service, so you can search everything at once ๐ฅ
Nomenclator is going to give you fast cross-server searches for finding people on the Internet ๐ต๏ธโโ๏ธ It's an add-on to the existing CCSO services, bringing schema integration, better indexing, and two kinds of caching ๐ And the best part? It scales as the number of CCSO servers grows, so it doesn't get messy as more servers join the party ๐
One of the best things is that administrators can plug their CCSO servers into Nomenclator without changing the servers at all ๐ Nomenclator only needs basic info about each server. Iconic, honestly ๐
This document gives you an overview of the Nomenclator system, explains how to register a CCSO server in the Internet Nomenclator Project, and shows how to use the Nomenclator search engine to find people on the Internet ๐ง
1. Introduction ๐
Hundreds of organizations share directory info through the CCSO name service protocol [3] ๐ The info about people is amazing, but finding one specific person can be a whole ordeal ๐ญ Why? Because every organization's server is its own independent little kingdom ๐ The servers each have their own database schemas, meaning different attribute names and data formats, so nothing lines up neatly ๐
Here's the wild part: the 300+ CCSO servers have more than 900 different attributes to describe people ๐ Very few attributes are shared across them. Only name and email show up in more than 90% of the servers [4] ๐ And since there's no special support for cross-server searches, searching can be slow and expensive ๐ Not it.
So the goal of the Internet Nomenclator Project is to give you fast, integrated access to the info in the CCSO servers โก This is the first large-scale use of the Nomenclator system, which is honestly a bigger deal than just a white pages directory ๐ฆ Nomenclator is a scalable, extensible information system for the whole Internet, periodt โจ
Nomenclator answers descriptive (aka relational) queries ๐ง You can look up info about people, organizations, hosts, services, publications, and other objects just by describing their attributes ๐ฏ It gets this speed from two things: an active catalog and extensive meta-data and data caching ๐
The active catalog is the main character here ๐ It narrows your search by handing back a list of the data repositories where your answer is most likely hiding ๐ Meanwhile, meta-data and data caching keep the frequently used stuff close to you, which cuts down on communication and processing costs ๐ซถ
With the Internet Nomenclator Project, you can query any CCSO server no matter what its attribute names or data formats look like ๐ You just send your query to Nomenclator, which gives you a world view of the data across all the servers ๐ You write your queries in that world view, and Nomenclator handles the rest ๐
Here's how the flow goes ๐ If a previous query already cached the answer, Nomenclator hands it back immediately โก If not, it uses the active catalog to limit the query to just the relevant CCSO servers ๐ฏ Since only those servers get contacted, things speed up big time ๐ Nomenclator also translates the global query into local queries for each relevant server, then translates the responses back into the world view format ๐ฆ
+-------------+ +-------------+
| | | |
World View | | Local View | |
Query | | Query | Relevant |
----------->| |------------>| |
| Nomenclator | | CCSO |
| | | |
<-----------| |<------------| Server |
World View | | Local View | |
Response | | Response | |
+-------------+ +-------------+
Figure 1: A Nomenclator Query
Nomenclator translates queries to and from
the language of the relevant CCSO servers.
The Internet Nomenclator Project makes it way easier to find a particular CCSO server, but it doesn't send every query to that server ๐ When Nomenclator narrows down the search, it screens out the irrelevant queries before they ever reach the server ๐ก๏ธ When Nomenclator finds an answer in its cache, it screens out the redundant queries too ๐ So the server is easier to find and use, without getting slammed by the exhaustive and repeated searches that would otherwise spike its load ๐
This project also lays the foundation for a much broader heterogeneous directory service for the Internet ๐ Right now, Nomenclator gives you integrated access to CCSO and relational database services ๐๏ธ The Nomenclator System Architecture can handle fast, integrated searches across any collection of heterogeneous directories ๐ง The project can be extended to support additional name services or to provide integrated query services for other application domains ๐ฎ It's starting with CCSO services because they're widely available and successful, which makes them the obvious place to begin ๐ซถ
Here's the roadmap ๐บ๏ธ Section 2 goes deeper into the Nomenclator system. Section 3 explains how to register a CCSO server as part of the project. Section 4 gives a quick rundown of how to use Nomenclator. Section 5 wraps everything up with a summary ๐
2. Nomenclator System ๐
Nomenclator is a scalable, extensible information system for the Internet ๐ It supports descriptive (aka relational) queries, so you find info about people, organizations, hosts, services, publications, and other objects by describing their attributes ๐ฏ Its speed comes from an active catalog plus extensive meta-data and data caching โก
The active catalog limits the search space for a query by returning a list of data repositories where the answer is likely to be found ๐ Its components are distributed indices that isolate queries to parts of the network, along with smart algorithms that shrink the search space using semantic, syntactic, or structural constraints ๐ง Meta-data caching boosts performance by keeping frequently used characterizations of the search space close to the user, which reduces active catalog communication and processing costs ๐ When Nomenclator looks for query responses, these techniques make things faster by contacting only the data repositories that are likely to actually have responses, so search times stay acceptable โฑ๏ธ
Administrators make their data available in Nomenclator by supplying info about the location, format, contents, and protocols of their data repositories ๐ฆ Experience with Nomenclator shows that gathering a small amount of information from data owners can have a huge positive impact on how well users can retrieve info ๐ For example, each CCSO administrator provides a mapping from the local view of data (aka the local schema) at the CCSO server to Nomenclator's world view ๐บ๏ธ Administrators also supply possible values for any attributes with small domains at the data repository, like the "city" or "state_or_province" attributes ๐๏ธ With that info, Nomenclator can isolate queries to a small percentage of the CCSO data repositories and still give you an integrated view of their data ๐ซถ
Nomenclator also provides tools that minimize the effort admins spend characterizing their data repositories, so it's not a chore ๐ ๏ธ And here's the big win: Nomenclator does not require administrators to change the format of their data or the access protocol for their database ๐ Your servers stay exactly as they are, and the whole system just works around them, slay ๐โจ
2.1. Components of a Nomenclator System โจ
okay so a Nomenclator system is basically two things working together ๐ : a distributed catalog service and a query resolver. The catalog is the one that gathers all the meta-data about data repositories and then makes it available to the resolver. And the meta-data is juicy ๐: constraints on attribute values at a data repository, known patterns of how data is spread across several repositories, search and navigation techniques, schema and protocol translation techniques, and the different schemas used at each repository. It's giving organized chaos, but make it make sense ๐ง
+-------------+ +-------------+
| | | |
World View | | Meta Data | |
Query | | Request | Distributed |
----------->| Query | ----------->| |
| Resolver | | Catalog |
| | | |
<-----------| (caches) | <-----------| Service |
World View | | Meta Data | |
Response | | Response | |
+-------------+ +-------------+
Figure 2: Components of a Nomenclator System
Query resolvers at the user sites are the ones who retrieve, use, cache, and reuse this meta-data while they answer user queries ๐ฆ. The catalog is "active" in two ways, and I'm obsessed with this part ๐ญ. First, some meta-data gets moved from the distributed catalog service over to each query resolver during query processing. Second, the resolver takes the initial meta-data (especially the search and navigation techniques) and uses it to generate more meta-data that guides the rest of the query processing. Typically, one resolver process serves a few hundred users in an organization, so those users can benefit from bigger resolver caches ๐ธ
Resolvers cache a few different things to speed up future queries ๐: techniques for constraining the search space, the results of searches that were already constrained (that's meta-data), and past query answers (that's data). Meta-data and data caching is how the resolver gets tailored to the specific needs of the users at its query site ๐. It also helps the whole system scale up, because it cuts down on the load from repeated searches or queries hitting the distributed catalog service, the data repositories, and the communications network. Not me being impressed by the efficiency ๐
The distributed catalog service is logically one network service, even though it can be split into pieces that are distributed and/or replicated ๐. Query resolvers access this distributed, replicated service using the same techniques that work for multiple data repositories, which is so clean โจ
A Nomenclator system naturally includes many query resolvers. Resolvers are independent (go them!) but also renewable query agents, and they can be as powerful as the resources available at the user site ๐. Caching makes the resolver less dependent on the distributed catalog service for frequently used meta-data, and less dependent on data repositories for frequently used data. So caching improves how many users can be supported and how locally available the query service is. Main character energy, honestly ๐
2.2 Meta-Data Techniques โจ
okay so the active catalog organizes the whole info space into a bunch of relations about people, hosts, orgs, services, and other objects ๐๏ธ ๐ For each relation it collects meta-data and sorts it into "access functions," which are basically the things that help you find and grab the data ๐ Every access function is answering one question: "Where is the data that answers this query?" ๐ค
There are two kinds of answers, and I'm obsessed with how clean this is ๐ญ The first is "Look over there." ๐ That's what catalog functions say. They narrow the search by only pointing you at the data repositories that actually have relevant stuff. What they hand back is a referral to either data access functions that can answer the query, or more catalog functions to check for extra details. The second answer is "Here it is!" ๐ That's data access functions. They know how to get answers out of specific repositories, and they return the tuples that answer the query. Nomenclator comes with access functions for common name services like the CCSO service, and organizations can write and supply their own for the data in their repositories ๐ซถ
Access functions can be remote or local services ๐ฆ Remote access functions are available through a standard remote procedure call interface. Local access functions are supplied with the query resolver itself. Local ones can be used for all sorts of indexing and retrieval jobs, as long as they get loaded with meta-data from the distributed catalog service ๐ Remote ones are preferred when the query resolver doesn't have enough resources to run the access function. Data owners might also pick remote access functions for privacy reasons, if their functions use proprietary information or algorithms ๐ Local functions are preferred whenever possible, because they're highly replicated in resolver caches. That cuts down on system and network load by bringing the active catalog's resources right to the users ๐ธ
Adding remote access functions to Nomenclator is easy, and so is applying local ones to new data repositories, because the active catalog gives you "referrals" that spell out the conditions for using each access function โจ This document keeps it simple and only describes referral techniques for exact matching of query strings. Nomenclator extends these techniques to handle query strings with wildcards, or word-based matching in the style of the CCSO services ๐
Each referral has a template and a list of references to access functions ๐ The template is a conjunctive selection predicate that describes the scope of those access functions. Any conjunctive query that's within the template's scope can be answered with that referral. When a template has a wildcard value ("*") for an attribute, that attribute has to show up in any query processed by the referral ๐ The system follows this rule:
Query Coverage Rule:
If the set of tuples satisfying the selection predicate in a query
is covered by (is a subset of) the set of tuples satisfying the
template, then the query can be answered by the access functions in
the reference list of the referral.
Let's look at an example, because this is where it clicks ๐ง The query below:
select * from People where country = "US" and surname = "Ordille";
is covered by templates (1) through (3) below, but NOT by templates (4) and (5):
(1) country = "US" and surname = "*"
(2) country = "US" and surname = "Ordille"
(3) country = "US"
(4) organization = "*"
(5) country = "US" and surname = "Elliott"
Referrals form a generalization/specialization graph for a relation, and that's called a "referral graph" ๐ It's a conceptual tool that guides how the different catalog functions fit into the system, and it's the basis for building catalog functions and processing queries. More precisely, a "referral graph" is a partial ordering of the referrals for a relation. It's built with the subset/superset relationship, "S is a subset of G." A referral S is a subset of referral G if the set of queries covered by S's template is a subset of the set of queries covered by G's template. S counts as the more specific referral, and G is the more general one ๐ฆ Here's the subset relationship between these pairs of referrals:
(1) country = "US" and surname = "Ordille"
is a subset of
country = "US"
(2) country = "US" and surname = "Ordille"
is a subset of
country = "US" and surname = "*"
(3) country = "US" and surname = "*"
is a subset of
country ="US"
(4) country = "US"
is a subset
"empty template"
But the subset relationship does NOT exist between these pairs:
(5) country = "US"
is not a subset of
department = "CS"
(6) country = "US" and name = "Ordille"
is not a subset of
country = "US" and name = "Elliott"
In lines (1) and (2), the more general referral covers more queries, since it covers queries with different surname values. In line (3), the more general referral covers more queries too, because it covers queries that don't constrain surname to any value at all. In line (4), the specific referral only covers queries that constrain country to "US", while the empty template covers every query ๐
During query processing, wildcards in a template get replaced with the matching attribute value from the query ๐ซถ For any query covered by two referrals S and G where S is a subset of G, the set of tuples satisfying S's template is covered by the set of tuples satisfying G's template. S is the one used to process the query, because it's the more constrained (and faster) search space โก S has a more constrained logical search space than G, since the set of tuples in S's scope is no larger than G's, and often smaller. S also has a more constrained physical search space. The repositories that have to be contacted for answers to S also have to be contacted for answers to G, but G might need extra repositories on top of those ๐
When a catalog function constrains a query, it always produces a referral that's more specific than the referral that contained the catalog function ๐ฅ Wildcards ("*") in a template show which attribute values the catalog function uses to generate that more specific referral. So catalog functions always follow this rule:
Catalog Function Constrained Search Rule:
Given a referral R with a template t and a catalog function cf,
and a query q covered by t, the result of using cf to process q,
cf(q), is a referral R' with template t' such that q is covered
by t' and R' is more specific than R.
Catalog functions let you import a chunk of the indices for the info space into the query resolver ๐ง Since they generate referrals, the resolver can cache the most useful referrals for a relation and call the catalog function whenever it needs fresh ones ๐
The resolver's query processing algorithm starts with an initial set of referrals from the distributed catalog service ๐ Then it navigates the referral graph, calling catalog functions as needed to get extra referrals that narrow the search space. Sometimes two referrals that cover the query are in a general-to-specific relationship with each other. In that case the resolver skips unnecessary access function processing by only using the most specific referral along each path of the referral graph โจ
At the start, the search space for the query is all the data repositories in the relation ๐บ๏ธ As the resolver collects referrals to sets of relevant data repositories (and their associated data access functions), it intersects them to narrow the search space even more. The intersection only keeps the data repositories that show up in all of the referrals. Intersection also combines independent paths through the referral graph, so you get the benefit of indices on different attributes ๐ซง
2.3 Meta-Data and Data Caching ๐
A Nomenclator query resolver caches the meta-data it gets back from calling catalog functions ๐ฆ It also caches the responses to queries. If a new query's predicate is covered by a previous query's predicate, Nomenclator works out the response for the new query from the cached response of the old one ๐ง
Nomenclator timestamps its cache entries so it can measure how current the query responses are and refresh selectively โฑ๏ธ Those timestamps are used to calculate a t-bound on query responses [5][1]. A t-bound is the time after which changes may have occurred to the data that aren't reflected in the query response. It's the time of the oldest cache entry used to calculate the response ๐ญ Nomenclator returns a t-bound with each query response. If users want more current data, they can ask for responses that are more recent than the t-bound. Making that request flushes older items out of the cache when more recent items are available ๐ธ Query resolvers calculate a minimum t-bound that sits some refresh interval earlier than the current time. Resolvers keep themselves current by replacing any cache items that are earlier than the minimum t-bound ๐ฆ
Bestie, the t-bound is the big idea here: it tells you the oldest data that might've been used to build your answer, so you always know how fresh it is ๐
2.4 Scale and Performance ๐
There are three performance studies of active catalog and meta-data caching techniques [5] ๐ฅ The first study shows that the active catalog and meta-data caching can constrain the search effectively in a real environment, which was the X.500 name space ๐ The second study looked at the performance of an active catalog and meta-data caching for single users on a local area network. The experiments showed that the techniques for eliminating data repositories from the search space can dramatically improve response time. That happens because latency goes down, and cutting latency in communications and processing is critical for large-scale descriptive query optimization ๐ The experiments also showed that an active catalog is the most significant contributor to better response time in a system with low load, and that meta-data caching helps reduce the load on the system ๐ซถ
The third study used an analytical model to evaluate how these techniques perform and scale in a large Internet environment โจ It showed that meta-data caching plays an essential role in scaling the distributed catalog service to millions of users ๐คฏ It also showed that constraining the search space with an active catalog contributes significantly to scaling data repositories to millions of users. Replication and data caching also help the system scale in a large Internet environment ๐
3. Registering a CCSO Server โจ
okay so the Internet Nomenclator Project has a home page ๐ at http://cm.bell-labs.com/cs/what/nomenclator, and it's giving a whole buffet of info and services ๐
admins can register their CCSO servers through services on that page. the registration service collects the CCSO server's location info, contact info for whoever runs the server, the implicit and explicit constraints on entries in the server's database, and a mapping from the server's local schema to the schema of the world view. literally everything you need to get your server into the club ๐
those implicit and explicit constraints are the fuel for Nomenclator's catalog functions ๐ฅ right now the registration center collects constraints on organization name, department, city, state or province name, country, phone number, postal code, and email address. and these get automatically folded into Nomenclator's distributed catalog service ๐ง query resolvers use them so searches only go to the relevant CCSO servers.
for example, say a database only has info about the computer science and electrical engineering departments at a French university ๐ซ๐ท the department, organization and country attributes are constrained. so Nomenclator uses those constraints to stop queries about other departments, organizations or countries from ever getting sent to that server. no wasted trips, bestie ๐ซถ
the mapping from the local schema of the CCSO server to the world view schema is what lets Nomenclator translate queries and responses for that server โจ the registration center collects this by asking for an example of how to translate a typical entry in the CCSO server into the world view schema and, optionally, an example of how to translate a canonical entry in the world view schema into the local schema of the CCSO server [4]. those examples then get used to generate a mapping program, which is stored in the distributed catalog service ๐ the CCSO data access function in the query resolver interprets these programs to translate queries and responses going to and from that server.
we plan to release the mapping language to CCSO server admins so they can write and maintain the mapping for their own servers ๐ we've already experimented with more than 20 mapping programs ๐ they're seldom more than 50 lines and often even shorter. it typically takes one or two lines to map an attribute. iconic, honestly ๐
4. Using Nomenclator ๐ฆ
the Internet Nomenclator Project currently provides a centralized query service on the Internet ๐ the project runs a Nomenclator query resolver you can reach through its web page (see the URL in Section 3) and through the Simple Nomenclator Query Protocol (SNQP) [2].
the service answers queries that are a conjunction of string values for attributes. it supports a variety of matching techniques: exact string matching, matching with wildcards, and word-based matching in the style of the CCSO service ๐ธ the web interface uses the Simple Nomenclator Query Protocol (SNQP) [2]. programmers can build their own interfaces by using this protocol to talk to the Nomenclator query resolver. they'll need the host name and port number for the query resolver, which they can grab from the Nomenclator home page.
heads up though: SNQP, and so the web interface too, are defined for US-ASCII ๐ support for other character sets will need further work, so no cap, that's still on the to-do list โจ
later phases of the project will bring enhanced services ๐ like advice about the cost of queries, ways to constrain queries further for faster response times, and letting users ask for more current data. we also plan to distribute query resolvers so users can benefit from running them locally ๐ง local query resolvers cut latency for the user and spread the query processing load around the network. it's giving efficiency, fr fr ๐ฅ
5. Summary ๐
the Internet Nomenclator Project augments existing CCSO services by supplying schema integration and fast cross-server searches ๐ the key to speed in descriptive query processing is an active catalog, plus extensive meta-data and data caching. the Nomenclator system is the result of research in distributed systems [5][6][7][4]. it can be extended to incorporate other name servers besides CCSO servers, and to tackle distributed search and retrieval challenges in other application domains ๐
on top of the white pages service, the Internet Nomenclator Project will evaluate how an active catalog, meta-data caching and data caching perform in a very large global information system ๐ญ the ultimate goal is to refine these techniques until we get the best possible global information systems. main character energy, honestly โจ
6. Security Considerations ๐
โ ๏ธ read this part carefully, bestie, it's the serious bit ๐
in the Internet Nomenclator Project, the participants' data is openly available and read-only ๐ since the risk of tampering with queries and responses is considered low, this version of Nomenclator does not define procedures for protecting the information in its queries and responses. so the info in those queries and responses is not protected by anything this version defines ๐
7. References ๐
[1] H. Garcia-Molina, G. Wiederhold. "Read-Only Transactions in a Distributed Database," ACM Transactions on Database Systems 7(2), pp. 209-234. June 1982.
[2] Elliott, J., and J. Ordille, "The Simple Nomenclator Query Protocol (SNQP)," RFC 2259, January 1998.
[3] S. Dorner, P. Pomes. "The CCSO Nameserver: A Description," Computer and Communications Services Office Technical Report, University of Illinois, Urbana, USA. 1992. Avaialble in the current "qi" distribution from <URL:ftp://uiarchive.cso.uiuc.edu/local/packages/ph>
[4] A. Levy, J. Ordille. "An Experiment in Integrating Internet Information Sources," AAAI Fall Symposium on AI Applications in Knowledge Navigation and Retrieval, November 1995. <URL:http://cm.bell-labs.com/cm/cs/doc/95/11-01.ps.gz>
[5] J. Ordille. "Descriptive Name Services for Large Internets," Ph. D. Dissertation. University of Wisconsin. 1993. <URL:http://cm.bell-labs.com/cm/cs/doc/93/12-01.ps.gz>
[6] J. Ordille, B. Miller. "Distributed Active Catalogs and Meta-Data Caching in Descriptive Name Services," Thirteenth International IEEE Conference on Distributed Computing Systems, pp. 120-129. May 1993. <URL:http://cm.bell-labs.com/cm/cs/doc/93/5-01.ps.gz>
[7] J. Ordille, B. Miller. "Nomenclator Descriptive Query Optimization in Large X.500 Environments," ACM SIGCOMM Symposium on Communications Architectures and Protocols, pp. 185-196, September 1991. <URL:http://cm.bell-labs.com/cm/cs/doc/91/9-01.ps.gz>
8. Author's Address ๐๏ธ
Joann J. Ordille Bell Labs, Lucent Technologies Computing Sciences Research Center 700 Mountain Avenue, Rm 2C-301 Murray Hill, NJ 07974 USA
EMail: joann@bell-labs.com
9. Full Copyright Statement โ๏ธ
Copyright (C) The Internet Society (1998). All Rights Reserved. ๐
this document and translations of it may be copied and furnished to others ๐ซถ derivative works that comment on or explain it, or help with its implementation, may be prepared, copied, published and distributed, in whole or in part, with no restrictions of any kind. the only catch is that the above copyright notice and this paragraph have to be included on all those copies and derivative works. however, this document itself may not be modified in any way, such as by removing the copyright notice or the references to the Internet Society or other Internet organizations. the exceptions are when it's needed for developing Internet standards, in which case the copyright procedures in the Internet Standards process must be followed, or when it's translated into languages other than English ๐
the permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns โพ๏ธ
this document and the information in it is provided on an "AS IS" basis, and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS, OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. no promises, bestie ๐
๐ฆ where this page comes from
- ietf: rfc2258 1998-01
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms