文是《10周入門數據分析》系列的第5篇。
想了解學習路線,可以先行閱讀“10周計劃”
公中號上已更新到第11篇,詳情可見文末。
上周更新了兩篇Excel學習,有讀者反映寫得不夠實操。這里解釋下,文字真的很難將每一步細化,不然真的要出一本書。文章更多是一個引路,告訴大家為什么要學這個,主要學什么,怎么學?深入的操作,還需大家業余加餐啊,已經盡量給大家留了材料了。
也有人提議,出個視頻,不錯!很贊!明年計劃下。即使沒有時間,我也會推薦一些我認為OK的視頻讓大家學習。
年底了,近幾個晚上都在苦熬年終報告,各位寫好了么?
好了,回到正文,本篇講數據庫知識:
經常有剛從事數據分析的職場萌新,問我做數據分析工作要學些什么,應該怎樣規劃學習路徑。我會告訴他:如果你Excel還用的不溜的話,就先學學Excel,當你用Excel處理和分析一些小數據集沒有問題的時候(具體表現就是:常用函數公式信手拈來,數據透視表,篩選,排序,圖表繪制操作熟練),你就去學習SQL語言,然后用BI去分析去熟悉業務。然后到了一定階段,你可以上手R或者Python。后面如果你能更進一步,可以去了解一些Spark等大數據框架。
為什么要學習Excel?
首先Excel是我們最常用的數據分析和處理工具,Excel的功能非常豐富,基本可以涵蓋我們在之后在其它軟件(SQL、BI、Python、R)中要學到的那些功能。
有的人可能會問,既然Excel這么強大,為什么還要學其它的工具?這是因為Excel是通過菜單的形式來進行操作的,很難實現自動化和功能復用,當然你也可以通過VBA來實現,用VBA也就是編程了,不過因為VBA這種語言學會了基本只能在office軟件中使用,學習的投入成本和產出收益不成比例,不推薦學習,這是客觀原因之一;另外就是Excel在處理比較大的數據集的時候,性能很差,并且經常崩潰。(雖然Excel2013及以上版本宣稱可以容納100+萬條記錄,但幾萬條數據就開始卡頓了)。
為什么Excel學完要學SQL?
客觀原因是絕大部分數據分析崗都有SQL技能的要求。企業里面為了保證數據的安全性和管理的方便,數據都是統一存放在數據庫中,從數據庫中提取和查詢數據需要使用SQL語言,甚至有的公司就是用SQL語言來做數據分析。
另外一個原因就是即使你先學了其它的工具,比如R,Python,甚至Spark等大數據框架,你會發現最后你還是得學習SQL。如果你先學習SQL,那么很多概念你都能在學習R,Python,Spark等更加復雜的工具之前弄清楚。對于后面的學習會有幫助。這就好比建房子,都是先打地基,然后一層一層的蓋。
SQL語言的學習排在Excel之后,其它工具之前,還有一個很重要的原因就是,SQL可以在一定程度上幫Excel解決大數據集的問題,同時架起一個通往其它工具的橋梁。
關于數據庫和SQL的學習,也是分為兩篇,第一篇講數據庫以及表的概念。第二篇是SQL語句的掌握和數據庫的操作。
先談一下我對數據庫的理解。數據庫顧名思義就是數據的集合,是由一張張數據表組成的。
放在物理實體上,是一堆寫在磁盤上的文件,文件中有數據。這些最基礎的數據組成了表(table),我們把它想象成一張Excel的sheet,如下圖:
每一張表都有一個唯一標識,即主鍵,也就是ID。ID是數據庫中重要的概念,叫做唯一標識符/主鍵,用來表示數據的唯一性。就相當于我們的身份證,是唯一的,有了身份證,就知道數據在哪了。
ID通常沒有業務含義,就是一種唯一標識,每張表只能有一個主鍵,且主鍵通常是整數,主鍵一旦設立,值通常不允許修改。
數據庫是表的集合。一個數據庫中可以放多張表,我們給每張表命名,表與表之間能互相聯系。聯系就是數據能夠對應匹配,正式名稱叫聯接,對應的操作叫做Join,我們想象成Excel中的vlookup。
比如上面兩張圖,左圖是學生信息表,右圖是老師信息表。左圖的主鍵是學生ID,右圖的主鍵是老師ID。細心的讀者可能發現右圖還有一個學生ID,這里的學生ID是專門用來聯接用戶表的,它并不是主鍵。只不過兩張表通過學生ID這個唯一信息來關聯。
但兩張表關聯也并不是信息能一一對應的,也會存在空缺的時候,比如:
那兩表建立連接就會變成:
了解上面的概念,你就知道什么叫關系型數據庫。簡單說,它是由多張能互相聯接的二維行列表格組成的數據庫。在數據準備時,我們通常要建立表關聯來分析。
關系型數據庫是基于關系代數模型發展而來,常用的關系型數據庫有SQL Server、MySQL、Oracle、DB2等,這個視企業使用為準,我們后續學習都以MySQL為主。
各關系型數據庫(不感興趣可跳過):
DB2: 關系型數據庫, 適用于大型的分布式應用系統, 確實是非常非常好的數據庫, 無論穩定性, 安全性, 恢復性等等都無可挑剔, 而且從小規模到大規模的應用都非常適合。但是使用起來覺得非常繁瑣, 安裝的時候要求頗多, 很多軟件都可能和DB2產生沖突, 因為一般DB2都是安裝在小型機或者服務器上的, 所以在PC上安裝很費事兒。新建一個庫需要設置很多東西, 分配各種各樣的存儲空間。
Oracle: 是目前市場占有率最大的數據庫, 我在學習SSH的時候用的就是Oracle, 安裝起來很繁瑣, 而且居然程序文件有3G之多... 用起來非常方便, 對于我這樣的初學者, 有很簡單的配置, 對于要求很高的企業級應用, 也有很復雜的配置和管理方法, 有很強大的數據字典, 可以說是最實用的數據庫了, 但是查了一下, 價格不菲...
MS SQL: 當初用的是2000和2005版, 這兩個版本差了很多。2000的數據庫做的不錯, 程序很小, 操作簡單, 功能較全, 算是各方面都很中庸的數據庫吧, 是中型數據庫, 我的畢業設計就是用MS SQL 2000做的。2005中加入了很多功能, 復雜多了, 有大型數據庫的風范了, 而且價格也變高了, 個人覺得除非用的是Window Server 系統或者針對Microsoft產品, 否則不如用Oracle好。
MySQL: MySQL是一個很好的關系型數據庫, 免費, 而且功能很全, 程序又小, 安裝簡單, 現在很多網站都用MYSQL, 在字段約束上做的差了點兒, 其他的都不錯, 和MS SQL 用著差不多。
Access: 典型的桌面數據庫, 覺得做個單機系統, 比如記賬, 記事兒什么的還成, 在局域網里跑個小系統都夠嗆, 數據源連接很簡單, 因為是Office的數據庫, 所以Windows自帶數據源。
更多關于數據庫的知識,看一本《數據庫系統概論》就夠了。
如果還沒有接觸過數據庫或者說SQL,推薦大家下載并安裝MySQL數據進行嘗試,MySQL數據庫的下載安裝比較簡單,安裝完成就可以使用。
可以訪問MySQL官網進行下載,網址如下(這里給出的是Windows版下載地址):
「鏈接」
下載MySQL時,需要進行免費注冊,注冊頁面是英文的。下載該工具后,點擊運行,這個程序就能夠聯網自動為你安裝MySQL,并自動進行配置。在安裝過程中,需要你設置密碼,自己設置一個登陸密碼,并記住,下次登陸MySQL時,需要這個密碼。
解壓之后沒有my.ini文件(我的端口設置的3308),截圖中是我增加的。
管理員命令行:
在MySQL安裝目錄的 bin 目錄下執行命令:
mysqld --initialize --console
得到如下結果:
看到有個警告,查了一下mysql建議使用utf8mb4
修改my.ini文件
警告沒有了,上面打印了默認密碼:nj>uUJkpH4/I
然后,安裝服務:
mysqld --install MySQL8.0
因為這是電腦上第二個mysql 所以服務名改成了 MySQL8.0
啟動服務:
net start MySQL8.0
修改初始密碼
登錄mysql之后執行:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
將MySQL和Excel或者其它數據分析工具連接起來
默認安裝的情況下,有一個插件允許MySQL數據庫和Excel相連接,試想一下,我們在MySQL數據庫中通過SQL語言進行大量數據的處理和計算,將計算結果存放在特定的數據表中,再通過Excel連接上MySQL數據庫,將數據讀取到Excel中,用Excel進行分析并繪制圖表,免去了將數據從數據庫導出再導入Excel的麻煩,是不是就可以提高效率了呢?
后面會分享一篇通過ODBC驅動程序連接一些報表\BI工具來做分析的操作。
關于MySQL的學習推薦書籍《MySQL必知必會》。
近期,我的公眾號【數據分析不是個事兒】在策劃《10周入門數據分析》系列文章,教課書式手把手教大家入門數據分析。
本文是系列中的第5篇,公中號上已更新到第11篇。
可以戳下“了解更多”前往關注。
數據庫是一種結構化的數據存儲系統,用于有效地組織、存儲和管理大量的數據。它是一個集中化的數據存儲庫,通常由一個或多個數據表組成,每個數據表包含多個行和列,用于存儲特定類型的數據。數據表中的列定義了數據的屬性,而行則包含了實際的數據記錄。
數據庫提供了一種結構化查詢語言(SQL)或類似的查詢語言,用于執行各種操作,例如查詢數據、插入新數據、更新現有數據和刪除數據。通過這些操作,用戶可以輕松地與數據庫進行交互,并從中檢索所需的信息。
數據庫還具有數據完整性、安全性和可靠性等特性,以確保數據的一致性和可靠性。它們通常具有各種功能,如事務管理、備份和恢復、權限管理等,以支持各種應用場景和業務需求。
人們需要連接數據庫的原因有很多,主要包括以下幾點:
1)數據存儲和管理: 數據庫幫助人們有效地組織、存儲和管理大量的數據。通過連接數據庫,可以輕松地對數據進行添加、刪除、修改和查詢等操作,實現對數據的有效管理。
2)應用開發: 在軟件開發過程中,數據庫扮演著非常重要的角色。連接數據庫可以使開發人員在應用程序中實現數據的持久化存儲,同時還能夠實現與數據的交互,例如從數據庫中檢索數據以供應用程序使用,或者將用戶輸入的數據存儲到數據庫中。
3)數據分析和報告: 許多企業與組織需要對其存儲在數據庫中的數據進行分析,以便做出更好的決策。通過連接數據庫,分析師和決策者可以使用各種工具和技術來查詢、匯總和分析數據,生成報告、圖表和可視化內容,幫助他們了解業務情況、發現趨勢和制定戰略。
4)業務應用集成: 在企業環境中,通常存在多個應用程序和系統,這些系統可能需要共享數據或相互交互。通過連接數據庫,可以實現不同系統之間的數據共享和集成,從而提高業務流程的效率和協同工作的能力。
5)網站和應用程序的后端支持: 許多網站和應用程序需要與數據庫進行交互來提供服務。連接數據庫可以幫助開發人員構建功能強大的后端系統,用于處理用戶請求、管理用戶數據、支持電子商務功能等。
綜上所述,連接數據庫是為了方便數據的存儲、管理、分析和應用,以及實現不同系統之間的數據交互和集成,從而支持各種應用場景的需求。
MySQL Workbench 是 MySQL 官方提供的數據庫連接工具,旨在簡化數據庫設計、開發和管理。它提供了直觀的圖形用戶界面,使用戶能夠輕松地創建和編輯數據庫模型、執行 SQL 查詢、備份和恢復數據庫等。MySQL Workbench 還支持版本控制、性能優化和遠程管理等功能,是許多 MySQL 用戶的首選工具之一。
Navicat 是一個功能強大的跨平臺數據庫連接工具,支持多種數據庫管理系統,包括 MySQL、PostgreSQL、SQLite 等。它提供了直觀的用戶界面和豐富的功能,如數據同步、數據傳輸、數據備份和恢復等。Navicat 還支持 SSH 和 HTTP 隧道,以確保數據庫連接的安全性。
DBeaver 是一個開源的多平臺數據庫連接工具,支持多種數據庫系統,包括 MySQL、PostgreSQL、SQLite、Oracle 等。它提供了強大的數據庫管理功能,如數據查詢、數據編輯、元數據管理等。DBeaver 還支持插件擴展和自定義腳本,以滿足用戶不同的需求。
SQL Server Management Studio 是微軟官方提供的用于管理 SQL Server 數據庫的工具。它提供了豐富的功能,如查詢編輯器、性能監視器、數據庫備份和還原等。SSMS 還集成了 SQL Server 數據庫引擎,并支持集成式開發環境(IDE),使用戶能夠在一個界面中完成數據庫管理和應用程序開發。
phpMyAdmin 是一個基于 Web 的數據庫管理工具,用 PHP 編寫,用于管理 MySQL 數據庫。它提供了直觀的用戶界面,使用戶能夠通過 Web 瀏覽器輕松地管理數據庫。phpMyAdmin 支持數據導入導出、SQL 查詢、表結構編輯等功能,是許多 Web 開發人員和系統管理員的常用工具之一。
Toad 是一個功能強大的數據庫管理工具,主要用于連接和管理 Oracle 數據庫,同時也支持其他數據庫系統。它提供了豐富的功能,如 SQL 查詢、性能優化、數據比較等。Toad 還支持自動化任務和批處理操作,以提高用戶的工作效率。
DataGrip 是 JetBrains 公司開發的一個面向多種數據庫的集成開發環境(IDE)。它提供了直觀的用戶界面和強大的功能,如智能代碼補全、數據庫導航、版本控制等。DataGrip 還支持多種數據庫系統,包括 MySQL、PostgreSQL、SQLite 等。
上述數據庫連接工具各有特點,適用于不同的使用場景和需求。MySQL Workbench 適合 MySQL 用戶,提供了全面的數據庫管理功能;Navicat 和 DBeaver 則是跨平臺的通用工具,支持多種數據庫系統;而 SSMS、phpMyAdmin、Toad 和 DataGrip 則分別針對 SQL Server、MySQL、Oracle 和多種數據庫系統提供了專業化的管理工具。
不同的數據庫連接工具在使用上可能會有不同的技術門檻,主要取決于工具的復雜性、功能豐富程度以及用戶的經驗水平。上述工具在使用時,都需要一定的數據庫管理、SQL語言和各個產品的技術棧知識,以及對數據庫連接配置的基本理解。
示例中提到的數據分析模板分享給大家——
https://s.fanruan.com/x3k5k
零基礎快速上手,還能根據需求進行個性化修改哦
FineReport 是一款用于報表制作,分析和展示的企業級Web報表工具,用戶通過使用FineReport可以輕松的構建出靈活的數據分析和報表系統,實現報表的多樣化展示、交互分析、數據錄入、權限管理、定時調度、打印輸出、門戶管理和移動應用等需求。
FineReport 支持通過 JDBC、JNDI、SAP、XMLA 和 FineBI 五種方式連接數據庫。大部分數據庫使用的的是 JDBC 連接,在設計器中我們可以連接帆軟官方支持的所有數據庫。如下圖所示:
>>>更多FineReport數據連接支持范圍
FineBI是新一代BI數據分析工具,為企業提供了一站式商業智能解決方案,提供了從數據準備、數據處理、可視化分析、數據共享與管理于一體的完整解決方案,創造性地將各種“重科技”輕量化,使用戶可以更加直觀簡便地獲取信息、探索知識、共享知識。
企業實際使用時最常見的數據場景是將業務數據保存在數據庫中,并且不斷更新。FineBI可與數據庫直接進行連接,高效獲取到數據庫中的數據。
>>>更多FineBI數據連接支持范圍
綜上所述,選擇合適的數據庫連接工具取決于用戶的具體需求和個人偏好。無論是簡單的數據查詢、復雜的數據庫管理還是高效的數據分析與可視化呈現,這些工具都能夠幫助用戶輕松地連接到數據庫,并有效地管理和利用數據資源。
帆軟軟件深耕數字行業,能夠基于強大的底層數據倉庫與數據集成技術,為企業梳理指標體系,建立全面、便捷、直觀的經營、財務、績效、風險和監管一體化的報表系統與數據分析平臺,并為各業務部門人員及領導提供PC端、移動端等可視化大屏查看方式,有效提高工作效率與需求響應速度。
CSDN 編者按】被稱之為基礎軟件三駕馬車之一的數據庫,在經歷了層次型和網狀型、關系型數據型庫以及更加強大的數據管理功能等三個時期之后,其在未來的發展歷程中還有哪些更多的可能性?
基于此,卡內基梅隆大學計算機科學系數據庫學副教授 Andy Pavlo 曾于 2015 年為 CMU 計算機科學系 50 周年慶典上寫下了自己對于數據庫未來 50 年的構想。
在本文中,他提出了幾點:關系模型對于大多數應用而言仍將占據主導地位,開發框架和數據庫管理系統將更加緊密地耦合在一起,從而使所有數據庫交互都透明化,SQL 仍然是與 DBMS 交互的實際語言,但人類永遠都不會真正編寫 SQL,將以自然語言查詢相關數據問題,這將導致編程方式發生重大變化。無所不在的「物聯網」意味著每個設備都能收集其環境的數據,對于新硬件,更靈活和可編程的處理結構將更為普遍,人類作為數據庫管理員的角色將不復存在,DBMS 最終將完全自治和自我修復,星際設備的數據庫事務將興起,最終,「我將在 50 年后去世」。
作者 | Andy Pavlo
譯者 | 譚開朗,責編 | 屠敏
出品 | CSDN(ID:CSDNnews)
以下為譯文:
最終,我還是從事了我曾揚言不會從事的職業:成為一名教授,有自己的博客,但從不更新。我知道,距離我上次發表文章已有一年之久,我也需要給事務處理數據庫系統這一開放議題撰寫第三部分內容。去年在CMU發生了很多事情,我計劃在項目更加完善后再在這里討論。預告幾點:
我們正在開發一個新的分布式DBMS;
我們正在構建一個用于測試和基準化分析的“準備啟用的”大型OLTP應用程序庫;
我們正在創建一個在線數據庫系統百科全書。
當然,還有很多并發控制和非易失性內存工作。毫無疑問,我的課外教授活動已經顧不太上了。
以下是我寫的一篇文章,作為下個月CMU計算機科學系50周年慶典的一部分。我們每個教員的任務是:針對自身所在的領域,展望其在2065年的發展概況。所以,我的任務是概述數據庫系統在50年后的樣子。但是,在我展望未來之前,我首先花一些時間來討論數據庫的過去和現在。
數據庫的過去
第一個數據庫管理系統(DBMS)在1968年上線。IBM的IMS用于跟蹤土星5號和阿波羅太空探索項目的供應和零部件庫存。它引入了這樣一種思想,即應用程序的代碼應該與它所操作的數據分離。由此支持開發人員編寫只關注數據訪問和操作的應用程序,而不關注與執行這些操作和確保數據安全相關的復雜性和開銷。IMS之后,在20世紀70年代早期,IBM的System R和加州大學的INGRES率先開發了第一個關系型DBMS。
第一批系統的數據庫工作負載沒有今天那么復雜和多樣化。在這些早期的應用程序中,操作員通過終端啟動事務,然后手動向系統輸入新數據。此時,DBMS的預期峰值吞吐量僅為每秒數十到數百個事務,響應時間以秒為單位度量。這些早期DBMS的體系結構也基于當時流行的計算硬件。它們通常部署在只有一個CPU核心和少量主內存的計算機上。對于這些系統來說,磁盤是數據庫的主要存儲位置,因為磁盤能夠存儲比內存更大的數據,而且成本更低。
數據庫的現在
盡管在50年后,我們使用數據庫的方式發生了很大的變化,關系模型和SQL仍然是組織數據庫并與之交互的主要方式。許多互聯網應用程序需要每秒支持數十萬甚至數百萬個事務,每個事務的處理延遲以毫秒為單位。這是因為它們同時與數百萬用戶和其他計算機系統相連。現在,企業和組織能夠從這些應用程序中收集大量的數據,他們希望分析這些數據來推斷新的信息,以指導他們的決策?;诖耍陙砦覀兛吹搅酸槍μ囟☉脠鼍暗膶iT系統的興起,這些應用場景的性能比基于1970年代架構的通用DBMS要好得多。現在有一些DBMS旨在為聯機事務處理(OLTP)應用程序快速獲取新信息,還有一些DBMS旨在為復雜的聯機分析處理(OLAP)程序存儲大量數據。
這些較新的DBMS還利用了近年來出現的三種主要硬件趨勢。首先是大內存計算機的出現,這使得現在可以部署少量的機器,這些機器有足夠的DRAM來存儲除了最大的OLTP數據庫之外的所有數據。將數據存儲在內存中可以確保DBMS能夠以較低的延遲同時處理許多事務。根據我們的經驗,用于現代OLTP應用程序的數據庫的大小通常為幾百GB。與OLAP數據倉庫相比,DBMS可以管理幾個PB大小的數據庫。這是因為OLTP數據庫存儲應用程序的當前狀態(例如,最近90天的訂單),而OLAP數據庫存儲組織的所有歷史信息(例如,所有下過的訂單)。因此,OLAP DBMS仍然主要存儲在磁盤上,并使用一些優化,如壓縮或柱狀存儲,以克服它們較長的訪問時間。
第二個硬件趨勢是從提高單核CPU時鐘速度到多核CPU的轉變。時鐘頻率已保持了幾十年的增長,但現在增長已經停止,因為硬功率限制和復雜性的問題。復雜的、無序的、超標量的處理器正在被簡單的、有序的、單問題核心所取代。在DBMS中利用這種增加的并行性是很困難的,因為協調數百個線程的共享數據的訪問非常復雜?,F代DBMS使用低開銷并發控制和其他無鎖技術來提高系統的可伸縮性。
第三個趨勢是商品硬件的成本降低。這在云計算平臺中尤為明顯?,F在可以部署一個大型集群,其處理和存儲能力只相當于十年前的一小部分。這種變化與1980-1990年代相比,過去十年中沒有共享的DBMS的數量在不斷增加。
盡管取得了這些進展,但仍然存在一些重大問題,由此阻礙了許多人部署數據密集型應用程序。所有這些的一個主要主題是,數據庫仍然是計算系統(例如,部署、配置、管理)的人工密集型組件。使用兩個獨立的DBMS分離OLTP和OLAP工作負載,以避免其中一個工作負載減慢另一個工作負載的速度,但是它需要額外的進程來將數據從系統傳輸到另一個工作負載。除此之外,調優DBMS以獲得特定應用程序的最佳性能是出了名的困難。許多組織求助于雇傭專家來為預期的工作量配置系統。但是,隨著數據庫的規模和復雜性的增長,優化DBMS以滿足這些應用程序的需求已經超出了人類的能力。
數據庫的未來
在接下來的50年里,就像之前一樣,我們將看到數據庫領域的重大變化。除了存儲的數據量和速度明顯增大之外,數據庫在應用程序中的使用方式以及它們所部署的硬件類型也將發生重大變化。很難預測該領域的主要范式轉變是什么,預測哪些數據庫公司和產品仍然可用也是不現實的。因此,我發表一下對幾個廣泛主題的看法。
關系模型仍將主導大多數應用程序,但開發人員將不再需要過于擔心其應用程序使用的數據模型。編程框架和DBMS之間的耦合將更加緊密,這樣所有的數據庫交互都將是透明的(并且是最佳的)。同樣,SQL(或它的某種方言)將仍然是與DBMS交互的實際語言,但人類真實上永遠不會編寫SQL。相反,他們會用自然語言詢問有關數據的問題。這些變化將導致我們編寫程序的方式發生重大轉變;開發人員以一種最容易被人類理解的方式對其數據進行建模,然后框架(與DBMS一起)將自動為其生成最佳存儲方案。所有程序都將使用強一致的ACID事務執行。也就是說,在當今基于Web的應用程序中使用的最終一致性方法將避免增加管理的復雜性。在網絡通信、并發控制和資源管理方面將會有重大的改進,這將使用ACID事務變得更好并具有可伸縮性。
將來會有越來越多的應用程序更自然地將數據存儲在數組或矩陣中。這是因為組織需要分析大量的非結構化信息,尤其是視頻。我們將掌握將所有非結構化數據轉換成半結構化格式的能力,這種格式在DBMS中更容易組織和索引。作為其中的一部分,時效性也將變得重要,因為它關系到信息如何隨時間的變化。目前的系統無法解釋這一點,因為在一個時間序列中存儲提取的每個視頻幀的信息的開銷很大。
無處不在的“物聯網”將意味著每臺設備都能夠收集有關其環境的數據。這將包括從小型嵌入式傳感器到大型自主機器人。小型設備將使用片上DBMS,就像手機現在包含片上視頻解碼器一樣。所有這些系統的數據庫將完全可以通過一些標準API(可能是SQL)進行組合和簡易的聯合。這意味著DBMS將以零配置彼此通信。你只需將兩個DBMS相互指向對方,它們就會立即傳遞它們的信息,并確保它們是同步的。某些管理器服務將能夠根據需要跨設備分發查詢執行。人們將不需要手動配置提取-轉換-加載實用程序或其他工具來保持不同系統上的數據一致。以這種方式使所有不同的DBMS可組合和可互操作將是一項重要的工程工作。因此,將會有一個使用人工智能或機器學習的工具包來自動地將不同的DBMS變體映射到彼此以進行相同的操作。
對于新的硬件,更靈活和可編程的制程將更普遍。DBMS將把程序的關鍵部分(例如鎖管理器)編譯到一個硬件加速器中。我們還將看到易失性和非易失性內存之間的二分法的消失。DBMS將假定所有內存都是快速和持久的,不需要維護變化無常的緩存。這種新存儲器將比今天可用的存儲器大幾個數量級。因此,DBMS將在預先計算的物化視圖中存儲其數據的多個副本,以便快速響應任何可能的查詢。
數據庫管理員的角色將不復存在。這些未來的系統太復雜了,人類無法推理。DBMS最終將完全自治和自修復。同樣,編程框架和DBMS之間的緊密耦合將支持系統在組織數據、提供資源和優化執行方面做出比人工生成計劃更好的決策。
我們將看到星際設備(如太空探測器)數據庫事務的增長。在這種情況下,在這些容器上運行的DBMS彼此之間的距離將比在地球上運行的系統要遠得多,并且會導致明顯較長的延遲(即延遲時間,分鐘或小時)。這意味著在今天基于web的應用程序中使用的弱一致性技術和實踐將被應用到這些星際系統中。
最后的最后,50年后我也已離開人世了吧。
原文:https://dev.to/seattledataguy/the-interview-study-guide-for-software-engineers-764
本文為 CSDN 翻譯,轉載請注明來源出處。
【End】