I want to store a large number of websites, where each website can have multiple class labels. Ideally, I'd like to have a set of primary labels (entertainment, news, sports, etc.) for each website, and each of those primary labels can have a number of sub-classes (sports -> news and media -> ...). I want to be able to quickly access data by ether it's class or the website (or it's domain). What is the best data-structure to accomplish this?