因此,对于一个新项目,我正在为电子商务网站构建一个系统。我们的想法是从供应商那里进口产品,而不是将它们直接插入到我们的目录中,我们会将所有信息存储在一个暂存区。每个供应商都有自己的阶段(即数据库中的表),然后我会将多个暂存区域扁平化为单个实体(当前为单个表,但稍后可能会转换为 Sphinx 或 Solr)。然后,我们的经销商将能够搜索暂存产品的相关字段(名称和描述),并显示匹配的产品列表,然后选择将这些产品推送到实时目录中。搜索将查询单个表(展平的暂存区域)。
我的设计要求仅在单个展平表中存储可搜索和可过滤的字段 - 例如名称、描述、供应商 ID、供应商产品 ID 等。搜索查询将仅返回匹配项目的 ID 和用于的类 (supplier_id)确定产品来自哪个暂存区。
另一位高级工程师认为扁平化的搜索表应该包括其他元字段(不会被搜索),但可以在将产品从舞台“推送”到实时目录时使用。他还认为查询应该返回所有这些其他信息。
我对仅在展平表中具有可搜索字段并让搜索仅返回可用于获取有关产品的所有其他必要元数据的类/id 对的感觉非常强烈(简单的 select * from class_table where id in (1,2 ,3))。
我的部分理由是,这将使以后更容易将扁平表从数据库切换到像 sphinx 或 solr 这样的搜索服务器,并且不必仅仅因为搜索的实现发生更改而更改其余代码。
我在正确的道路上吗?我如何说服其他工程师为什么只保留可搜索字段并只返回 ID 很重要?或者更具体地说,为什么搜索应用程序应该只返回对象的 ID?