微信小程序學習實錄12:掌握大數據量軌跡展示的MySQL結構設計

獲取經緯度信息后,mysql建立數據表po_trajectory,字段包含tra_id、longitude、latitude、tra_time和openid。

為微信小程序創建的 po_trajectory 數據表,字段包含 tra_idlongitudelatitudetra_timeopenid,從結構設計上看,對于大數據量的軌跡展示是比較合適的,但需要從多個方面綜合考量,下面為你詳細分析:

數據表設計合理性

優點
  • 主鍵 tra_id:它可作為數據表的主鍵,能唯一標識每條軌跡記錄,在數據插入、更新、刪除操作時能保證數據的完整性和一致性。同時,數據庫查詢時利用主鍵進行查詢,速度會更快。
  • longitudelatitude:這兩個字段用來存儲經緯度信息,是軌跡數據的核心內容。借助它們可以在地圖上標記出具體的位置點,進而繪制出軌跡。
  • tra_time:該字段記錄了軌跡點的采集時間,在展示軌跡時,可依據時間順序對軌跡點進行排序,從而實現軌跡的動態展示。另外,還能根據時間范圍進行數據篩選,提升查詢效率。
  • openid:此為微信用戶的唯一標識,可通過它對不同用戶的軌跡數據進行區分和管理,便于多用戶場景下的軌跡數據存儲和查詢。
潛在問題
  • 數據類型選擇:若 longitudelatitude 采用浮點數類型存儲,在數據量很大時,可能會占用較多存儲空間。可以考慮采用合適的精度進行存儲,例如使用 DECIMAL 類型。
  • 索引優化:若要對大數據量進行高效查詢和分析,需要合理創建索引。例如,可在 openidtra_time 上創建索引,這樣能加快按用戶和時間范圍的查詢速度。
  • 數據分區:當數據量非常大時,可考慮對數據表進行分區,例如按時間范圍進行分區,以提升查詢性能。

示例 SQL 代碼

下面是創建 po_trajectory 數據表的 SQL 語句,同時包含索引的創建:

-- 創建數據表
CREATE TABLE po_trajectory (tra_id INT AUTO_INCREMENT PRIMARY KEY,longitude DECIMAL(9, 6) NOT NULL,latitude DECIMAL(9, 6) NOT NULL,tra_time DATETIME NOT NULL,openid VARCHAR(32) NOT NULL,INDEX idx_openid (openid),INDEX idx_tra_time (tra_time)
);

代碼解釋

  • DECIMAL(9, 6):用于存儲經緯度信息,精度為小數點后 6 位,能滿足大部分地圖展示的需求。
  • idx_openididx_tra_time:分別為 openidtra_time 字段創建的索引,可加快按用戶和時間范圍的查詢速度。
  • $_POST 中的 longitudelatitude 數據,且在向數據庫插入數據時,若經緯度小數位數與數據庫表字段定義的小數位數不一致,是否會出現問題取決于數據庫字段的數據類型和定義。

數據格式

1. 數據庫字段為 DECIMAL 類型

如果你在創建數據庫表時,將 longitudelatitude 字段定義為 DECIMAL 類型,例如 DECIMAL(9, 6),其含義是總共 9 位數字,其中小數部分占 6 位。

小數位數多于 6 位

當傳入的經緯度小數位數多于 6 位時,數據庫會進行四舍五入操作。比如,你傳入的經度是 116.3971288,數據庫會將其存儲為 116.397129

小數位數少于 6 位

若傳入的經緯度小數位數少于 6 位,數據庫會在小數部分末尾補零。例如,你傳入的緯度是 39.9165,數據庫會將其存儲為 39.916500

2. 數據庫字段為 FLOATDOUBLE 類型

若數據庫字段定義為 FLOATDOUBLE 類型,這兩種類型是浮點類型,存儲的是近似值。

小數位數問題

浮點類型通常不會嚴格限制小數位數,不過可能會存在精度丟失的問題。在處理高精度的經緯度數據時,不建議使用 FLOATDOUBLE 類型,因為它們可能無法精確存儲數據。

總結

總體而言,po_trajectory 數據表的設計對于大數據量的微信小程序軌跡展示是合適的,但需要根據實際的數據量和查詢需求進行優化,如合理選擇數據類型、創建索引和進行數據分區等。


@漏刻有時

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/77537.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/77537.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/77537.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機系統---性能指標(3)續航與散熱

計算機電池續航的性能指標 一、電池基礎物理指標 電池容量(核心指標) 單位: 毫安時(mAh):常見于手機/平板,反映電池存儲電荷量,需結合電壓計算實際能量(如3.7V電池&…

貪心算法之最小生成樹問題

1. 貪心算法的基本思想 貪心算法在每一步都選擇局部最優的邊,希望最終得到整體最優的生成樹。常見的兩種 MST 算法為 Kruskal 算法 和 Prim 算法。這兩者均滿足貪心選擇性質和最優子結構性質,即: 貪心選擇性質:局部最優選擇&…

LeetCode hot 100—編輯距離

題目 給你兩個單詞 word1 和 word2, 請返回將 word1 轉換成 word2 所使用的最少操作數 。 你可以對一個單詞進行如下三種操作: 插入一個字符刪除一個字符替換一個字符 示例 示例 1: 輸入:word1 "horse", word2 &q…

2.3 Spark運行架構與流程

Spark運行架構與流程包括幾個核心概念:Driver負責提交應用并初始化作業,Executor在工作節點上執行任務,作業是一系列計算任務,任務是作業的基本執行單元,階段是一組并行任務。Spark支持多種運行模式,包括單…

NO.82十六屆藍橋杯備戰|動態規劃-從記憶化搜索到動態規劃|下樓梯|數字三角形(C++)

記憶化搜索 在搜索的過程中,如果搜索樹中有很多重復的結點,此時可以通過?個"備忘錄",記錄第?次搜索到的結果。當下?次搜索到這個結點時,直接在"備忘錄"??找結果。其中,搜索樹中的?個?個結點…

使用 VBA 宏創建一個選擇全部word圖片快捷指令,進行圖片格式編輯

使用 VBA 宏批量選擇圖片 ? 第一步:創建 .dotm 加載項文件 1、使用環境 office word 365,文件格式為.docx 圖片格式為.PNG 2、創建 .dotm 加載項文件 打開 Word,新建一個空白文檔。 按下 Alt F11 打開 VBA 編輯器。 點擊菜單欄&#xff…

深度學習的下一個突破:從圖像識別到情境理解

引言 過去十年,深度學習在圖像識別領域取得了驚人的突破。從2012年ImageNet大賽上的AlexNet,到后來的ResNet、EfficientNet,再到近年來Transformer架構的崛起,AI已經能在許多任務上超越人類,比如人臉識別、目標檢測、醫…

使用dyn4j做碰撞檢測

文章目錄 前言一、環境準備添加依賴基本概念 二、實現步驟1.創建世界2.添加物體3.設置碰撞監聽器4.更新世界 三、完整代碼示例四、優化補充總結 前言 dyn4j 提供了高效的碰撞檢測和物理模擬功能,適用于游戲開發、動畫制作以及其他需要物理交互的場景。通過簡單的 A…

VS Code settings.json 文件中常用的預定義變量?及其用途說明

VS Code settings.json 常用預定義變量 以下是 Visual Studio Code 配置文件中常用的預定義變量列表: 1. 工作區相關變量 變量描述示例值${workspaceFolder}當前工作區根目錄的絕對路徑C:/projects/my-project${workspaceFolderBasename}工作區文件夾名稱&#x…

elasticSearch-搜索引擎

搜索引擎的優勢 有了數據庫分頁查詢,為什么還需要搜索引擎? 搜索引擎速度上很快數據庫分頁查詢,隨著數據庫數據量增大,頁數靠后,會導致搜索速度變慢,但是搜索引擎不會搜索引擎支持分詞查詢,地…

安裝OpenJDK1.8 17 (macos M芯片)

安裝OpenJDK 1.8 下載完后,解壓,打開 環境變量的配置文件即可 vim ~/.zshrc #export JAVA_HOME/Users/xxxxx/jdk-21.jdk/Contents/Home #export JAVA_HOME/Users/xxxxx/jdk-17.jdk/Contents/Home #export JAVA_HOME/Users/xxxxx/jdk-11.jdk/Contents…

斷言與反射——以golang為例

斷言 x.(T) 檢查x的動態類型是否是T,其中x必須是接口值。 簡單使用 func main() {var x interface{}x 100value1, ok : x.(int)if ok {fmt.Println(value1)}value2, ok : x.(string)if ok {//未打印fmt.Println(value2)} }需要注意如果不接受第二個參數就是OK,這…

Java設計模式:系統性解析與核心模式

一、設計模式三大分類總覽 創建型模式(5種) 核心目標:對象創建的優化與解耦 單例模式(Singleton) 工廠模式(Factory) 抽象工廠模式(Abstract Factory) 建造者模式&#…

Elasticsearch 向量數據庫,原生支持 Google Cloud Vertex AI 平臺

作者:來自 Elastic Valerio Arvizzigno Elasticsearch 將作為第一個第三方原生語義對齊引擎,支持 Google Cloud 的 Vertex AI 平臺和 Google 的 Gemini 模型。這使得聯合用戶能夠基于企業數據構建完全可定制的生成式 AI 體驗,并借助 Elastics…

408 計算機網絡 知識點記憶(7)

前言 本文基于王道考研課程與湖科大計算機網絡課程教學內容,系統梳理核心知識記憶點和框架,既為個人復習沉淀思考,亦希望能與同行者互助共進。(PS:后續將持續迭代優化細節) 往期內容 408 計算機網絡 知識…

10-MySQL-性能優化思路

1、優化思路 當我們發現了一個慢SQL的問題的時候,需要做性能優化,一般我們是為了提高SQL查詢更快,一個查詢的流程由下圖的各環節組成,每個環節都會消耗時間,要減少消耗時候需要從各個環節都分析一遍。 2 連接配置優化 第一個環節是客戶端連接到服務端,這塊可能會出現服務…

Docker:安裝與部署 Nacos 的技術指南

1、簡述 Nacos(Dynamic Naming and Configuration Service)是阿里巴巴開源的一個動態服務發現、配置管理和服務治理的綜合解決方案,適用于微服務架構。 Nacos 主要功能: 服務發現與注冊:支持 Dubbo、Spring Cloud 等主流微服務框架的服務發現與注冊。動態配置管理:支持…

【非機動車檢測】用YOLOv8實現非機動車及駕駛人佩戴安全帽檢測

非機動車及駕駛人佩戴安全帽檢測任務的意義主要包括以下幾點: 保障行車安全:非機動車包括自行車、電動車等,佩戴安全帽能夠有效保護騎車人頭部,減少因交通事故造成的頭部傷害風險,提高行車安全系數。 符合交通法規&am…

壹起航:15年深耕互聯網營銷,助力中國工廠出海獲客

在全球化浪潮下,越來越多的中國工廠渴望拓展海外市場,但面臨品牌建立、穩定詢盤獲取及營銷成本降低等多重挑戰。壹起航憑借15年的豐富經驗,整合外貿建站、SEO優化及海外短視頻營銷,為中國工廠提供一站式出海解決方案。 一、外貿獨…

Emacs 折騰日記(二十)——修改emacs的一些默認行為

上一篇我們完成了emacs輸入法的配置以及將emacs配置成了使用vim的操作方式。但是emacs目前有些默認行為我不太喜歡,這節我們一起來修改它 備份設置 我們打開emacs的配置文件所在路徑,發現有大量的~結尾的文件,這是emacs的備份文件。這里&am…