Dataguides: Enabling Query Formulation and Optimization in Semistructured Databases