色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

數據火器庫八卦系列之瑞士軍刀隨APP攜帶的SQLite

數據庫小組 ? 來源:數據庫小組 ? 作者:數據庫小組 ? 2022-09-19 15:31 ? 次閱讀

來源:云數據庫技術

數據庫打工仔喃喃自語的八卦歷史

1. 為導彈巡洋艦設計,用在手機上的數據庫 2. Small and Simple, and Better 3. 如何看出是自己的娃:產品定位,特點和邊界

1. 產品設計

作為產品設計/產品管理的從業者,日常工作的一個核心就是明確產品的優勢和定位,加上同樣重要,又常常被忽略的維度:產品邊界

姚明是中鋒,并不是說他不能像后衛一樣投三分,他明確的知道自己的長處和定位,和能力邊界。

我們今天就討論一個數據庫專注細分領域的,甚至可以說是小眾的,但是又最流行的,產品邊界清晰的數據庫SQLite

SQLite Logo

圖片來源 - SQLite.org

2. SQLite - 兆級數據庫

從數據庫實例維度,全世界最流行的數據庫,不是那些數據庫元老(O,DB2,SQL Server), 不是云上新貴(Aurora, Snowflake, Azure),不是開源MySQL/PG, 不是大數據HBase/Spark。他們加在一起,也比不上SQLite的零頭。

現今世界上正在運行的SQLite,有超過萬億(1000B,1e12)的實例。每一位現代人的日常是被SQLite圍繞的 :

? 所有的Android手機/手環(華為,小米,三星...)

? 所有的蘋果iOS設備手機/Pad/手表

? 所有的蘋果電腦 Mac

? 所有的微軟Windows10電腦

? 通用瀏覽器(Firefox, Chrome, and Safari)

? 智能電腦/機頂盒

? 車載多媒體系統

? ....

SQLite不需要傳統意義的安裝,部署,調試,是純粹意義上的Zero-Configuration。不需要DBA, It just work for a developer,甚至許多i/OS, andriod手機APP的開發者,根本不知道他們在使用SQLite。

3. SQLite 產品設計

產品設計,開發實現與應用實踐,三者之間不是流水線或waterfall的單行道,而是循環往復,螺旋上升的。

SQLite由Dwayne Richard Hipp個人開發開源的。Hipp也算是計算機領域中N多個從學校肄業的大牛之一,區別在于Hipp是在Duke讀博士的時候才悟出來的,比Gates(大三) 和Jobs(大一)遜色不少。當年2000年甲方爸爸,世界五大國防工業提供商(俗稱軍火制造商)之一,列入Fortune 100的 通用動力公司(General Dynamics)需要為美國海軍的提供軟件系統,Hipp是其中一個臨時工。

如果對GD不熟悉,那可以補課旗艦產品F-16

Hipp作為政府的合同工,恰巧因為聯邦政府關門(對的,就是那種沒有錢導致的政府關門),暫時失業了。待業在家(筆者剛剛短暫的享受了幾天),Hipp搞出的事情就是寫個數據庫,處理個戰艦損管控制系統

2.1 需求

做數據庫的產品經理可能很難遇到如此具體的需求,驅逐艦奧斯卡.奧斯丁上的某個任務對話框彈出DBA夢幻信息

Can’t connect to database server

而這個任務是戰斗損管系統,也就是在彈雨槍林下,水深火熱中,需要報警表示那些管道/設施需要應急維修。真槍實彈的秒級交互場景中,如果出現數據庫無法聯接,操作員心中怎能不萬馬奔騰?

這個聯系不上的數據庫系統,是當年赫赫有名的Informix。雖然不如Oracle, Db2(那是還沒有SQL Server的時代),Informix也是top5 的數據庫,二十年前被IBM用10億美刀收購,也算體現價值了。可是Informix不是為這個業務場景設計的,事實上當年沒有任何一款數據庫符合此場景。

2.2 邊界:不是什么

一方面Informix和已有數據庫不適合上述場景,另一方面新產品也不用背負老系統的功能集和業務職責。

NOT another RDBMS:

? 不是替代當年成熟的數據庫(Db2, Oracle)

? 不是(2000年代)新寵的數據倉庫(Netezza, greenplum)

? 不是復雜的服務器Server-base系統

? 速度不是重要指標

? 存儲量也不是重要指標

? 跨平臺不是設計指標(對比2000 java的崛起)

? 功能齊全不是設計目的

2.3 定位:為單一APP服務的數據庫

SQLite是自己自足Self contained的關系數據庫管理系統,直接服務某應用某塊。此概念與現在流行的microservices有類似之處。

SQLite面臨的不是提高Informix鏈接數,復雜的鏈接池算法,或者斷點續連的問題。而是面向的是每一個控制模塊需要惡劣環境下,甚至出現物理切割的情況下,單模塊系統依然可以對立運行,完成大部分設計功能。特別明確一下,這里的模塊指代某個硬軟件一體的工業模塊,不是數據庫內部的純軟件模塊。

讓我們做一個業務對比:現在中國的銀行系統是采用中心體系的,每次一個支行或柜員機的業務操作是與總行數據中心連接完成的。好處是用戶可以跨區域跨分行操作,異地存儲轉賬,不足是如果與總行的線路出現問題,分行是癱瘓的。而SQLite的定位是,在正常情況下與總樞紐指揮中心聯絡,通訊通道異常時,比如前炮臺,后輪機,均需要獨立完成90%以上的職責。

2.4 特點(優點):NOT Faster, Better, Cheaper

咬文嚼字的說,優點是銷售詞匯,產品設計角度應該強調的是特點。特點在適合的場景中才是優勢。SQLite,不是最快最大最全的數據庫,恰恰相反它是最小的標準數據庫RDBMS。

SQLite的特點是如此明顯的,所以宣傳它不用那些看不出產品特點的片兒湯話。事實上SQLite的早期成功同商務宣傳沒有半毛錢關系。它為一個特殊的細分市場提供了具有基礎數據庫能力的嵌入式系統,這個細分市場在短短幾年跳躍進龐大的智能手機時代,而SQLite的生命力強大到輕輕松松的站在時代的浪尖。

2.4.1 小:Small and Simple

通過C編寫,在正式發布5年之后,向Google/Andriod的推廣時,SQLite的binary也不過250KB。出世20多年過程中,添加了全文檢索,CTE,JSON等高級功能后,SQLite的發布版也只有小小的700KB。

今日頭條( andriod版)的安裝后大小161MB,1:200的關系。對了,今日頭條APP中很可能也用了SQLite(請字節同學確認,同樣問題拋給阿里淘寶,騰訊微信)

SQLite其實很"大",3.33.0(2020GA)可以最大支持281TB的數據。其系統測試分四大類,幾百萬測試case。即使最小的,為開發程序員日常check in的把關的“very quick”的Tcl 測試,也有30萬個。它對產品質量的重視,是否可以讓許多大廠的號稱企業級的系統測試汗顏了[^9]。

2.4.2 標準數據庫

1. 支持數據庫最重要的事務ACID。

2. 兼容標準的SQL-92,第一版SQLite 1.0使用PostgreSQL6.5語法。

3. C/C++ interface作為原始編程語言接口,為后期衍生開發提供可擴展的鏈接

2.4.3 嵌入式

大家熟悉數據庫系統,Oracle, DB2, MySQL等,是存在于應用程序之外的獨立系統,一個Oracle為多個應用服務。還以銀行系統為例,應用(application)包括存取(強事務write),流水單(單儲戶Read Only),儲戶留存分析(月底報表, BI Report),都可以在同一個Oracle集群上操作。

SQLite是嵌入式的數據庫,作為應用(APP)的一個部件,同時安裝,同應用和用戶常常都是一對一關系。SQLlite的小賦予了它可以被嵌入的能力。

2.4.4 利用文件系統

定位決定了特殊性:并發少,權限管理簡單,性能要求不高。

SQLite不用類似系統級數據庫,深度管理定制的存儲管理系統,比如MySQL 開發自己的innoDB, TiDB 采用TiKV和RocksDB。SQLite依賴操作系統自帶的文件系統,讀寫自己DB file,并且繼承文件系統的權限管理。

此設計理念簡化系統復雜度,但也并不是沒有缺陷。并發讀寫就是SQLite的明顯短板之一。因為整個數據庫是一個大文件,依靠文件鎖來控制讀寫沖突。只有在后期(2010)實現WAL后,才提供了并發功能,當然也是有代價的。

2.4.5 Serverless

大家常常混淆了“Serverless”這個技術,與云Serverless Computing 這個技術+業務手段,比如[Serverless Database] (https://en.wikipedia.org/wiki/Serverless_computing#Serverless_databases),其實還是client/server的服務架構,準確的說是有服務器(Server)的。

Serverless作為一個技術,其經典定義(現在比較小眾了)就是紙面意思:沒有服務器/no server。SQLite是Serverless,因為它與應用程序的同一個進程內運行,公用共享同一塊內存空間,相互之間直接讀寫,而不通過消息協議(比如RPC call)和網絡交互。

2.4.6 "官方"認證

美國國會圖書館,又稱美國國家圖書館(Library of Congress) 推薦的獨立于平臺的開放格式的四種數據存儲格式之一。

此官方認證與國內的政府認證,語音類似,差距很大。

3. 馬后炮,評英雄

《成功學》最重要的優勢就在于:面對一個已經成功的產品,項目,人或者團隊,總結(堆砌)其英明決策。

現實世界是黑白多變的,歷史偶然性多于必然性,尤其是具體的人和事。回頭看SQLite, 也是可以總結一些契機和事后方知的因素,促成了它的今天。

3.1 項目 vs. 產品

SQLite肯定不是某領導英明決策的結果。本來是個項目(解決Informix掉鏈問題),Hipp閑的無聊把它作成了產品。

反觀許多產品團隊打著產品的名號做項目。在短期業務壓力下,或者是因為大廠內部競爭,或者因為初創企業生存壓力。團隊早期做有生命力有世界水平數據庫的夢想,很快向現實環境低頭了。被甲方爸爸或領導指揮左右,對自己的產品拔苗助長。項目也許拿下了的代價是產品做殘了。

3.2 開源

SQLite從第一天就是開源的,特別要明確一下,不是開源項目。

Hipp一個人開發,開源的。他沒有想到SQLite二十年后支持了現代人的分分秒秒的日常生活。甚至在頭幾年,Hipp都不知道誰使用,搞笑的是他之所以了解到通用電氣和日立青睞SQLite,是因為出口管制需要走法律流程時,兩個大廠不得不找Hipp了解情況。他才知道已經被白嫖多年。

很幸運的是,Hipp這個工程師得到一個有法務背景的IT商人, Mitchell Baker, CEO of Mozilla Foundation,指導和幫助。SQLite才真正成為一個項目SQLite聯盟 ,有了穩定的資金,同時又保留了開發者主導決策產品的發展的權利。

3.3 Google和Andriod

SQLite唯一獲得的獎項是2005 Google O’Reilly Open Source Award。

iphone/智能手機被業界認為是后PC革命的時候,smartphone已經開始使用SQLite, Symbian(Nokia)屬于最早的之一。

Google/Andriod在iphone獲得早期風光之后,也走進了掌上的舞臺。他們選中了SQLite。于是所有的Andriod APP, 都用SQLite作為默認的數據庫管理。實際情況是APP開發者并不了解數據庫,也沒有動力去選型。APP使用SQLite因為Google/Andriod是選擇(平臺作用),也是所有APP教程的選擇(生態作用)。

3.4 測試

SQLite突然直面了百萬的用戶,各種bug如雨后春筍一般暴露出來。Hipp花了整整一年時間寫測試用例。大多數產品在GA,商業化之后,很難有時間和機會專門提供測試覆蓋和產品質量。Hipp是幸運的,在關鍵時刻等到認可和資助;SQLite是幸運的,它是開發者的孩子而不是簡單的賺錢的工具。SQLite像是成長中的少年,等到了機會,吸收了營養,長大成人。

4. 一點感觸

4.1 業務引導技術方向 - 國內和國際不同的實踐

技術服務業務,是行內比較普遍的認知,合乎邏輯。但當我們看到細節的時候,會發現國際和國內的明顯不同。

中國和歐美IT技術開發既有相似處,比如美國為聯邦政府提供IT軟件服務也有類似中國的認證流程,本著對納稅人負責的態度,嚴謹但也死板,同時政府也常常是重要的金主甲方。不同點是,中國政府可以集中力量辦大事,遠的高鐵,近期的芯片新能源汽車,政府的方向性是明確清晰的。國際上,技術革新的大方向常常是技術公司和商業引導的,比如說Telsa/SpaceX的跨時代的突破,基本上沒有政府的引導,更準確的說是Telsa引導(游說)政府給以免稅政策。

具體到SQLite這個國家圖書館的“官方”認證,說起來很有力,其實對于SQLite的成敗影響力就非常有限了。

一點感想吧,如果讀者的產品計劃進軍國際市場,個人建議:

? 業務銷售人員要積極關注政府合規認證;

? 技術開發人員專注設計前沿和產品實現,切忌迎合。

4.2 描述產品的片兒湯話

產品常見的商業口號同質化嚴重,基本上是快好省的衍生詞匯。

比如:"與 MySQL 和 PostgreSQL 兼容的關系數據庫,專為云而打造。性能和可用性與商用數據庫相當,成本只有其 1/10" , 2022年9月13日摘抄AWS Aurora 官網。如果是某個領域的先行者,比如Aurora,倒也罷了,因為是采用了某個突破性新技術,可以擔當快好省的評價。之后的追隨者,也如此定位宣傳,就有些東施效顰的偷懶和尷尬了。

PPT/膠片是技術產品人員常常使用的工具,評價一個材料的好壞,用心與否,可以把PPT中的產品名字蓋住,用模版的把顏色和字符統一一下,是否還能看出是哪一個大廠的哪一款產品?粗略估計,80%的產品描述過不了此關。

5. 八卦篇

阿波羅登月

提到小而精的經典程序,必須跪拜一下阿波羅登月計劃中的AGC系統,提供登月過程中航天器的制導、導航和控制。全部系統安裝在72KB的只讀ROM里(頭條APP的2千分之一),運行空間是4KB(byte) RAM(約為本篇Markdown文本的四分之一)。

友情奉送Github打卡地址,膜拜一下阿波羅 11 號導航軟件AGC中指令模塊(Comanche055)和登月模塊(Luminary099)原碼。

當然再牛的軟件都有bug, 如果論如果論驚險性,AGC的1202肯定是歷史前10的。有興趣的同學,可以移步[代碼1202,50年前的阿波羅登月給自動駕駛汽車留下寶貴一課],或英文原版[Apollo 11's Infamous Landing Error Code 1202 Offers Earthly Lessons For Self-Driving Cars]。

花無百日紅

諷刺的是SQLite當年并沒有被GD采納,因為決策者還是保守的使用成熟且風險小的Informix。

SQLite的設計也沒有考慮到現在強烈的端(手機)和云之間的數據協同/同步需求。加上SQLite不隸屬于大廠,商業競爭過程中漸漸被同類產品壓迫。比如Google大力扶持的firebase 端云系統,MongoDB并購了Realme也是為此服務。業界比較成功的云原生的時序數據庫TDengine也在接口了除SQLite以外的多個端側數據采集模塊。

隨著手機市場的成熟,IoT和智能汽車的發展,SQLite的強力競爭者將越來越多。SQLite步入軟件的中年危機,我們拭目以待,期望它老而彌堅吧。

6. 信息來源

由于平臺對應引用鏈接的限制,無法準確標注信息來源。需要了解,請參考原文

審核編輯 黃昊宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據庫
    +關注

    關注

    7

    文章

    3822

    瀏覽量

    64506
  • SQlite
    +關注

    關注

    0

    文章

    78

    瀏覽量

    15958
收藏 人收藏

    評論

    相關推薦

    華為云 Flexus 云服務器 X 實例 openEuler 系統下部署 SQLite 數據庫瀏覽器 sqlite-web

    的資源調度能力和全面的安全保障體系,Flexus 云服務器 X 實例已成為眾多中小企業和開發者青睞的選擇。本文將詳細介紹如何在華為云 Flexus 云服務器 X 實例上部署基于 openEuler 操作系統的 SQLite 數據庫,并使用先進的 Web
    的頭像 發表于 01-08 11:42 ?56次閱讀
    華為云 Flexus 云服務器 X 實例<b class='flag-5'>之</b> openEuler 系統下部署 <b class='flag-5'>SQLite</b> <b class='flag-5'>數據庫</b>瀏覽器 <b class='flag-5'>sqlite</b>-web

    數據庫是哪種數據庫類型?

    數據庫是一種部署在虛擬計算環境中的數據庫,它融合了云計算的彈性和可擴展性,為用戶提供高效、靈活的數據庫服務。云數據庫主要分為兩大類:關系型數據庫
    的頭像 發表于 01-07 10:22 ?71次閱讀

    什么是嵌入式操作系統?

    的戰斗機。 FreeRTOS:它適合那些資源有限的小型設備,就像小巧的瑞士軍刀。 QNX:它以安全和可靠著稱,很多汽車和工業系統都用它,可以說是EOS中的沃爾沃。 Linux:雖然它不是專門為嵌入式
    發表于 11-08 15:07

    數據庫數據恢復—通過拼接數據庫碎片恢復SQLserver數據庫

    一個運行在存儲上的SQLServer數據庫,有1000多個文件,大小幾十TB。數據庫每10天生成一個NDF文件,每個NDF幾百GB大小。數據庫包含兩個LDF文件。 存儲損壞,數據庫
    的頭像 發表于 10-31 13:21 ?262次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—通過拼接<b class='flag-5'>數據庫</b>碎片恢復SQLserver<b class='flag-5'>數據庫</b>

    Oracle數據恢復—異常斷電后Oracle數據庫報錯的數據恢復案例

    Oracle數據庫故障: 機房異常斷電后,Oracle數據庫報錯:“system01.dbf需要更多的恢復來保持一致性,數據庫無法打開”。數據
    的頭像 發表于 09-30 13:31 ?322次閱讀
    Oracle<b class='flag-5'>數據</b>恢復—異常斷電后Oracle<b class='flag-5'>數據庫</b>啟<b class='flag-5'>庫</b>報錯的<b class='flag-5'>數據</b>恢復案例

    數據庫數據恢復—SQL Server數據庫出現823錯誤的數據恢復案例

    SQL Server數據庫故障: SQL Server附加數據庫出現錯誤823,附加數據庫失敗。數據庫沒有備份,無法通過備份恢復數據庫
    的頭像 發表于 09-20 11:46 ?371次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—SQL Server<b class='flag-5'>數據庫</b>出現823錯誤的<b class='flag-5'>數據</b>恢復案例

    Qi2磁吸充電認證,閃極碳纖維磁吸移動電源C2開售

    獲得了用戶的認可,與一加社區共創的閃極Pouch 3合1移動電源實現了技術創新,被稱為充電寶界的“瑞士軍刀”,斬獲很多用戶的芳心。
    的頭像 發表于 07-31 16:01 ?331次閱讀

    恒訊科技分析:sql數據庫怎么用?

    SQL數據庫的使用通常包括以下幾個基本步驟: 1、選擇數據庫系統: 選擇適合您需求的SQL數據庫系統,如MySQL、PostgreSQL、Microsoft SQL Server、SQLite
    的頭像 發表于 07-15 14:40 ?373次閱讀

    鴻蒙開發接口數據管理:【@ohos.data.rdb (關系型數據庫)】

    關系型數據庫(Relational Database,RDB)是一種基于關系模型來管理數據數據庫。關系型數據庫基于SQLite組件提供了一
    的頭像 發表于 06-10 18:35 ?1340次閱讀

    IAP升級,boot和app分別是用標準和HAL寫的,跳轉不成功是怎么回事?

    在學IAP升級。 我寫的app程序是用HAL寫的,設置了IROM的起始地址及大小,在程序開始后也設置了中斷向量表偏移地址。 用我同事寫好的boot程序(標準寫的,可以跳轉到標準
    發表于 04-24 07:56

    RT-Thread創建SQLite數據庫失敗是什么原因呢?

    STM32F103ZET6基于RT-Thread V4.1.1,文件系統littlefs,SQLite是從github下載的;在線程中調用示例代碼create_student_tbl()創建數據庫報錯,大佬們知道是什么原因嗎?
    發表于 03-05 06:35

    在stm32f407上移植了sqlite3并且存儲了傳感器數據,怎么把文件導出來?

    大佬們,我在stm32f407上移植了sqlite3,并且存儲了傳感器數據,現在需要把文件導出來,這個怎么操作呀,望各位大佬指點迷津。。。
    發表于 03-01 06:02

    數據庫數據恢復】Oracle數據庫ASM實例無法掛載的數據恢復案例

    oracle數據庫ASM磁盤組掉線,ASM實例不能掛載。數據庫管理員嘗試修復數據庫,但是沒有成功。
    的頭像 發表于 02-01 17:39 ?536次閱讀
    【<b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復】Oracle<b class='flag-5'>數據庫</b>ASM實例無法掛載的<b class='flag-5'>數據</b>恢復案例

    博途用戶自定義的使用-的編輯及管理

    前面兩篇文章我們介紹了項目及全局。項目沒有單獨的存放路徑,它項目創建而創建,項目保存而保存。全局
    的頭像 發表于 01-24 10:45 ?1152次閱讀
    博途用戶自定義<b class='flag-5'>庫</b>的使用-<b class='flag-5'>庫</b>的編輯及管理

    新火種AI|程前懟大佬引發鬧劇,但更值得關注的,是大佬的AI觀點

    此次參會的演講內容——《2024 AI發展的10大趨勢》。 事實上,相較于八卦,演講中的內容才是最值得我們關注的干貨。 不可原諒,錯誤低級...百萬網紅道歉,卻遭遇全網群嘲。 在討論正題之前,我們先來回顧一下此次被全網津津樂道的八卦
    的頭像 發表于 01-17 22:33 ?290次閱讀
    新火種AI|程前懟大佬引發鬧劇,但更值得關注的,是大佬的AI觀點
    主站蜘蛛池模板: 亚洲刺激视频| 色内射无码AV| 高清国产激情视频在线观看| 亚洲AV无码乱码A片无码蜜桃| 久久re热在线视频精99| 97免费观看视频| 偷拍亚洲色自拍| 青柠在线观看视频在线| 日韩精品亚洲专区在线电影不卡| 亚洲AV日韩AV欧美在线观看网| 超碰人人澡人人胔| 久久99热这里只有精品66| 亚洲精品视频观看| 国产午夜亚洲精品一区| 亚洲精品不卡在线| 国产在线精品视频资源| 亚洲精品一本之道高清乱码| 精品午夜寂寞影院在线观看| 一级大乳奶| 美女网站免费看| caoporn免费视频在线| 琪琪色原网20岁以下热热色原网站 | 丁香成人网址| 色欲AV人妻精品麻豆AV| 国产精品成久久久久三级四虎| 五花大绑esebdsm国产| 国产在线播放精品视频| 亚洲色综合狠狠综合区| 擼擼擼麻豆密臀AV| qvod电影网站| 偷窥wc美女毛茸茸视频| 黄色片网站下载| 5566精品资源在线播放| 人妻换人妻AA视频| 国产品无码一区二区三区在线| 亚洲视频精品| 欧美日韩一区二区三区四区| 国产精品无码AV天天爽色欲| 亚洲色欲啪啪久久WWW综合网| 乱色欧美激惰| 国产3级在线观看|