所以我正在开发一个需要持久购物篮的购物篮应用程序,我正在尝试决定是否将我的购物篮/商品作为blob存储在数据库中,或者将它们分成多个表格(*例如 - tbl_basket,tbl_basket_items ,tbl_basket_item_variants *)。我不需要对篮子物品进行分类或过滤。我将简单地根据soldto查询篮子( btw,每个售卖可能有多个篮子)。篮子只能在相对较短的时间内有效(最多6-12个月)。他们可能有几百个订单项(罕见的情况),但我不指望任何真正大的东西会降低性能。用户数量相对较少...最多400个并发用户。典型用法是大约50-100个并发用户。
我倾向于简单地将我的篮子存放为blob,因为它简单而且相对干净(是的,我很懒)。我的问题是,我错过了什么吗?这种方法有什么缺点。有什么好处?想到的一个缺点是,如果我的Basket对象发生变化,那么对于活动的篮子来说可能是个问题。
感谢您提供的任何见解。
答案 0 :(得分:2)
使用basket,basket_item表模式,并为数据库不透明数据(如图像,文档等)留下blob。最终,您需要将篮子项目绑定到库存控制,或分析,或.... blob中的数据会破坏性能。
答案 1 :(得分:1)
不要存储在blob中。因为您今天不需要排序或过滤并不意味着您不会在明天或下周或下个月。而且,你将更好地保护自己免受变化;使用blob意味着在需求变化时转换为新格式的额外工作。
现在以正确的方式行事将为您节省大量的工作。
答案 2 :(得分:1)
在这里做你想做的事并没有什么本质上的错误。您基本上存储编码为二进制数据的哈希表(或对象或属性列表),并可通过单个密钥进行检索。当然,它会让其他领域的查询变得更加困难,但是如果你确定不需要它,那就继续吧。
您提出的解决方案基本上是为什么有些人更喜欢“对象数据库”而不是关系数据库。它们使存储物体变得非常容易!
答案 3 :(得分:1)
从各种角度来看,使用blob
是个坏主意
如果你使用blobs
进行长时间(可能是痛苦的)重新设计,你将会自己站起来。
答案 4 :(得分:0)
您最好在数据库中没有“智能列”。它们应该只是数据,这就是数据库。
智能色谱柱是一些需要进一步处理以使用它的色谱柱,例如:A1234 =>代表男性,1234是序列号。 更不用说你的“blob”购物车,它比之前的例子更“聪明”。
参考http://www.amazon.com/Refactoring-Databases-Evolutionary-Database-Design/dp/0321293533