mssql 为什么连接是sleeping 而不释放_什么是数据仓库,以及我为什么需要它?
數據倉庫是一種分析數據庫,用于存儲和處理數據,以便對數據進行分析。數據倉庫的兩個主要功能:存儲分析數據和處理分析數據。
首先,如果多個業務數據位于不同的數據源,就無法輕易地將它們組合在一起。
其次,你的數據源系統不適合用來運行大量的數據分析,這樣做可能會危及業務運行,因為它會給系統帶來很重的負載。
數據倉庫是分析管道的核心,它有三個主要作用:
存儲:在合并 (提取和加載) 步驟,數據倉庫將接收和存儲來自多個數據源的數據。
處理:在處理 (轉換和建模) 步驟,數據倉庫將處理大部分 (或全部) 由轉換步驟生成的密集處理工作負載。
訪問:在生成報告 (可視化和交付) 步驟,首先需要在數據倉庫中收集報告,然后將其可視化并交付給最終用戶。
目前,大多數數據倉庫使用 SQL 作為主要的查詢語言。
什么時候需要構建數據倉庫?簡單地說,這取決于公司所處的階段、所擁有的數據量和預算,等等。
在早期階段,你可能不需要數據倉庫,而是直接使用業務智能 (BI) 工具連接到生產數據庫。
如果你仍然不確定數據倉庫是否適合你的公司,請考慮以下幾點:
首先,你是否需要分析來自不同數據源的數據?
在公司發展的某個階段,你可能需要將來自不同數據源的數據組合起來,以便做出更好、更明智的業務決策。
例如,如果你是一家餐館,想要分析訂單 / 服務員效率比率 (每周里哪個小時員工最忙和最空閑),就需要將銷售數據 (來自 POS 系統) 與員工職責數據 (來自 HR 系統) 結合起來。
對于這些分析,如果數據都位于一個中心位置,就會容易得多。
第二,是否需要將分析數據與事務數據分離?
如前所述,你的事務系統不適合用來進行數據分析。因此,如果你在應用程序中收集了活動日志或其他可能有用的信息,那么將這些數據存儲到應用程序的數據庫中,并讓分析師直接在生產數據庫上進行數據分析可能不是一個好主意。
相反,購買一個為復雜查詢而設計的數據倉庫,并將分析數據保存到數據倉庫里,這樣會更好。這樣,應用程序的性能就不會受到數據分析任務的影響。
第三,原始數據源適合用來查詢嗎?
例如,絕大多數 BI 工具不能很好地與 NoSQL 數據存儲 (如 MongoDB) 搭在一起使用。也就是說,在后端使用 MongoDB 的應用程序需要將數據傳輸到數據倉庫,數據分析人員才能夠有效地使用它們。
第四,是否希望提高數據分析的查詢性能?
如果事務數據有數十萬行,那么創建匯總表可能是一個好主意,它會將數據聚合成容易查詢的表單。如果不這樣做,查詢會非常慢,而且會給數據庫帶來不必要的負擔。
如果你對上述任意一個問題的回答是“是”,那么你很可能需要一個數據倉庫。
也就是說,在我們看來,構建一個數據倉庫通常是個好主意,因為在云計算時代,數據倉庫并不貴。
應該選擇哪一個數據倉庫?以下是一些常見的數據倉庫,你可以從中選擇:
亞馬 Redshift
谷歌 BigQuery
Snowflake
ClickHouse(自托管)
Presto(自托管)
如果你才剛開始,還沒有確定的想法,那么建議你使用谷歌 BigQuery,原因如下:
BigQuery 前 10GB 存儲和前 1TB 查詢量是免費的,之后按使用量付費。
BigQuery 是全托管的 (無服務器),不需要啟動或管理物理 (或虛擬) 服務器。
BigQuery 的架構是可自動伸縮的:根據查詢的復雜性和數據量,BigQuery 將自動確定分配給每個查詢多少計算資源,無需手動調整。
但是,如果你的數據量增長速度很快,或者如果你的場景很復雜或者很特殊,就需要仔細評估你的選項。
下面,我們列出了最為流行的一些數據倉庫,目的是讓你對數據倉庫領域最常見的選項有一個高層次的了解。這個清單并不是最完整的,也不足以幫你做出一個最完美的決定。
但我們認為,這是一個良好的開端:? ?
| 亞馬遜 Redshift | 亞馬遜,作為 AWS 產品的一部分 | 按實例付費,每小時 0.25 美元起(一個月大約 180 美元) |
| 谷歌 BigQuery | 谷歌,作為 Google Cloud 產品的一部分 | 按數據查詢和數據存儲付費,前 10GB 存儲和前 1TB 查詢量免費 |
| ClickHouse | 由 Yandex 開發,后來開源出來 | 開源免費,可以部署在自己的服務器上 |
| Snowflake | Snowflake 公司 | 按使用量付費 |
| Presto | 由 Facebook 開發,后來開源出來,現在由 Presto 基金(Linux 基金的一部分)負責管理 | 開源免費,可以部署在自己的服務器上 |
這個時候,有些人可能會問:
“數據倉庫不是像關系數據庫一樣,存儲數據,然后對數據進行分析嗎?難道我就不能使用 MySQL、PostgreSQL、MSSQL 或 Oracle 作為數據倉庫嗎?”
簡單地說:可以。
但要細說起來:這個要視情況而定。首先,我們需要了解一些概念。
事務工作負載與分析工作負載理解這兩種數據庫工作負載 (事務工作負載和分析工作負載) 之間的差異是非常重要的。
事務工作負載是指普通業務應用程序的查詢工作負載。當訪問者在 Web 應用程序中加載一個產品頁面時,將向數據庫發送一個查詢,獲取產品信息,并將結果返回給應用程序。
SELECT * FROM products WHERE id = 123以下是事務工作負載的幾個常見屬性:
每次查詢通常返回一條記錄或少量記錄 (例如,獲取某類別的前 10 篇博文)。
事務工作負載通常包含運行時間非常短 (少于 1 秒) 的簡單查詢。
在任意時刻都有大量的并發查詢,這取決于應用程序的并發訪問者數量。對于大型網站來說,這個數字可能是成千上萬或數十萬。
通常對全數據記錄感興趣 (例如產品表中的每一列)。
分析工作負載是指用于實現分析目的的工作負載。在生成一個數據報告時,一個查詢將被發送給數據庫,計算結果,然后將結果顯示給最終用戶。
SELECT category_name, count(*) as num_products FROM products GROUP BY 1分析工作負載具有以下屬性:
每個查詢通常會掃描表中的大量數據行。
每個查詢都是重量級的,并且需要很長時間 (幾分鐘,甚至幾小時) 才能完成。
并發查詢并不多,主要由使用分析系統的報告或內部人員數量決定。
通常只對幾列數據感興趣。
下面是事務工作負載(或數據庫)與分析工作負載(或數據庫)的比較。
事務工作負載有很多簡單的查詢,而分析工作負載有一些重量級的查詢。
底層架構的不同由于上述兩種工作負載之間的巨大差異,這兩種工作負載的數據庫底層后端設計也是非常不一樣的。事務數據庫的優化目標是高并發的快速短查詢,而分析數據庫的優化目標是長時間運行的資源密集型查詢。
那么它們之間的架構區別是什么呢?這需要專門的文章才能解釋清楚,不過簡單地說,分析數據庫使用以下技術來保證性能:
列式存儲引擎:分析數據庫不是在磁盤上逐行存儲數據,而是將數據的列分組存儲。
列式數據的壓縮:壓縮每個列中的數據,獲得更小的存儲和更快的檢索速度。
查詢執行的并行化:現代分析數據庫通常運行在數千臺機器上。因此,可以將每個分析查詢拆分為多個更小的查詢,并在這些機器之間并行執行 (分治策略)。
你可能已經猜到了,MySQL、PostgreSQL、MSSQL 和 Oracle 數據庫主要用于處理事務工作負載,而數據倉庫用于處理分析工作負載。
那么,我可以使用普通的 SQL 數據庫作為數據倉庫嗎?就像我們之前說的,可以,但要視情況而定。
如果剛開始時只有少量的數據和分析用例,選擇一個普通的 SQL 數據庫作為數據倉庫是可以的 (最流行的是 MySQL、PostgreSQL、MSSQL 或 Oracle)。如果有很多數據,仍然可以這樣做,但需要進行適當的調優和配置。
也就是說,隨著像 BigQuery、Redshift 這樣低成本數據倉庫的出現,我們建議使用數據倉庫。
不過,如果你必須要選擇一個普通的基于 SQL 的數據庫 (例如,你的公司只允許數據駐留在自己的網絡中),我們建議使用 PostgreSQL,因為它提供的分析功能最多。
總結在這篇文章里,我們主要談到了:
數據倉庫是存儲和處理數據的集中式分析數據庫。
構建數據倉庫的四個出發點。
一個簡單的數據倉庫技術列表。
數據倉庫為分析工作負載而優化,而傳統數據庫為事務工作負載而優化。
原文鏈接:
https://towardsdatascience.com/what-is-a-data-warehouse-when-and-why-to-consider-one-2e826be68e95
你也「在看」嗎??
總結
以上是生活随笔為你收集整理的mssql 为什么连接是sleeping 而不释放_什么是数据仓库,以及我为什么需要它?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c char转int_C指针精华知识大汇
- 下一篇: 训练好的神经网络 如何预测_显存不够,如