PostgreSQL電商小需求-湊單商品的篩選

德哥發表於2017-11-12

標籤

PostgreSQL , 電商 , 湊單 , 最佳湊單 , 任意欄位組合


背景

電商的促銷活動非常多,規則可能比較複雜,要薅羊毛的話,數學可能要比較好才行。因此也出現了大量的導購網站,比如SMZDM。

但是實際上電商裡面也有類似的應用,可以智慧的分析買家的需求,根據買家的需求、已有的券、購物車,向使用者推薦湊單品。

湊單的需求,本質上是多個欄位組合搜尋的需求。

1、購物車總金額

2、使用者標籤

3、使用者優惠券

4、店鋪活動標籤

5、商品本身的多種標籤

等。

根據規則計算出一些條件,根據這些條件,到商品標籤表進行查詢,找到對應的商品。

例如使用者有一些滿減優惠券,那麼可以與購物車的總金額進行計算,得到還需要多少就能使用這個券。

同時,根據使用者最近關注的商品類別(體現在使用者標籤表),到商品標籤表,找到這類商品。根據多個條件,篩選出複合條件的商品。

PostgreSQL 有多個技術手段能夠解決高速任意欄位檢索的需求。

1、布隆過濾,支援任意欄位組合的等值查詢。

《PostgreSQL 9.6 黑科技 bloom 演算法索引,一個索引支撐任意列組合查詢》

2、bitmap scan

gin複合索引,或者多個b-tree單列索引,都可以實現bitmap scan。多個條件過濾,收斂到更少的資料塊,順序掃描+FILTER。

《PostgreSQL bitmapAnd, bitmapOr, bitmap index scan, bitmap heap scan》

3、列儲存

4、bitmap標籤

《阿里雲RDS for PostgreSQL varbitx外掛與實時畫像應用場景介紹》

《基於 阿里雲 RDS PostgreSQL 打造實時使用者畫像推薦系統(varbitx)》

5、陣列標籤

《恭迎萬億級營銷(圈人)瀟灑的邁入毫秒時代 – 萬億user_tags級實時推薦系統資料庫設計》

DEMO

略,請參考以上文件。

參考

《PostgreSQL 多欄位任意組合搜尋的效能》

《時間、空間、物件多維屬性 海量資料任意多維 高效檢索 – 阿里雲RDS PostgreSQL最佳實踐》

《PostgreSQL 海量時序資料(任意滑動視窗實時統計分析) – 感測器、人群、物體等物件跟蹤》

《多欄位,任意組合條件查詢(無需建模) – 毫秒級實時圈人 最佳實踐》

《寶劍贈英雄 – 任意組合欄位等效查詢, 探探PostgreSQL多列展開式B樹 (GIN)》

《PostgreSQL 如何高效解決 按任意欄位分詞檢索的問題 – case 1》

《PostgreSQL 9.6 黑科技 bloom 演算法索引,一個索引支撐任意列組合查詢》


相關文章