2017-03-29 120 views
-2

我可以在MySql數據庫中存儲一些對象嗎?因爲我正在通過MySql製作在線或離線支持系統。所以將所有數據存儲爲Object是非常重要的。除了對象,你有更好的主意嗎?如何將對象存儲在MySql數據庫中?

這是關於對象

$data = array(
       'user_id' => 1, //$userId, 
       'payment_id' => $payment_id, 
       'hash' => $hash, 
       'conversation' => $object, 
       'amount' => $paypal->getTransactions()[0]->getAmount()->getTotal(), 
       'description' => $paypal->getTransactions()[0]->getDescription() 
      ); 
$this->db->insert($this->table, $data); 
+0

。你的桌子有多少列? –

+0

您將不得不在數據庫中擁有每個密鑰,然後根據該密鑰進行插入。像INSERT INTO這樣的查詢(someKey1,someKey2)VALUES('{$ somevalue-> someKey1}','{$ somevalue-> someKey2}');「'該對象的屬性與鍵匹配。 – McStuffins

+0

無論如何,你可以在插入之前序列化這些對象 –

回答

1

MySql在MySql 5.7中增加了許多功能。現在你可以用很多方式做到這一點。

像大數據這樣的Oracle現在正集成到MySQL中。

MySql使用MySQL解鎖新的大數據洞察信息& Hadoop。

解決方案1:您可以使用MySQL作爲文檔存儲。有可能將許多對象存儲爲JSON。它強烈推薦並可擴展。

MySQL Document Store =(MySql + NoSql)。

X開發API將有助於生成JSON,SQL和CRUD操作優於X 協議。也有可能維持X Session。

對於聊天應用程序或組應用程序的透明數據打磨和共享將是最好的。

Soluation 2:MySql Sysbench: Read Only是另一個最佳的解決方案。這將是非常快速和可擴展的羣聊應用程序。

Soluation 3:使用MySql 5.7 : InnoDB, NoSql with Memcached API它將直接與存儲引擎InnoDB進行交互。它比MySql 5.6快6倍。

Still Now FaceBook正在使用該技術。因爲它非常快。

有關詳細信息:

https://www.mysql.com/news-and-events/web-seminars/introducing-mysql-document-store/

https://dev.mysql.com/doc/refman/5.7/en/document-store-setting-up.html

https://www.oracle.com/big-data/index.html

https://www.youtube.com/watch?v=1Dk517M-_7o

你想要什麼
+0

Soluation 1將是最好的。 https://dev.mysql.com/doc/refman/5.7/en/document-store.html –

+0

什麼是MySql 5.7中的新功能https://www.youtube.com/watch?v=dR2Uo97MQW8 –

+0

我剛剛發現因爲我正在尋找關於MySQL中的JSON存儲的東西。其中一個優點是您可以使用虛擬列索引JSON中包含的數據。這比序列化更好。序列化不應該用於將數據轉換爲可存儲格式。 –

3

你必須改變你的對象的字符串保存完整的對象達摩例子。 爲此,使用連載在PHP中:

http://php.net/manual/en/language.oop5.serialization.php

然後你就可以反序列化,並取回你的對象。

+1

一般來說,這是一個糟糕的想法。 – CD001

+0

你能解釋一下爲什麼嗎? –

+0

假設你想從你的數據庫中獲得具有屬性「x」的對象 - 你必須提取所有的數據並且非對象化以確定哪個對象具有該屬性;您的數據根本不再標準化。您應該有索引列的映射對象屬性,然後您可以檢索特定的數據,或將來輕鬆更新特定的屬性。另外,如果您將應用程序移植到Ruby或其他應用程序中,則序列化的PHP數據可能無用。 – CD001

相關問題