2014-04-01 91 views
2

我在一個Sql服務器表中預訂了一些乘客的航班預訂數據。亞馬遜數據倉庫的體系結構和設計

下面的查詢凸顯隨着加入所涉及的所有表

"SELECT distinct * FROM 
Booking B 
JOIN BookingPassenger BP 
    ON B.BookingId = BP.BookingId 
JOIN PassengerJourneyLeg PJL 
    ON PJL.PassengerId = BP.PassengerId 
JOIN InventoryLeg IL 
    ON IL.InventoryLegId = PJL.InventoryLegId 
join passengerjourneysegment ps 
    on ps.PassengerId= BP.PassengerId 
WHERE IL.departuredate = '2014/03/26' and il.flightnumber = 123 
AND B.CreatedDate < '2014/03/22'" 

現在收入部門需要這些數據放入一個數據倉庫,以便他們可以計算在任何一天每個航班預訂曲線或所有航班在任何一天或特定日期。目前他們正在通過使用通過sql讀取數據的excel來完成它,但這非常耗時,並且不會提供實時數據。之後,他們希望從我們的企業預訂網站收集數據,並希望管理此數據倉庫中的客戶檔案,這將成爲我們的主要分析平臺。我對數據倉庫以及如何實施有效的數據倉庫以滿足他們的需求進行學習和研究是新鮮事物。

有人可以幫我嗎我應該如何收集數據?我應該將它上傳到dynamodb或s3中,做一次性工作和重複性工作的最佳方法是什麼?

該數據倉庫的後期目標是繪製所有與PNR相關的信息。飛行收入按天,按類別,按小類,按事件等。

後期階段,每次用戶與我們的網站互動,我想存儲在紅移..所以,當我應該寫文件到S3或dynamodb ?和多少?即: - 如果我在每個用戶事件上將文件寫入S3,我最終會得到數百個文件,這似乎不是一個好的解決方案。如何引入RDS或dynamodb來存儲每筆交易?或者是否有可能允許服務器日誌文件存儲信息(用戶在網站上的交互)以及是否有任何事件(預訂,取消等)被記錄到RDS或Dynamodb中?

什麼是最佳實踐?什麼可能是我的特定場景中的最佳設計?另外如果有人可以請給予更多的澄清如何才能實施?

有什麼最佳實踐可以讓報告使用1-5 TB的數據在幾分鐘或幾秒內回來並避免任何重複或延遲?

也可以有人建議如何能夠輕鬆維護,並具有成本效益,並與一些最好的解決方案相提並論嗎?

我將非常感謝任何關於數據倉庫,亞馬遜(Redshift,s3,Dynamo Db)技術專門針對我的需求的任何幫助,鏈接和建議。

回答

0

有很多問題,我懷疑他們中的一些人是由於經過的時間回答。無論如何,讓我解釋一下這件事。

後來他們想從我們公司的訂票網站收集數據,並要管理這個數據倉庫的客戶檔案,這將是我們的主要分析平臺

  • 建立一個臨時區域數據庫是一個很好的主意,一個「草稿數據庫」。您可以創建簡單的表來處理這些數據。

有人可以幫助我,我應該如何收集數據?我應該將它上傳到dynamodb或s3中,做一次性工作和重複性工作的最佳方法是什麼?

  • 一個好的方法是使用一些ETL工具來收集數據。我喜歡Pentaho CE和它的PDI。

後期階段,每一次用戶與我們的網站互動,我想存儲在紅移..所以當我應該寫文件到S3或dynamodb?和多少?即: - 如果我在每個用戶事件上將文件寫入S3,我最終會得到數百個文件,這似乎不是一個好的解決方案。如何引入RDS或dynamodb來存儲每筆交易?或者是否有可能允許服務器日誌文件存儲信息(用戶在網站上的交互)以及是否有任何事件(預訂,取消等)被記錄到RDS或Dynamodb中?

  • 我更喜歡最後的想法。將您的服務器日誌和時間存儲一段時間後複製到登臺數據庫中,以便在登臺區域保持更多數量的日誌用於統計目的。我認爲這是最常見的做法。

什麼是最佳實踐?什麼可能是我的特定場景中的最佳設計?另外如果有人可以請給予更多的澄清如何才能實施?

具有1-5 TB數據的報告在幾分鐘或幾秒內回來並避免任何重複或延遲的最佳做法是什麼?

  • 有很多方法可以做到這一點,基本上是重複使用和延遲性能的對應。您確實需要選擇分析數據所需的時間。前一天,也被稱爲D-1是通常的。

也可以有人建議如何能夠簡化維護和具有成本效益,並與一些最好的解決方案相提並論嗎?

  • 上做模型良好的設計和讓事情變得簡單,因爲在它的一切。

我希望能幫到