贊助廠商

娛樂城推薦

首頁

商業與財經/工作與就業/其他:工作與就業列表

軟體人- 如何有效益的維護data loader 如何有效益的維護data loader

如題目前做的project架構長這樣 Loader1 Loader2 Loader3 ........... Loader30Area 1Area 2Area 3........Area 10就是同一個Loader 會算出結果給不同Area的人有分成前端跟後端,前後端都是我維護 (前端 .Net Framework java script MVC,會用到一點 jquery,其他大多套套件用現成的物件再加工,後端就純C#query DB用的工具是公版的不用自己寫,就負責input 要打的SQL跟DB,然後output datatable或是對DB做insert/delete/update....)Loader每支老闆認知都不算很大所以也是一人包辦XDLoader每支的邏輯也類似:Start--->會記錄log表示loader開始Initial setting----> query一些接下來SQL會用到的configQueryRawData---->把上一個initial function的config帶下來在這裡組成SQL string並且query進data tableProcessData--->對上一步的data 做運算然後轉換成可能只有一個kpi值的結果或是pre-sum過後的結果 (舉例來說query hourly的資料轉換成daily的資料)End---->只是記錄log表示上面的function都執行完了看似很穩定但loader卻需要不斷的更版原因是因為SQL全部都是寫死的,接水其他系統的資料https://imgur.com/a/xjTfPfG以這個圖為例,USER只看的到最終的TABLE,沒有太多空間可以彈性修改query的條件也沒有像左上角有彈性調整query資料的方法(有config但是很少)所以需求常常長得像這樣:"tinasfishs 啊你幫我改一下,我發現今天的KPI有錯,因為今天開始要加採計'AA' 這種類別,麻煩再幫我改"原始SQL通常長這樣SELECT COUNT(1) CNT FROM STORE_SALESWHERE 1=1SELECT * FROM STOR_SALESWHERE 1=1(AND TYPE IN ('A','AB','BC',....'DZ','AA')AND SALE_DATE BETWEEN SYSDATE-3/24 AND SYSDATE-1/24AND MT_CODE IN ('2','5')AND......CASE WHEN ....)A,(SELECT EMPLOYEE_DEG,EMPLOYEE_NAME FROM EMPLOYE_LWHERE AREA='AREA1'AND RES_PRODUCT NOT LIKE '%AAZc'...........)B,(SELECT EMPLOYE_ID,EMPLOYEE_SHIFT FROM SHIFT_ARRANGE_LISTWHERE RECTIME>SYSDATE-5 AND AREA='AREA1'if (AREA=='AREA1' or AREA=='AREA2'){RECTIME<SYSDATE-1})CWHERE A.SALE_EMPLOYEE=B.EMPLOYEE_NAMEAND B.EMPLOYEE_ID=C. EMPLOYEE_IDSQL通常都很長而且用sub-query,會把商業邏輯埋在hard-code的SQL裡面不能用SQL處理的邏輯則是在ProcessData那步處理假設綠色的地方是config,黃色的地方則是這次修改的部分重點是改後端的SQL都需要重新上code,雖然有提供公版的工具把SQL另外儲存只要呼叫那個外部工具就可以把SQL取得但前人為了開發方便當然全部都把SQL直接擺在程式裡然後複雜的是,同樣算這個KPI,各個AREA 的條件是不盡相同的用藍色字的地方就是舉例,沒有使用config而是用C# 的code 直接hard code 這兩個area 需要加此條件所以也會衍生像是"我們是AREA3,AREA1 跟 AREA2 看的那個條件我們從下禮拜開始也想跟著採計,你們可以重新上code嗎"有爬文像是Stored procedure 之類的做法,歹勢對於這個架構完全不適用理論上像這樣各個area的條件有不少差異的情況下,應該是個別維護各area的loader但這整套是寫在一起的...,每次上code為了維護版控也會在各area同步上同一套也就會發生改A壞B,假設area1跟area2 共用同一段SQL條件,答應area1刪掉其中一句之後,area2 就跑來說他們的KPI異常這個專案負責接水30幾支上游的TABLE,就有30幾支LOADER..而且還在逐漸增加中所以談需求跟開發的時候,根本也不是從"為什麼要新增AA這個條件,除了改SQL有什麼更好的方式" 去切入因為那要去詢問上游以及user為什麼要新增這個條件太花時間而是 "幫我改SQL吧比較快"---> 所以從來都只在做改SQL這種很末端的工作一個禮拜大概有4-5個這樣的"假需求"---->我定義為只是改SQL,請user驗驗看是否符合他們期望user有時候也不確定改了條件是否就會對,改了也不能上code總是改了再測測了再改這樣的需求都做完了,才有時間去處理可能真的是loader本身的問題----->效能的問題啊、要新增一支新loader 與user談規格之類的....orz談規格也是我一人,頂多再加0.5個PMPM也跟我想像會把規格談到不會讓日後充滿這些維護 剛好相反最後規格談一談還是常常訴諸短解能夠hard code SQL就hard code,理想性的應該要跟上游負責系統的人看資料怎麼接軌的溝通過程完全沒有= =我有堅持過想先看清資料流再做新需求也因為求時效性被打槍有被訓練得比較有警覺性,但一個SQL 至少20行,下面又有條件讓user高興改就改實在很難用很大的框架去處理這樣的事,SQL有記得拔出來放在另外存的地方不用重新上code就很不錯了BTW SQL邏輯跟要接水什麼報表通常都是由USER提供-----------有跟老闆溝通過像這樣接水別人資料的匯總型AP 應該要重構,或者是一支一支拿出來看有什麼可以enhance的但user常常會認知KPI錯誤就來說是系統問題,久而久之老闆也好像覺得是我的問題而沒有深究之所以KPI會錯誤,就是因為SQL在上code流程的不彈性,還有讓user在不能彈性重上CODE的情況下還是一再想修改SQL(不能彈性的原因是要重上code老闆都會看,跟他解釋這個是要改SQL就會被question,但老闆也不看CODE也不會負責建議有建設性的方法,只會打高空問說可不可以不要改SQL--->問我的格局只能做到這樣...整個黑人問號)私以為想修改SQL或是想改變KPI的算法,都應該是大家坐下來看data flow是什麼是不是只是加了一句SQL就可以改變但文化上大家也不太有耐心這樣梳理問題不太清楚老闆是否了解目前系統的設計是長這樣,總之在溝通上也覺得不太有救想問問有沒有維護或是開發過這種DATA LOADER的前輩 可以分享一下心得的QQ--
  • 發問日期:2022-11-22 02:30:03

科技人- offer 請益 立訊精密 vs 神達電腦 offer 請益 立訊精密 vs 神達電腦

幫朋友代po,手機排版請見諒小魯是剛服完兵役的菜鳥,地名科大機械碩畢,之前是做CAE分析。目前有拿到兩個offer想請教一下。1.立訊精密-馬達CAE設計工程師月薪: 55000 (因為是菜鳥,報價時被主管說喊的有點低)年薪 :14m上班時間 :8:30~17:30(彈性一小時)工時 :沒加班費,但主管說7點辦公室就自動關冷氣了,6:30就幾乎沒人交通:地點在楊梅,搭火車+走路 40分工作內容:主要是用FEA分析設計Apple手機鏡頭的微動馬達,和apple watch的一些內部機構,說時常會和apple端討論,被要求把英文練好,蠻喜歡主管的做事風格。 然後說台灣在擴編CAE的研發TEAM,在台灣學起來2年後,會開始出差中國工廠端,程度到了就能面對apple端了。2.神達電腦-熱流工程師(Server)月薪: 52000年薪 :14m上班時間 :7:30~17:30(彈性兩小時)工時 :有加班費,時常加班,每月30~40H交通: 地點在華亞科技園區,開車30分工作內容:就傳統的伺服器相關散熱實驗分析測試,有提到會使用Flotherm的部份,但主管是說資深工程師才會接觸,先從實驗做起,整體聊起來是挺愉快的。一周後先給口頭offer部份,但他說offer採先搶先贏,事先答應要去的先拿到正式offer(???)因為相同還在等皮卡和英業達的熱流工程師offer,有點尷尬。想請教一下,兩者那個比較適合,前者是偏向讓自己挑戰看看,後者偏向傳統熱傳工程師的路線(或是再等另外兩間offer?),想了解各位大大的意見。-----Sent from JPTT on my Samsung SM-A426B.--
  • 發問日期:2022-11-21 21:30:06

友站連結