簡體   English   中英

MySQL + PHP:~500kb JSON 文件 - 將數據作為表和字段加載 VS 作為單個序列化變量

[英]MySQL + PHP: ~500kb JSON file - Loading data as tables and fields VS as a single serialized variable

我正在制作一個網站,該網站通過從離線項目發送到站點的 json 文件與離線項目進行交互。 該站點將需要加載這些文件並操作數據。

使用現代計算能力將這些文件作為單個序列化字段簡單地加載到數據庫中是否可行,然后可以在每次使用時加載和解碼?

還是將 JSON 正確存儲為表和字段並在每次使用時引用它們會節省大量開銷?

在不了解該項目的更多信息的情況下,具有多個字段的表可能是更好的解決方案。

從長遠來看,數據將有更多選項,例如,索引字段、搜索字段和許多其他 MySQL 命令,如果它們全部存儲在單個變量中,則這些命令是不可能的。

還要考慮項目的未來版本,例如向表中添加另一個字段很容易,但向 JSON 塊中添加另一個字段會更困難。

項目增長,如果您遇到 100 倍或 1000 倍的增長,表會處理額外的負載嗎?

500kb 是一個相對較小的數據塊,無論使用哪種方法,計算能力都不應該有任何問題,盡管這里可以提供更多信息,例如每個用戶 500kb,每次上傳,每天有多少商店,頻率是多少訪問。

調試也會更容易。

新的 MySQL shell 有一個批量 JSON 加載器,它不僅速度非常快,而且讓您可以對數據的處理方式進行大量控制。 https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-json.html

  1. 將其加載為 JSON。
  2. 想想您需要執行哪些查詢。
  3. 將選定的字段復制到 MySQL 列中,以便這些查詢可以使用 MySQL 的WHEREGROUP BYORDER BY而不必處理客戶端中的處理。

一個數據庫表包含一堆結構相似的行。 每行都有一組恆定的列。 NULLs可用於指示給定行缺少的列。)JSON 通過提供復雜的列使事情復雜化。 我上面的建議是 JSON 的開放式靈活性與使用數據庫服務器處理大量數據的需要之間的折衷。 在這里進一步討論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM