在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    3901

    瀏覽量

    65787
  • SQlite
    +關注

    關注

    0

    文章

    81

    瀏覽量

    16317
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    SEGGER emFile支持大型數據庫

    SEGGER宣布emFile對大型數據庫的支持,集成了SQLite,方便與SEGGER的BigFAT和微軟的exFAT一起使用。
    的頭像 發表于 04-23 15:51 ?191次閱讀

    嵌入式和單片機的區別?一文簡單明了的給你講透兩者的技術本質!

    開發7年的老兵,今天我就用大白話給你講明白:為什么單片機是"瑞士軍刀",而嵌入式系統是"智能工廠"?
    的頭像 發表于 04-21 16:10 ?533次閱讀
    嵌入式和單片機的區別?一文簡單明了的給你講透兩者的技術本質!

    樹莓派CM5可以用來做什么?工業控制的瑞士軍刀

    在工業4.0的浪潮中,ED-IPC3630以其卓越的性能和堅固的設計,成為了智能制造和自動化控制的新寵。這款基于RaspberryPiCM5的工業計算機不僅重新定義了工業計算的邊界,還以其強大的功能和靈活性,為工業領域帶來了革命性的變化。強大的核心,為工業而生想象一下,一個工業計算機擁有與高端智能手機相媲美的處理能力。ED-IPC3630搭載了Broadco
    的頭像 發表于 03-25 09:31 ?188次閱讀
    樹莓派CM5可以用來做什么?工業控制的<b class='flag-5'>瑞士軍刀</b>!

    樹莓派5 + Hailo AI加速器:工業級數值數據處理實戰,打通SQLite與機器學習全鏈路

    SQLite數據庫提取數值數據、用優化模型分析數據、將結果保存回數據庫的高效數據處理流程。2.基
    的頭像 發表于 03-25 09:22 ?393次閱讀
    樹莓派5 + Hailo AI加速器:工業級數值<b class='flag-5'>數據</b>處理實戰,打通<b class='flag-5'>SQLite</b>與機器學習全鏈路

    深入HarmonyOS NEXT開發中的ArkData操作SQLite數據庫

    大家好,我是 V 哥。今天給大家整理的內容是關于鴻蒙 NEXT 開發中使用 ArkData 操作 SQLite 數據庫的詳細介紹,從入門到精通,包含案例代碼和注釋,幫助小白快速入門到提升。先贊后看,家財萬貫。
    的頭像 發表于 03-07 10:55 ?383次閱讀

    適用于SQLite的dbExpress數據庫驅動程序

    dbExpress Driver for SQLite 概述 dbExpress Driver for SQLite 是一個獨立于數據庫的層,它定義了通用的 接口提供從 Delphi 和 C++
    的頭像 發表于 02-09 09:45 ?355次閱讀

    SQLite數據訪問組件

    SQLite 數據訪問組件 SQLite 數據訪問組件 (LiteDAC) 是一個組件 它提供從 Delphi 和 C++ Builder
    的頭像 發表于 02-08 11:48 ?392次閱讀
    <b class='flag-5'>SQLite</b><b class='flag-5'>數據</b>訪問組件

    火器的種類及其特點介紹 電子點火器與傳統點火器的比較

    一、點火器的種類及其特點 點火器是點燃可燃混合氣體的裝置,廣泛應用于汽車、廚房設備、工業燃燒系統等領域。根據其工作原理和結構特點,點火器可以分為多種類型,以下是幾種常見的點火器及其特點
    的頭像 發表于 01-31 15:27 ?2337次閱讀

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

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

    什么是嵌入式操作系統?

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

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

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

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

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

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

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

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

    關系型數據庫(Relational Database,RDB)是一種基于關系模型來管理數據數據庫。關系型數據庫基于SQLite組件提供了一
    的頭像 發表于 06-10 18:35 ?1819次閱讀
    主站蜘蛛池模板: 69日本xxxxxxxxx30 69日本xxxxxxxxx56 | 色综合 成人 | 欧美精品一区二区三区在线播放 | 三级理论片 | 欧美三级网址 | 免费看美女的逼 | 天天搞天天干 | 日韩亚洲人成网站在线播放 | 天天操天天干天天插 | 亚洲 欧美 校园 | 老师下面很湿很爽很紧 | 四虎永久在线精品免费观看地址 | 免费日本黄色网址 | 丁香婷婷基地 | 久草一区| jiucao在线观看精品 | 亚洲一卡2卡4卡5卡6卡在线99 | 欧美一卡2卡三卡四卡五卡 欧美一卡二卡3卡4卡无卡六卡七卡科普 | 欧美一区二区视频三区 | 免费观看欧美成人1314w色 | 电影一区二区三区 | 一级毛片免费全部播放完整 | 精品国产三级在线观看 | 超色视频| 丁香激情六月 | 色老头免费视频 | 成人毛片一区二区三区 | 精品日韩 | 五月婷在线观看 | 国产久视频 | 岛国三级在线看 | 亚洲伦理中文字幕一区 | 国产吧在线视频 | 一色桃子juy774在线播放 | 欧美一卡2卡三卡4卡5卡免费观看 | 一级做a爰片久久毛片美女图片 | 午夜一区二区在线观看 | 国产伦精品一区二区三区免费 | 色综合97天天综合网 | 午夜三级在线 | 国产情侣出租屋露脸实拍 |