當前位置:首頁 » 虛擬幣百科 » mytt也是虛擬貨幣嗎

mytt也是虛擬貨幣嗎

發布時間: 2021-08-15 14:55:25

1. David Mytton為什麼從MySQL遷移到MongoDB資料庫

」 從中感到了作者的歡喜和憂愁,有翻譯不妥或理解不到位的,還請指正:)1,David為什麼要遷移?原文如下:寫道The problem we encountered was administrative. We wanted to scale using replication but found that MySQL had a hard time keeping up, especially with the initial sync. As such, backups became an issue, but we solved that. However, scaling MySQL onto multiple clustered servers as we plan to do in the future is difficult. You either do this through replication but that is only really suited to read-heavy applications; or using MySQL cluster. The cluster looks very good but I have read about some problems with it and was unsure of it』s suitability for our needs.看上去大概的意思是說:我們遇到了管理上的麻煩,雖然我們解決了備份問題。我們試圖通過MySql集群解決,集群看上去很好但對於一個大量寫應用來說卻遇到了困難,同時我們也不確定集群是否適應我們的需求。於是David選擇更換MySQL,選擇了MongoDB。2、為什麼選擇MongonDB?寫道Very easy to install. PHP mole available. Very easy replication, including master-master support. In testing this caught up with our live DB very quickly and stayed in sync without difficulty. Automated sharding being developed. Good documentation. 我想最重要的一點應該是:Very easy replication, including master-master support. In testing this caught up with our live DB very quickly and stayed in sync without difficulty. 非常容易的數據拷貝並且快速、一致。3、移植MongonDB後的問題。Schema-less:寫道Schema-less This means things are much more flexible for future structure changes but it also means that every row records the field names. We had relatively long, descriptive names in MySQL such as timeAdded or valueCached. For a small number of rows, this extra storage only amounts to a few bytes per row, but when you have 10 million rows, each with maybe 100 bytes of field names, then you quickly eat up disk space unnecessarily. 100 * 10,000,000 = ~900MB just for field names! We cut down the names to 2-3 characters. This is a little more confusing in the code but the disk storage savings are worth it. And if you use sensible names then it isn』t that bad e.g. timeAdded -> tA. A rection to about 15 bytes per row at 10,000,000 rows means ~140MB for field names – a massive saving.靈活的BSON文本存儲結構意味著每條記錄都帶有了欄位名,從而處理不當會導致空間的浪費,於是David減縮了欄位名。The database-per-customer method doesn』t work 寫道The database-per-customer method doesn』t work MongoDB stores data in flat files using their own binary storage objects. This means that data storage is very compact and efficient, perfect for high data volumes. However, it allocates a set of files per database and pre-allocates those files on the filesystem for speed: This was a problem because MongoDB was frequently pre-allocating in advance when the data would almost never need to 「flow」 into another file, or only a tiny amount of another file. This is particularly the case with free accounts where we clear out data after a month. Such pre-allocation caused large amounts of disk space to be used up. We therefore changed our data structure so that we had a single DB, thus making the most efficient use of the available storage. There is no performance hit for doing this because the files are split out, unlike MySQL which uses a single file per table.MongoDB的文件存儲是以「database」為顆粒的,不像MySQL為每個table使用一個單獨的文件。並且避免生成硬碟碎 片,mongonDB是預申請硬碟空間,以指數遞增,所以如果數據組織不好的話,會導致文件中實際使用空間遠小於佔用硬碟的空間,所以David更改了數 據組織結構以更高效得利用空間。Unexpected locking and blocking 寫道Unexpected locking and blocking In MongoDB, removing rows locks and blocks the entire database. Adding indexes also does the same. When we imported our data, this was causing problems because large data sets were causing the locks to exist for some time until the indexing had completed. This is a not a problem when you first create the 「collection」 (tables in MySQL) because there are only a few (or no) rows, but creating indexes later will cause problems. Previously in MySQL we would delete rows by using a wide ranging WHERE clause, for example to delete rows by date range or server ID. Now in MongoDB we have to loop through all the rows and delete them indivially. This is slower, but it prevents the locking issue. 在MongonDB中,刪除rows需要阻塞整個database,增加index也一樣,相對Mysql來說,速度慢了,但防止出現關於鎖的問題。Corruption 寫道Corruption In MySQL if a database (more likely a few tables) become corrupt, you can repair them indivially. In MongoDB, you have to repair on a database level. There is a command to do this but it reads all the data and re-writes it to a new set of files. This means all data is checked and means you will probably have some disk space freed up as files are compacted but it also means the entire database is locked and blocked ring the time it takes. With our database being around 60GB, this operation takes several hours.mysql中各類table可以獨立的修復,而mongonDB的修復是database級別的,所有的data都會被檢查。寫道Performance Our reasons for moving to MongoDB were not performance, however it has turned out that in many cases, query times are significantly faster than with MySQL. This is because MongoDB stores as much data in RAM as possible and so it becomes as fast as using something like memcached for the cached data. Even non-cached data is very fast.選擇MongonDB不是因為性能問題,但MongoDB的查詢性能也還快,類似有個memcached緩存了數據一樣。另外, MongonDB不支持事務。 適合寫完後馬上讀操作。 刪除記錄的時候不清理空間,只標記「刪除」,以後可重復利用。看完後,感覺MongoDB相對Mysql來說,只能說各有優略吧。Comments(提取了一些個人覺得有價值的問題):問:為什麼不選擇CouchDB?答:MongonDB的查詢與SQL很類似,CouchDB的KEY/VALUE查詢形式相比復雜,並且mongoDB提供php模塊。問:為什麼不考慮memcache&hadoop?答:map/rece查詢並不是我們需要的。問:為什麼不考慮SenSage or Vertica?答:對於一個新興公司來說,商業產品成本太高。問:你需要一個什麼樣的數據復制,有多少節點需要拷貝?Keyspace產品 適合你么?答:兩個都是新的產品,我們覺得mongoDB更成熟,另外提供PHP的模塊是一大優勢。問:你有考慮過阻塞對應用的影響嗎?答:是的,阻塞會導致應用一直等待最終超時。

熱點內容
大額Btc完美變現 發布:2025-06-10 13:16:06 瀏覽:940
比特幣未確認區塊 發布:2025-06-10 13:05:07 瀏覽:400
eth的新幣 發布:2025-06-10 12:16:45 瀏覽:694
比特幣現金微博 發布:2025-06-10 11:57:13 瀏覽:914
2020btc最低價格 發布:2025-06-10 11:50:19 瀏覽:897
元宇宙游戲怎麼互通 發布:2025-06-10 11:40:02 瀏覽:848
名朋怎麼兌換圈幣 發布:2025-06-10 11:36:14 瀏覽:501
元宇宙的亂紀元 發布:2025-06-10 11:23:41 瀏覽:449
區塊鏈如何防止偽造 發布:2025-06-10 10:32:53 瀏覽:916
哥倫布區塊鏈和阿里雲合作了嗎 發布:2025-06-10 10:32:45 瀏覽:83