MariaDB
 sql >> डेटाबेस >  >> RDS >> MariaDB

मारियाडीबी सर्वर 10.3 . में स्वचालित डेटा संस्करण

MariaDB सर्वर 10.3 एक नई, बहुत उपयोगी विशेषता के साथ आता है जो कई अनुप्रयोगों के डिज़ाइन को आसान बनाएगा। डेटा वर्जनिंग कई दृष्टिकोणों के लिए महत्वपूर्ण है। अनुपालन के लिए आवश्यक हो सकता है कि आपको डेटा परिवर्तनों को संग्रहीत करने की आवश्यकता हो। विश्लेषणात्मक प्रश्नों के लिए, आप एक विशिष्ट समय पर डेटा देखना चाहते हैं और ऑडिटिंग उद्देश्यों के लिए, क्या परिवर्तन किए गए थे और कब महत्वपूर्ण है। साथ ही, किसी तालिका के हटाए जाने की स्थिति में इसे इतिहास से पुनर्प्राप्त करने के लिए बहुत महत्वपूर्ण हो सकता है। मारियाडीबी सर्वर में अब सिस्टम-संस्करण वाली टेबल्स नाम की एक सुविधा शामिल है, जो SQL:2011 मानक में विनिर्देश पर आधारित है। यह तालिका डेटा का स्वचालित संस्करण प्रदान करता है।

मैं एक बहुत ही सरल उदाहरण के साथ सिस्टम-संस्करण वाली तालिकाओं की अवधारणा के माध्यम से चलूंगा, जो आपको दिखाएगा कि यह क्या है। आइए एक डेटाबेस और एक टेबल बनाकर शुरू करें।

CREATE DATABASE Company; 

CREATE TABLE Person (
  Id int(11) NOT NULL AUTO_INCREMENT,
  FirstName varchar(50) NOT NULL,
  LastName varchar(50) NOT NULL,
  Gender char(1) NOT NULL,
  DepartmentId int(11) NOT NULL,
  PRIMARY KEY (Id),
  CONSTRAINT con_gender CHECK (Gender in ('f','m')))
WITH SYSTEM VERSIONING;

यह SYSTEM_VERSIONING के साथ अंतिम तालिका विकल्प को छोड़कर बिल्कुल पहले जैसा दिखता है, जो तालिका पर स्वचालित संस्करण को चालू करता है। आइए देखें कि तालिका में एक पंक्ति डालने से यह कैसे काम करता है।

MariaDB [Company]> INSERT INTO Person (FirstName, LastName, Gender, DepartmentId) VALUES ('Rasmus', 'Johansson', 'm', 1);
Query OK, 1 row affected (0.002 sec)

MariaDB [Company]> SELECT * FROM Person;
+----+-----------+-----------+--------+--------------+
| Id | FirstName | LastName  | Gender | DepartmentId |
+----+-----------+-----------+--------+--------------+
|  1 | Rasmus    | Johansson | m      |            1 |
+----+-----------+-----------+--------+--------------+
1 row in set (0.001 sec)

वहां हमारे पास एक तालिका में एक पंक्ति के रूप में है। दिलचस्प हिस्सा तब शुरू होता है जब हम पंक्तियों को अपडेट करते हैं। मैं एक-दो बार विभाग बदलूंगा।

MariaDB [Company]> UPDATE Person SET DepartmentId = 2 WHERE Id = 1;                                      Query OK, 1 row affected (0.002 sec)
Rows matched: 1  Changed: 1  Inserted: 1  Warnings: 0

MariaDB [Company]> SELECT * FROM Person;
+----+-----------+-----------+--------+--------------+
| Id | FirstName | LastName  | Gender | DepartmentId |
+----+-----------+-----------+--------+--------------+
|  1 | Rasmus    | Johansson | m      |            2 |
+----+-----------+-----------+--------+--------------+
1 row in set (0.001 sec)

MariaDB [Company]> UPDATE Person SET DepartmentId = 3 WHERE Id = 1;
Query OK, 1 row affected (0.003 sec)
Rows matched: 1  Changed: 1  Inserted: 1  Warnings: 0

MariaDB [Company]> SELECT * FROM Person;
+----+-----------+-----------+--------+--------------+
| Id | FirstName | LastName  | Gender | DepartmentId |
+----+-----------+-----------+--------+--------------+
|  1 | Rasmus    | Johansson | m      |            3 |
+----+-----------+-----------+--------+--------------+
1 row in set (0.001 sec)

जैसा कि आप देख सकते हैं कि मारियाडीबी सर्वर बताता है कि हमेशा की तरह प्रत्येक अपडेट के लिए 1 बदली हुई पंक्ति है, लेकिन 1 भी डाला गया है, जो बिना वर्जनिंग के टेबल के लिए नहीं होगा। प्रत्येक अद्यतन पंक्ति के एक नए संस्करण का कारण बनता है, जिसे तालिका में सम्मिलित करना होता है। जैसा कि आप ऊपर भी देखते हैं एक सामान्य चयन केवल नवीनतम संस्करण दिखाएगा। पंक्तियों के सभी संस्करणों को देखने के लिए मारियाडीबी सर्वर निम्नलिखित सिंटैक्स प्रदान करता है।

MariaDB [Company]> SELECT * FROM Person FOR SYSTEM_TIME ALL;
+----+-----------+-----------+--------+--------------+
| Id | FirstName | LastName  | Gender | DepartmentId |
+----+-----------+-----------+--------+--------------+
|  1 | Rasmus    | Johansson | m      |            1 |
|  1 | Rasmus    | Johansson | m      |            2 |
|  1 | Rasmus    | Johansson | m      |            3 |
+----+-----------+-----------+--------+--------------+
3 rows in set (0.001 sec)

यह देखने में सक्षम होने के लिए कि पंक्तियों को कब अपडेट किया गया है, हम दो अदृश्य कॉलम शामिल करना चाहते हैं जो स्वचालित संस्करण द्वारा बनाए गए हैं। अदृश्य कॉलम मारियाडीबी सर्वर 10.3.1 की एक और रोमांचक नई विशेषता है। स्वचालित संस्करण के अदृश्य स्तंभ ROW_START और ROW_END हैं। वे उस समयावधि को परिभाषित करते हैं जिसके लिए पंक्ति का संस्करण मान्य था/है।

MariaDB [Company]> SELECT *, ROW_START, ROW_END FROM Person FOR SYSTEM_TIME ALL;
+----+-----------+-----------+--------+--------------+----------------------------+----------------------------+
| Id | FirstName | LastName  | Gender | DepartmentId | ROW_START                  | ROW_END                    |
+----+-----------+-----------+--------+--------------+----------------------------+----------------------------+
|  1 | Rasmus    | Johansson | m      |            1 | 2018-05-03 07:21:12.386980 | 2018-05-03 07:22:29.188266 |
|  1 | Rasmus    | Johansson | m      |            2 | 2018-05-03 07:22:29.188266 | 2018-05-03 07:22:47.596481 |
|  1 | Rasmus    | Johansson | m      |            3 | 2018-05-03 07:22:47.596481 | 2038-01-19 03:14:07.999999 |
+----+-----------+-----------+--------+--------------+----------------------------+----------------------------+
3 rows in set (0.000 sec)

दिलचस्प बात यह है कि किसी विशिष्ट तिथि और समय पर तालिका कैसी दिखती है, इसे ठीक करने के लिए समय-समय पर प्रश्नों को करना है। हम AS OF सिंटैक्स का उपयोग करके ऐसा कर सकते हैं:

MariaDB [Company]> SELECT * FROM Person FOR SYSTEM_TIME AS OF TIMESTAMP '2018-05-03 07:22:33';
+----+-----------+-----------+--------+--------------+
| Id | FirstName | LastName  | Gender | DepartmentId |
+----+-----------+-----------+--------+--------------+
|  1 | Rasmus    | Johansson | m      |            2 |
+----+-----------+-----------+--------+--------------+
1 row in set (0.001 sec)

यह सिस्टम-संस्करण वाली तालिकाओं में बस एक छोटी सी झलक थी। ऊपर दिखाए गए उदाहरणों के अलावा, आप प्रदर्शन कारणों से इतिहास को अलग-अलग पार्टिशन पर रख सकते हैं, कॉलम को वर्जनिंग से बाहर कर सकते हैं और भी बहुत कुछ।

MariaDB दस्तावेज़ में सिस्टम-संस्करण वाली तालिकाओं के बारे में और पढ़ें। मारियाडीबी TX 3.0 डाउनलोड के हिस्से के रूप में मारियाडीबी सर्वर 10.3 प्राप्त करें - अब उपलब्ध है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मारियाडीबी में DATE_FORMAT () कैसे काम करता है

  2. कैसे UNCOMPRESS () मारियाडीबी में काम करता है

  3. मूडल 3.9 . के साथ डेटाबेस ट्रैफ़िक के रीड राइट स्प्लिटिंग का उपयोग करके प्रदर्शन को बढ़ावा देना

  4. डेबियन 9 . पर मारियाडीबी को कैसे स्थापित और सुरक्षित करें

  5. मारियाडीबी में पीआई () कैसे काम करता है