Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ترکیب داده های ساختار یافته و نیمه ساختار یافته در MariaDB 10.2‬‬

94 views

Published on

اسلاید های مربوط به ارائه ی بنده در سومین گردهمایی بزرگ برنامه نویسان ایران
Coder Conf 3
26/5/1396 8/18/2017

Published in: Software
  • Be the first to comment

  • Be the first to like this

ترکیب داده های ساختار یافته و نیمه ساختار یافته در MariaDB 10.2‬‬

  1. 1. ‫خدا‬ ‫نام‬ ‫به‬ ‫ترکیة‬‫در‬ ِ‫یافت‬ ‫ساختار‬ ِ‫ًیو‬ ٍ ِ‫یافت‬ ‫ساختار‬ ‫ّای‬ ُ‫داد‬MariaDB Server 10.2‬‬ ‫پَر‬ ‫هحوذیاى‬ ‫ّاهَى‬ ‫ایراى‬ ‫ًَیساى‬ ِ‫ترًاه‬ ‫گردّوایی‬ CoderConf3
  2. 2. ‫هستن؟‬ ‫کی‬ ‫هن‬ •‫پَر‬ ‫هحوذیاى‬ ‫ّاهَى‬ •‫ٍب‬ ‫الیف‬ ‫ضرکت‬ ‫ّای‬ ‫دیتاتیس‬ ‫هذیر‬ •‫ّای‬ ‫تالگ‬ ‫در‬ ُ‫ًَیسٌذ‬OrangeTech.irٍAlihossein.ir •‫تر‬ ‫هثتٌی‬ ‫ّای‬ ‫دیتاتیس‬ ‫هذیریت‬ ‫ّای‬ ‫راّکار‬ ُ‫دٌّذ‬ ِ‫ارائ‬MySQLٍMariaDB
  3. 3. ‫هقدهه‬ •‫تا‬ ‫ارتثاط‬ ‫در‬ ‫صحثت‬SQL‫تراتر‬ ‫در‬NoSQL‫ًیست‬. •‫تا‬ ‫ارتثاط‬ ‫در‬ ‫صحثت‬Structured‫تراتر‬ ‫در‬Semi-Structured‫ًیست‬. •ٍ‫د‬ ‫ایي‬ ‫ترکیة‬ ‫تا‬ ‫ارتثاط‬ ‫در‬ ‫صحثت‬‫است‬. ‫تا‬‫کٌین‬ ِ‫چ‬ ِ‫یافت‬ ‫ساختار‬ ِ‫ًیو‬ ‫ّای‬ ُ‫داد‬ ‫چالص‬‫؟‬ SQL And NoSQL
  4. 4. ‫هقدهه‬ ‫باشه‬ ‫تخیلی‬ ‫علمی‬ ‫و‬ ‫ترسناک‬ ‫سبک‬ ‫از‬ ‫ترکیبی‬ ‫فیلم‬ ‫یک‬ ‫اگر‬...
  5. 5. ‫هقدهه‬ ‫است‬ ُ‫ضذ‬ ‫هتغیر‬ ٍ ‫جذیذ‬ ‫ّای‬ ُ‫داد‬ ‫ظَْر‬ ِ‫ت‬ ‫هٌجر‬ ‫دیجیتال‬ ‫عصر‬. oMobile oIoT oSocial Network ‫ّستٌذ‬ ‫خَد‬ ‫سازهاى‬ ‫ترای‬ ‫زیر‬ ‫هَارد‬ ‫از‬ ‫یکی‬ ‫اًتخاب‬ ِ‫ت‬ ‫هجثَر‬ ‫کارّا‬ ٍ ‫کسة‬: o‫آًْا‬ ‫ترکیة‬ ٍ ‫دیتاتیس‬ ‫هذیریت‬ ‫چٌذیي‬ ‫اًتخاب‬ ‫یا‬ ٍ ِ‫یافت‬ ‫ساختار‬ ِ‫ًیو‬ ‫یا‬ ِ‫یافت‬ ‫ساختار‬ ‫ّای‬ ‫دیتاتیس‬ ‫از‬ ‫یکی‬ ‫اًتخاب‬ o‫تاضذ‬ ‫فَق‬ ‫ٍیژگی‬ ٍ‫د‬ ‫ّر‬ ‫دارای‬ ِ‫ک‬ ‫دیتاتیسی‬ ‫هذیریت‬ ‫اًتخاب‬.
  6. 6. ‫هقایسه‬JSON‫و‬Relational JSON Relational Agility Safety Flexibility Reliability Simplicity Transaction Ubiquity Data Integrity
  7. 7. ‫هعرفی‬MariaDB •‫ای‬ ِ‫راتط‬ ‫دیتاتیس‬ ‫هذیریت‬ ‫سیستن‬ •Drop in replacement for MySQL •ُ‫ضذ‬ ِ‫ارائ‬ ِ‫ًسخ‬ ‫آخریي‬:10.2 •‫ی‬ ِ‫ًسخ‬ ‫ّای‬ ‫ٍیژگی‬ ‫هْوتریي‬10.2 o‫ّای‬ ُ‫داد‬ ‫سازی‬ ُ‫رخیر‬Semi Structured‫قالة‬ ‫در‬JSON o‫تَاتع‬Window Functions o‫هَتَر‬ ‫هعرفی‬MyRocks(‫تَسط‬ ُ‫ضذ‬ ‫اّذا‬Facebook)
  8. 8. JSON‫در‬MariaDB •ٍ ‫ای‬ ِ‫راتط‬ ‫ّای‬ ُ‫داد‬ ‫ترکیة‬/ِ‫یافت‬ ‫ساختار‬ ِ‫ًیو‬ ‫یا‬ •‫اجرای‬Query‫از‬ ُ‫استفاد‬ ‫تا‬ ‫ّا‬SQLِ‫یافت‬ ‫ساختار‬ ِ‫ًیو‬ ‫ّای‬ ُ‫داد‬ ‫رٍی‬ ‫تر‬ •‫ّای‬ ُ‫داد‬ ‫تغییر‬‫خاصیت‬ ‫تا‬ ِ‫یافت‬ ‫ساختار‬ ِ‫ًیو‬ACID Transaction •‫دادى‬ ‫تغییر‬ ِ‫ت‬ ‫ًیاز‬ ‫تذٍى‬ ُ‫داد‬ ‫هذل‬ ‫گسترش‬Schema
  9. 9. ‫با‬ ‫تفاوت‬MySQL •MySQL‫ی‬ ِ‫ًسخ‬ ‫در‬5.7‫ٍیژگی‬JSON‫کرد‬ ‫هعرفی‬ ‫را‬. •‫در‬MySQL‫ی‬ ُ‫داد‬ ‫ًَع‬ ‫در‬ ِ‫ساختاریافت‬ ِ‫ًیو‬ ‫ّای‬ ُ‫داد‬JSON‫هیطًَذ‬ ُ‫رخیر‬. •‫طَل‬ ‫هحذٍدیت‬JSON‫هتغیر‬ ِ‫ت‬ ِ‫ٍاتست‬ ‫رکَرد‬ ‫ّر‬ ‫در‬ max_allowed_packet‫هیثاضذ‬( .Max = 1G)
  10. 10. ‫ها‬ ‫داده‬ ‫ترکیب‬ ‫از‬ ‫هثالی‬ id title username created_time attr 1 Ham HaMo0n 2017-07-12 {"about":"I’ m a programmer","mobile":"093 70272977","work":"lifeweb "} 2 Ali Ali 2017-07-13 {"about":"I’ m a programmer","mobile":"093 70272977","work":"doctor", "site":"http://ali.com"} ‫یافته‬ ‫ساختار‬ ‫یافته‬ ‫ساختار‬ ‫نیمه‬
  11. 11. ‫جدول‬ ‫ساخت‬ CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `username` varchar(255) NOT NULL, `created_time` timestamp NOT NULL DEFAULT current_timestamp(), `attr` text NOT NULL, PRIMARY KEY (`id`), CHECK (json_valid(`attr`)) ) ENGINE=InnoDB
  12. 12. ‫داده‬ ‫درج‬ INSERT INTO users(`title`,`username`,`attr`) VALUES ("Ham","Hamoon",'{"about":"I’ m a programmer","mobile":"09370272977"," work":"lifeweb"}'), ("Ali","Ali",'{"about":"I’ m a programmer","mobile":"09370272977"," work":"doctor","site":"http://ali.com"}'); INSERT INTO users(`title`,`username`,`attr`) VALUES ("Ebi","ebrahim98","about:from iran")
  13. 13. ‫داده‬ ‫خواندن‬ SELECT title,JSON_VALUE(attr,'$.site') AS 'site',created_time FROM users SELECT title,JSON_VALUE(attr, '$.about') AS 'about',JSON_VALUE(attr, '$.work') AS 'work' FROM users WHERE username = 'Hamoon'
  14. 14. ‫داده‬ ‫خواندن‬ SELECT title,username,JSON_VALUE(attr, '$.site') AS site FROM users WHERE JSON_CONTAINS_PATH(attr, 'one', '$.site') SELECT title,username FROM users WHERE JSON_VALUE(attr, '$.work') = 'lifeweb'
  15. 15. ‫ویژگی‬Virtual Column •‫ّا‬ ‫ستَى‬ ‫دیگر‬ ‫کٌار‬ ‫در‬ ‫هذاٍم‬ ‫یا‬ ٍ ‫هجازی‬ ‫ستَى‬ ‫یک‬ ‫ساخت‬ •‫تاضذ‬ ‫دیگر‬ ‫ستَى‬ ‫چٌذ‬ ‫از‬ ‫ترکیثی‬ ‫هیتَاًذ‬ ‫ستَى‬ ‫ایي‬. •‫ّای‬ ‫فیلذ‬ ‫کردى‬ ‫ستَى‬ ‫ترای‬ ‫هیتَاى‬ ‫ٍیژگی‬ ‫ایي‬ ‫از‬JSON‫کرد‬ ُ‫استفاد‬. ALTER TABLE users ADD COLUMN `work` VARCHAR(128) AS (JSON_VALUE(attr,'$.work')) VIRTUAL
  16. 16. Index‫ها‬ ‫فیلد‬ ‫کردن‬ EXPLAIN SELECT title,username FROM users WHERE `work` = 'lifeweb' EXPLAIN SELECT title,username FROM users WHERE `work` = 'lifeweb' ALTER TABLE `users` ADD INDEX `work` (`work`);
  17. 17. ‫ها‬ ‫فیلد‬ ‫بروزرسانی‬ •JSON_INSERT •JSON_REMOVE •JSON_REPLACE •JSON_SET
  18. 18. ‫ها‬ ‫فیلد‬ ‫بروزرسانی‬ #JSON_INSERT UPDATE users SET attr=JSON_INSERT(attr, '$.lives', 'Karaj') WHERE username = 'Hamoon'; #JSON_INSERT UPDATE users SET attr=JSON_INSERT(attr, '$.interesting', JSON_ARRAY('book', 'internet')) WHERE username = 'Ali'; #JSON_REPLACE UPDATE users SET attr=JSON_REPLACE(attr, '$.work', 'Google') WHERE username = 'Ali'; #JSON_REMOVE UPDATE users SET attr=JSON_REMOVE(attr, '$.about') WHERE username = 'Hamoon'; #JSON_SET UPDATE users SET attr=JSON_SET(attr, '$.interesting', JSON_ARRAY('game', 'travel')) WHERE username = 'Hamoon'; #JSON_SET UPDATE users SET attr=JSON_SET(attr, '$.interesting', JSON_ARRAY('book', 'sleep')) WHERE username = 'Ali';
  19. 19. ‫سوال؟‬
  20. 20. ‫هن‬ ‫با‬ ‫ارتباط‬ @HamoonDBA hamo0n asreiranweb@gmail.com http://orangetech.ir

×