[英]vcard vs sql-table for contacts
前幾天,我在查看SOGo SQL表時,發現記錄存儲為vcard數據,而不是具有不同列(如姓氏,電話號碼等)的精細表。
盡管有一個我期望的名為sogo_quick_contacts的表,但並不是所有的列都在那兒,只有一些基本的列。
我想知道為什么會這樣嗎? 用整個vcard數據查詢記錄並提取我需要的信息更好嗎? 應用SELECT查詢指示我正在尋找的某些列(如果可用)會更好(更快)嗎?
CardDav似乎提供了此vcard數據,它們更適合聯系人查找嗎,為什么?
如果我只想列出姓名和生日該怎么辦。 是否會比使用SQL Query提取所有vcard的速度慢得多,在SQL Query中我將所有內容拆分為不同的列?
在可伸縮OGo數據庫模式的設計方式中,有很多因素起作用。 哪個BTW是我設計的;-)
我認為這里的核心是專門為兩種類型的客戶端設計的:a)本地CardDAV客戶端(macOS / iOS聯系人,Thunderbird)和b)可擴展OGo Web界面。
本機客戶端基本上從不執行您要查詢的查詢類型。 他們總是將完整的vCard同步到其本地緩存。 因此,必須有一種快速的方法來存儲和檢索完整的vCard,這是針對服務器的最常見操作。
2003年的Web客戶端(我想那是我寫原始Web客戶端的那段時間)尚不具備在本地存儲完整對象的能力,因此只能執行您要求的操作:僅查詢Web客戶端需要處理的字段顯示在相應頁面上。 這就是“快速”表的用途。 它們包含Web客戶端顯示概述等所需的列。 本質上,它是由應用服務器提供的vCard內容索引。
這應該是您問題的主要答案。
同樣還有其他原因,其中一些原因沒有特定的順序:
希望這可以幫助。 也許有人會在2017年設計出一些與眾不同的東西,盡管我認為基本思想仍然合理;-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.