精華區beta Programming 關於我們 聯絡資訊
> ==>發信人: =?big5?B?5qPmow==?= <devil@tainan.com.tw.x>, 信區: programming > 我不知道為何會把搜尋空位當成很複雜的問題... 找可售的路段空位對著 3-dim 的座位表(array table)言, 一點 都不複雜 1. Client 端若是要複製一份空位表, 自行先判斷空位再請求 這至少就會是 local memory cache approach. 2. 這種用法或架構的問題就是複制的 cached data 無法讓所有 client 保持一致性. 所以就很 "樂觀" 的自以為有空位可 選就向 Shared Main-Memory "請求確認" 或 "驗證". 3. Shared Main-Memory(或是集中資訊的共用資料庫)就得被請 求查證與更新, 這查證更新在數量變大下成為瓶井. 4. 最新的更新資料未及時且適時送達 client 更正 replicated data 時, client 因之誤判的請求就隨之發生, 隨 client 數 造成對應的數量級的無效與不必要的請求量. 售票系統講究的就是高需求下的反應速度, (3, 4) 都影響反應. 當然, 局部地區性的高鐵還用不上 scalability 的考量. 全球性的行動手機對行動手機的查詢定位與計費扣款才有數量上 的高伸縮問題. > 這個專案不是我接的,所以沒有很深入思考。 > 假設資料庫內有兩個表(不同時間班次可增加欄位屬性過濾掉,所以只要看一個車次): > 1. 座位狀態表:座位編號、起訖、屬性 > 起訖、屬性均為旗標值。 > 起迄,0 未售出,1 已售出: > 1: 台北板橋 > 2: 板橋新竹 > 4: 新竹台中 > 8: 台中嘉義 > 16: 嘉義台南 > 32: 台南高雄 > 屬性: > 1: 靠窗 > 2: 靠走道 > 3: 不限制 (1 Or 2) > 先要求使用者輸入條件 > 1. 起、迄站:決定起迄屬性,比如說台中到台南,旗標值為 24 > 2a. 單人是否選位,靠窗或靠走道。(1、2) > 2b. 多人是否並排坐或同車廂。(3) > 資料庫查詢 > Select 座位編號 From 座位狀態表 Where (((起訖 AND x) = 0) AND ((屬性 AND x) > 0)) > 傳回剩餘座位表 > 2b 情形可能要用程式過濾掉不符連續或同車廂規則的,或是在座位編號或增加欄位來讓規則更複雜。 > 選位: > 傳回結果可能可以輸出到螢幕上讓使用者選 > 或是系統基於營運考量,增加其他條件,比如說優先填滿前後段座位已售出的優先售出 > 購票: > 鎖定選擇位置,檢查起迄是否被更新,是則告知使用者在選位期間該位置以被售出,將不得購買之座位更新本機댊> 挩l座位表(不需重新查詢,可降低網路流量),重新選位。 > 否則更新座位狀態表,標記為售出,並進入車票付款程序。 > 其它: > 1.理論上應該可以找一些數學規劃的方法來加速選位,不過不是自己的案子,不管這些,用最簡單的邏輯處理。 > 2.另應有售票紀錄表來追蹤帳款是否完成付款,若未完成即結束,則恢復該座位為未購買狀態。 > 註:支援位元運算的資料庫引擎好像有點少... > ==> 本文由 "try or test <tester.bbs@bbs.csie.ncu.edu.tw>" > > 於 news:4S4Qj0%24yXO%40bbs.csie.ncu.edu.tw 發表 > > > ==>發信人: SmallBee.bbs@binary.csie.ncu.edu.tw (喵~~~), 信區: programming > > > : 使用一個大大的共用的 Array Table , 這個作法的 Model 就是 Distributed > > > : Shared Memory . 為了避免一位多賣, 互斥鎖定就用集中控管的 supervisor/ > > > : mornitor 來管制, 也就是這裡的集中式訂票機. > > > : 單一 Mornitor 控管就是會把不相關的其他車廂的訂位變成了沒必要的株連九 > > > : 族, 也就是減少了平行度, 其變慢可知. > > > 變慢是多慢?有慢到檢索一次要花到1ms以上? > > 這個 array table 應該是 3-dim 的. > > 高鐵從北到南假設有 5 個停靠上下站, 那就有可能一個位子有四個路段 > > 的賣出狀況, 一張票的起訖站決定一個位子被使用的時段, 所以需臨時鎖 > > 住的會是多個路段記號, 全路段湊不出空位時才是條件不符, 不成就得釋 > > 出那幾個路段記號, 這種連程一票起訖不會是只有一個記號動作. 假如又 > > 可以一票更換座位連程到底, 就會發生每個路段都就近(總不能要乘客車頭 > > 搬到車尾滿場飛)找空位, 這就變成鎖-找-鎖-找...起訖滿足才算成功. > > > > > 在怎麼慢都不可能慢過網路延遲時間 > > -- ◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 140.115.6.234