国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    4020

    瀏覽量

    68353
  • SQlite
    +關注

    關注

    0

    文章

    81

    瀏覽量

    16733
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    矢量網絡分析儀:從群時延到混頻器測試的核心工具

    在射頻微波領域,信號的 “無失真傳輸” 是通信系統穩定運行的關鍵,而群時延則是衡量信號傳輸質量的核心指標之一。作為射頻測試的 “瑞士軍刀”,矢量網絡分析儀(VNA)不僅能精準測量器件的幅頻、相頻特性,更是群時延(尤其是混頻器群時延)測試的核心工具。
    的頭像 發表于 01-15 17:45 ?1041次閱讀
    矢量網絡分析儀:從群時延到混頻器測試的核心工具

    如何基于FFmpeg解碼WMV3視頻

    在音視頻開發的世界里,WMV3 就像一位沉靜的老友——它曾是 Windows Media 時代的主角,如今雖已淡出主流視野,卻仍在企業錄像、歷史資料、監控存檔中默默守候;而 FFmpeg,這位開源世界的“瑞士軍刀”,正是我們與這位老友對話的最佳翻譯官。
    的頭像 發表于 12-25 09:29 ?349次閱讀
    如何基于FFmpeg解碼WMV3視頻

    針織機不聽八卦,只聽PROFINET和MODBUS的話

    在現代紡織行業,自動化技術的應用正深刻改變著傳統生產模式。針織機與印染機械作為關鍵生產設備,其控制系統的性能直接影響能耗水平與工藝質量。近年來,通過采用變頻調速器替代機械變速裝置,結合多電機協同控制與分布式系統架構,紡織企業實現了能效優化與工藝精度的雙重提升。在這一過程中,PROFINET與MODBUS RTU兩種通訊協議發揮著互補作用。 在針織機械領域,多電機協同控制已成為主流技術方向。傳統機械變速機構存在傳動效率低、調節
    的頭像 發表于 09-18 14:54 ?275次閱讀
    針織機不聽<b class='flag-5'>八卦</b>,只聽PROFINET和MODBUS的話

    【HZ-T536開發板免費體驗】5、安裝sqlite3和使用golang讀寫數據庫

    如果想在嵌入式設備上實現簡單的設備管理功能,需要數據庫和服務后端程序。服務端程序,我更傾向使用golang來實現。 安裝sqlite3,使用ubuntu環境,可以直接用apt install安裝程序
    發表于 08-26 00:04

    數據庫數據恢復—服務器異常斷電導致Oracle數據庫故障的數據恢復案例

    Oracle數據庫故障: 某公司一臺服務器上部署Oracle數據庫。服務器意外斷電導致數據庫報錯,報錯內容為“system01.dbf需要更多的恢復來保持一致性”。該Oracle數據庫
    的頭像 發表于 07-24 11:12 ?643次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—服務器異常斷電導致Oracle<b class='flag-5'>數據庫</b>故障的<b class='flag-5'>數據</b>恢復案例

    數據庫數據恢復—MongoDB數據庫文件丟失的數據恢復案例

    MongoDB數據庫數據恢復環境: 一臺操作系統為Windows Server的虛擬機上部署MongoDB數據庫。 MongoDB數據庫故障: 工作人員在MongoDB服務仍
    的頭像 發表于 07-01 11:13 ?642次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—MongoDB<b class='flag-5'>數據庫</b>文件丟失的<b class='flag-5'>數據</b>恢復案例

    數據庫數據恢復—SQL Server數據庫被加密如何恢復數據

    SQL Server數據庫故障: SQL Server數據庫被加密,無法使用。 數據庫MDF、LDF、log日志文件名字被篡改。
    的頭像 發表于 06-25 13:54 ?675次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—SQL Server<b class='flag-5'>數據庫</b>被加密如何恢復<b class='flag-5'>數據</b>?

    飛凌嵌入式ElfBoard ELF 1板卡-busybox構建根文件系統Busybox編譯

    、find、mount以及telnet。有些人將Busybox稱為Linux工具里的瑞士軍刀。簡單的說Busybox就好像是個大工具箱,它集成壓縮了Linux的許多工具和命令。Busybox編譯一、源碼
    發表于 06-19 17:23

    SEGGER emFile支持大型數據庫

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

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

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

    當 RDK X3 遇上倉儲機器人,智鏈團隊讓效率原地起飛

    !我們帶著倉儲界的"六邊形戰士"來救場了!這臺智能倉儲機器人,堪稱倉儲界的"瑞士軍刀"。無人叉車自帶"聰明大腦",能讀手勢、懂指令,溝通毫無障礙;差速舵輪+四輪全向移動的設計,讓它在狹窄空間里像跳探戈一
    的頭像 發表于 04-21 01:18 ?877次閱讀
    當 RDK X3 遇上倉儲機器人,智鏈團隊讓效率原地起飛

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

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

    驚天動地!樹莓派有了這個系統,瞬間變智能硬件之王!

    各位技術愛好者,是不是已經對樹莓派愛不釋手了?這個小巧的單板計算機,不僅能做智能家居,還能搞物聯網,簡直就是“科技界的瑞士軍刀”。但你知道嗎?樹莓派的強大,不僅僅在于硬件本身,還在于它背后強大的軟件
    的頭像 發表于 03-25 09:26 ?866次閱讀
    驚天動地!樹莓派有了這個系統,瞬間變智能硬件之王!

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

    SQLite數據庫提取數值數據、用優化模型分析數據、將結果保存回數據庫的高效數據處理流程。2.基
    的頭像 發表于 03-25 09:22 ?1225次閱讀
    樹莓派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 ?966次閱讀