{"id":190,"date":"2015-08-16T10:54:14","date_gmt":"2015-08-16T01:54:14","guid":{"rendered":"http:\/\/blog.barbayar.net\/?p=190"},"modified":"2015-08-16T11:05:42","modified_gmt":"2015-08-16T02:05:42","slug":"dynamodb-%d1%8b%d0%bd-%d1%82%d0%b0%d0%bb%d0%b0%d0%b0%d1%80-%d0%b7%d0%b0%d1%85-%d0%b7%d1%83%d1%85%d0%b0%d0%b0%d1%81","status":"publish","type":"post","link":"https:\/\/blog.barbayar.net\/?p=190","title":{"rendered":"DynamoDB-\u044b\u043d \u0442\u0430\u043b\u0430\u0430\u0440, \u0437\u0430\u0445 \u0437\u0443\u0445\u0430\u0430\u0441"},"content":{"rendered":"<p>AWS(Amazon Web Services) \u0433\u044d\u0436 \u043c\u044d\u0434\u044d\u044d\u0436 \u0441\u043e\u043d\u0441\u0441\u043e\u043d \u0431\u0430\u0439\u0445. \u0422\u044d\u0440\u043d\u0438\u0439 \u043d\u044d\u0433 \u04af\u0439\u043b\u0447\u0438\u043b\u0433\u044d\u044d \u043d\u044c DynamDB \u044e\u043c. NoSQL \u0442\u04e9\u0440\u043b\u0438\u0439\u043d database. \u042f\u0430\u0433\u0430\u0430\u0434 \u044d\u043d\u044d \u0442\u0430\u043b\u0430\u0430\u0440 \u044f\u0440\u0438\u0445 \u0431\u043e\u043b\u0441\u043e\u043d \u0431\u044d \u0433\u044d\u0445\u044d\u044d\u0440, \u043c\u0438\u043d\u0438\u0439 \u0430\u0436\u0438\u043b\u043b\u0430\u0436 \u0431\u0430\u0439\u0433\u0430\u0430 \u0442\u043e\u0433\u043b\u043e\u043e\u043c, infrastructure-\u0430\u0430 \u0430\u043b\u044c \u0431\u043e\u043b\u043e\u0445 AWS-\u0440\u0443\u0443 \u0448\u0438\u043b\u0436\u04af\u04af\u043b\u044d\u0445\u044d\u044d\u0440 \u0430\u0436\u0438\u043b\u043b\u0430\u0436 \u0431\u0430\u0439\u0433\u0430\u0430 \u044e\u043c. \u042f\u0430\u0433\u0430\u0430\u0434 \u0433\u044d\u0445\u044d\u044d\u0440, \u04e9\u04e9\u0440\u0441\u0434\u04e9\u04e9 \u0437\u04e9\u0432\u0445\u04e9\u043d \u0442\u043e\u0433\u043b\u043e\u043e\u043c \u0445\u04e9\u0433\u0436\u04af\u04af\u043b\u044d\u0445 \u0442\u0430\u043b \u0434\u044d\u044d\u0440\u044d\u044d \u0442\u04e9\u0432\u043b\u04e9\u0440\u0447 \u0430\u0436\u0438\u043b\u043b\u0430\u0430\u0434, \u0441\u0435\u0440\u0432\u0435\u0440 \u0442\u0430\u043b\u044b\u043d \u0430\u0441\u0443\u0443\u0434\u043b\u0443\u0443\u0434\u0430\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0436\u0443\u0443\u043b\u0430\u0445 \u04af\u04af\u0434\u043d\u044d\u044d\u0441. \u041c\u044d\u0434\u044d\u044d\u0436 AWS \u0430\u0448\u0438\u0433\u043b\u0430\u0441\u0430\u043d\u0430\u0430\u0440 \u0437\u0430\u0440\u0434\u0430\u043b \u0433\u0430\u0440\u0430\u0445 \u0447, dev ops-\u0443\u0443\u0434\u044b\u0433 \u0430\u0436\u043b\u0443\u0443\u043b\u0430\u0445 \u0437\u0430\u0440\u0434\u0430\u043b \u0431\u043e\u043b\u043e\u043d, \u04e9\u04e9\u0440\u0441\u0434\u04e9\u04e9 \u0431\u0430\u0441 \u0445\u0430\u0440\u0438\u0443\u0446\u0430\u0436 \u0431\u0430\u0439\u0433\u0430\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u04af\u04af\u0434\u0438\u0439\u043d \u0437\u0430\u0440\u0434\u0430\u043b \u0431\u0430\u0433\u0430\u0441\u0430\u0445 \u044e\u043c. \u0422\u044d\u0433\u044d\u0445\u0434\u044d\u044d \u0445\u0430\u043c\u0433\u0438\u0439\u043d \u0433\u043e\u043b \u0437\u043e\u0440\u0438\u043b\u0433\u043e \u043d\u044c \u043d\u0430\u0439\u0434\u0432\u0430\u0440\u0442\u0430\u0439, high scaling \u0431\u043e\u043b\u0433\u043e\u0445 \u044f\u0432\u0434\u0430\u043b \u044e\u043c.<\/p>\n<p><strong>DynamoDB<\/strong><br \/>\nNoSQL database \u0433\u044d\u0436 \u0434\u0443\u0440\u044c\u0434\u0441\u0430\u043d. \u041c\u0430\u0448 \u044d\u043d\u0433\u0438\u0439\u043d\u044d\u044d\u0440 \u0445\u044d\u043b\u0431\u044d\u043b, advanced KVS(Key\/Value Store) \u044e\u043c.<br \/>\n\u0414\u0430\u0432\u0443\u0443 \u0442\u0430\u043b\u0443\u0443\u0434 \u0433\u044d\u0432\u044d\u043b<br \/>\n&#8211; \u042f\u043c\u0430\u0440 \u0447 \u0438\u0445 \u0445\u044d\u043c\u0436\u044d\u044d\u043d\u0438\u0439 \u04e9\u0433\u04e9\u0433\u0434\u04e9\u043b \u0431\u0430\u0439\u0441\u0430\u043d \u0445\u0430\u043c\u0430\u0430\u0433\u04af\u0439, auto-scaling.<br \/>\n&#8211; 10ms-\u044b\u043d \u0434\u043e\u0442\u043e\u0440 \u04e9\u0433\u04e9\u0433\u0434\u043b\u0438\u0439\u0433 \u0447\u0438\u043d\u044c \u0431\u0443\u0446\u0430\u0430\u043d\u0430. (Scan \u0431\u043e\u043b\u043e\u043d Query \u0430\u0448\u0438\u0433\u043b\u0430\u0430\u0433\u04af\u0439 \u0442\u043e\u0445\u0438\u043e\u043b\u0434\u043e\u043b\u0434)<br \/>\n&#8211; Document-\u0442\u044d\u0439 \u0430\u0436\u0438\u043b\u043b\u0430\u043d\u0430. \u04e8\u04e9\u0440\u04e9\u04e9\u0440 \u0445\u044d\u043b\u0431\u044d\u043b MongoDB \u0448\u0438\u0433 JSON \u04e9\u0433\u04e9\u0433\u0434\u043b\u0438\u0439\u0433 \u0445\u0430\u0434\u0433\u0430\u043b\u0430\u0430\u0434, \u0442\u044d\u0440\u043d\u0438\u0439\u0445\u044d\u044d \u043d\u044d\u0433 \u0445\u044d\u0441\u0433\u0438\u0439\u0433 \u0434\u0443\u0443\u0434\u0430\u0445, \u044d\u0441\u0432\u044d\u043b \u043d\u044d\u0433 \u0445\u044d\u0441\u0433\u0438\u0439\u0433 \u04e9\u04e9\u0440\u0447\u043b\u04e9\u0445 \u0433\u044d\u0441\u044d\u043d \u04af\u0439\u043b\u0434\u043b\u04af\u04af\u0434\u0438\u0439\u0433 \u0445\u0438\u0439\u0445 \u0431\u043e\u043b\u043e\u043c\u0436\u0442\u043e\u0439.<br \/>\n&#8211; \u042f\u043c\u0430\u0440 \u0447 \u0438\u0445 \u0445\u04af\u0441\u044d\u043b\u0442 \u0438\u0440\u0441\u044d\u043d \u0445\u04af\u043b\u044d\u044d\u0436 \u0430\u0432\u0430\u0445 \u0431\u043e\u043b\u043e\u043c\u0436\u0442\u043e\u0439. \u0425\u04af\u0441\u043d\u044d\u0433\u0442\u044d\u043d\u0434\u044d\u044d read\/write throughput \u0442\u043e\u0445\u0438\u0440\u0443\u0443\u043b\u0436 \u04e9\u0433\u043d\u04e9. \u041c\u044d\u0434\u044d\u044d\u0436 \u0438\u0445 \u0442\u043e\u0445\u0438\u0440\u0443\u0443\u043b\u0430\u0445 \u0442\u0443\u0441\u0430\u043c \u0438\u0445\u0438\u0439\u0433 \u0442\u04e9\u043b\u043d\u04e9. \u0422\u044d\u0433\u044d\u0445\u044d\u044d\u0440 \u0438\u043b\u04af\u04af \u0443\u044f\u043d \u0445\u0430\u0442\u0430\u043d \u0431\u043e\u043b\u0436 \u0431\u0430\u0439\u0433\u0430\u0430 \u044e\u043c. \u0425\u044d\u0440\u0432\u044d\u044d site \u0440\u0443\u0443 \u0447\u0438\u043d\u044c \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u043d\u0434 10 \u0445\u044d\u0440\u044d\u0433\u043b\u044d\u0433\u0447 \u0445\u0430\u043d\u0434\u0434\u0430\u0433 \u0431\u043e\u043b, throughput-\u044d\u044d \u0431\u0430\u0433\u0430\u0430\u0440 \u0442\u043e\u0445\u0438\u0440\u0443\u0443\u043b\u0430\u0430\u0434, \u0445\u044d\u0440\u0432\u044d\u044d 10,000 \u0445\u044d\u0440\u044d\u0433\u043b\u044d\u0433\u0447 \u0445\u0430\u043d\u0434\u0434\u0430\u0433 \u0431\u043e\u043b, 1000 \u0434\u0430\u0445\u0438\u043d \u0438\u0445\u044d\u0441\u0433\u044d\u0445\u044d\u0434 \u043b \u0445\u0430\u043d\u0433\u0430\u043b\u0442\u0442\u0430\u0439.<\/p>\n<p>\u0421\u0443\u043b \u0442\u0430\u043b\u0443\u0443\u0434<br \/>\n&#8211; MySQL \u0433\u044d\u0445 \u043c\u044d\u0442 RDBMS-\u04af\u04af\u0434 ACID(Atomicity, Consistency, Isolation, and Durability) \u0433\u044d\u0441\u044d\u043d \u0437\u04af\u0439\u043b\u0438\u0439\u0433 \u0442\u0430\u043d\u0434 \u0430\u043c\u043b\u0430\u0436 \u0447\u0430\u0434\u0434\u0430\u0433. \u0425\u0430\u0440\u0438\u043d DynamDB-\u044b\u043d \u0445\u0443\u0432\u044c\u0434 \u0437\u04e9\u0432\u0445\u04e9\u043d CD(Consistency and Durability) \u0430\u043c\u043b\u0430\u0436 \u0447\u0430\u0434\u043d\u0430.<br \/>\n&#8211; DynamoDB-\u044b\u043d consistency \u043d\u044c \u0442\u044d\u0433\u044d\u0445\u0434\u044d\u044d eventually consistency \u044e\u043c. \u0422\u044d\u0440 \u043d\u044c \u044e\u0443 \u0433\u044d\u0441\u044d\u043d \u04af\u0433 \u0432\u044d \u0433\u044d\u0432\u044d\u043b, \u043d\u044d\u0433 \u04e9\u0433\u04e9\u0433\u0434\u043b\u0438\u0439\u0433 database-\u0440\u04af\u04af \u0431\u0438\u0447\u0438\u0445 \u04af\u0435\u0434, \u0442\u044d\u0440 \u04e9\u0433\u04e9\u0433\u0434\u04e9\u043b \u0447\u0438\u043d\u044c \u044f\u0433 \u0442\u044d\u0440 \u0434\u043e\u0440\u043e\u043e database-\u0434 \u0431\u0438\u0447\u0438\u0433\u0434\u0441\u044d\u043d \u0433\u044d\u0441\u044d\u043d \u0431\u0430\u0442\u0430\u043b\u0433\u0430\u0430 \u0431\u0430\u0439\u0445\u0433\u04af\u0439. \u0422\u044d\u0433\u044d\u0445\u0434\u044d\u044d \u0445\u044d\u0437\u044d\u044d \u043d\u044d\u0433\u044d\u043d \u0446\u0430\u0433\u0442 \u0431\u0438\u0447\u0438\u0433\u0434\u044d\u043d\u044d \u0433\u044d\u0441\u044d\u043d \u04af\u0433. \u0422\u044d\u0440 \u043d\u044c \u0442\u044d\u0433\u044d\u0445\u0434\u044d\u044d \u0441\u0430\u0439\u043d\u0434\u0430\u0430 \u043b \u0445\u044d\u0434\u044d\u043d ms \u0431\u043e\u043b\u043e\u0445\u043e\u043e\u0440, \u0441\u0430\u043d\u0430\u0430 \u0437\u043e\u0432\u043e\u0445 \u0437\u04af\u0439\u043b\u0433\u04af\u0439 \u0447, \u0442\u044d\u0440\u0438\u0439\u0433 \u0431\u043e\u0434\u043e\u043b\u0446\u043e\u0436 \u0441\u0438\u0441\u0442\u0435\u043c\u044d\u044d \u0445\u04e9\u0433\u0436\u04af\u04af\u043b\u044d\u0445 \u0445\u044d\u0440\u044d\u0433\u0442\u044d\u0439. \u0411\u0430\u0441 eventually consistency \u0447 \u0433\u044d\u0441\u044d\u043d, \u04e9\u0433\u04e9\u0433\u0434\u04e9\u043b \u0443\u043d\u0448\u0438\u0445 \u04af\u0435\u0434, consistent \u0443\u043d\u0448\u0438\u0445 \u0431\u043e\u043b\u043e\u043c\u0436\u0442\u043e\u0439, \u0442\u044d\u0440 \u043d\u044c inconsistent \u0443\u043d\u0448\u0441\u0430\u043d\u0430\u0430\u0441 2 \u0434\u0430\u0445\u0438\u043d \u04af\u043d\u044d\u0442\u044d\u0439 \u0442\u0443\u043b, \u0430\u043b\u044c \u0431\u043e\u043b\u043e\u0445 \u0448\u0430\u0430\u0440\u0434\u043b\u0430\u0433\u0430\u0442\u0430\u0439 \u04af\u0435\u0434 \u043b consistent read-\u044b\u0433 \u0430\u0448\u0438\u0433\u043b\u0430\u0432\u0430\u043b \u0437\u04af\u0433\u044d\u044d\u0440 \u044e\u043c.<br \/>\n&#8211; Atomicity \u0431\u043e\u043b\u043e\u043d isolation \u0431\u0430\u0439\u0445\u0433\u04af\u0439 \u0442\u0443\u043b, transaction \u0431\u0438\u0447\u0438\u0445 \u0431\u043e\u043b\u043e\u043c\u0436\u0433\u04af\u0439. \u0421\u0438\u0441\u0442\u0435\u043c\u044d\u044d, transaction \u0431\u0430\u0439\u0445\u0433\u04af\u0439\u0433\u044d\u044d\u0440 \u0437\u043e\u0445\u0438\u043e\u043d \u0431\u0430\u0439\u0433\u0443\u0443\u043b\u0430\u0445, \u044d\u0441\u0432\u044d\u043b \u0442\u044d\u0440\u0438\u0439\u0433 \u043e\u0440\u043b\u043e\u0445 \u0437\u04af\u0439\u043b \u0431\u043e\u0434\u043e\u0436 \u043e\u043b\u043e\u0445 \u0445\u044d\u0440\u044d\u0433\u0442\u044d\u0439.<\/p>\n<p><strong>DynamoDB-\u0440\u04af\u04af \u0445\u04e9\u0440\u0432\u04af\u04af\u043b\u044d\u0445 \u0433\u044d\u0436 \u0431\u0430\u0439\u0433\u0430\u0430 \u0442\u043e\u0433\u043b\u043e\u043e\u043c<\/strong><br \/>\n\u0422\u043e\u0433\u043b\u043e\u043e\u043c\u044b\u043d \u0445\u0443\u0432\u044c\u0434 \u0433\u0430\u0440 \u0443\u0442\u0430\u0441\u043d\u044b \u0442\u043e\u0433\u043b\u043e\u043e\u043c \u0431\u04e9\u0433\u04e9\u04e9\u0434, \u0442\u043e\u0433\u043b\u043e\u0433\u0447 \u0438\u0445\u0441\u044d\u0445 \u0442\u0443\u0441\u0430\u043c, \u0448\u0438\u043d\u044d\u044d\u0440 \u043d\u044d\u0433 \u0435\u0440\u0442\u04e9\u043d\u0446(world) \u04af\u04af\u0441\u0433\u044d\u043d, \u0442\u044d\u0440\u044d\u043d \u0434\u044d\u044d\u0440\u044d\u044d \u0448\u0438\u043d\u044d \u0442\u043e\u0433\u043b\u043e\u0433\u0447\u0438\u0434\u043e\u043e \u0445\u04af\u043b\u044d\u044d\u0436 \u0430\u0432\u0434\u0430\u0433 \u044e\u043c. \u04e8\u04e9\u0440\u04e9\u04e9\u0440 \u0445\u044d\u043b\u0431\u044d\u043b horizontal scaling.<br \/>\n\u0415\u0440\u0442\u04e9\u043d\u0446 \u0431\u04af\u0440 \u04e9\u04e9\u0440\u0438\u0439\u043d world server(GoLang \u0434\u044d\u044d\u0440 \u0431\u0438\u0447\u0438\u0433\u0434\u0441\u044d\u043d), \u0442\u044d\u0440\u043d\u0438\u0439 failover, \u043c\u04e9\u043d \u0445\u044d\u0434 \u0445\u044d\u0434\u044d\u043d \u0435\u0440\u0442\u04e9\u043d\u0446\u04af\u04af\u0434 \u0434\u0443\u043d\u0434\u0430\u0430 2-3 MySQL server-\u0442\u044d\u0439.<br \/>\n\u0422\u044d\u0433\u044d\u0445\u044d\u044d\u0440 50 \u0435\u0440\u0442\u04e9\u043d\u0446 \u0431\u0430\u0439\u043b\u0430\u0430 \u0433\u044d\u0445\u044d\u0434 50(master world server) + 50(standby world server) + 10(master MySQL server) + 10(standby MySQL server) = 120 \u043e\u0440\u0447\u0438\u043c server \u044e\u043c\u0443\u0443\u0434\u0430\u0430. \u042d\u0434\u0433\u044d\u044d\u0440\u0438\u0439\u0433 \u0446\u04e9\u04e9\u0445\u04e9\u043d \u0445\u04af\u043d\u0442\u044d\u0439 \u0431\u0430\u0433 \u04e9\u04e9\u0440\u0441\u0434\u04e9\u04e9 \u0430\u0440\u0447\u043b\u0430\u043d\u0430 \u0433\u044d\u0434\u044d\u0433 \u0436\u0430\u0430\u0445\u0430\u043d \u044f\u0434\u0430\u0440\u0433\u0430\u0430\u0442\u0430\u0439 \u044e\u043c. \u042d\u043d\u044d \u0442\u043e\u043e \u043d\u044c \u0437\u04e9\u0432\u0445\u04e9\u043d \u043d\u044d\u0433 \u0442\u043e\u0433\u043b\u043e\u043e\u043c\u043d\u044b server-\u044b\u043d \u0442\u043e\u043e \u0431\u04e9\u0433\u04e9\u04e9\u0434, \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u0445\u044d\u043c\u0436\u044d\u044d\u043d\u0434 \u044f\u0440\u0438\u0432\u0430\u043b 10,000-\u0430\u0430\u0434 server \u044e\u043c. \u04e8\u0434\u04e9\u0440 \u0431\u043e\u043b\u0433\u043e\u043d \u0430\u043b\u044c \u043d\u044d\u0433 \u0441\u0435\u0440\u0432\u0435\u0440\u0438\u0439\u043d hard disk \u0448\u0430\u0442\u043d\u0430, \u044f\u043c\u0430\u0440 \u043d\u044d\u0433\u044d\u043d \u044e\u043c \u0431\u043e\u043b\u043e\u0445\u043e\u043e \u0431\u043e\u043b\u0438\u043d\u043e. \u0422\u044d\u0433\u044d\u0445\u044d\u044d\u0440 \u043c\u0438\u043d\u0438\u0439 \u0445\u0443\u0432\u044c\u0434, \u04af\u043d\u044d\u0445\u044d\u044d\u0440 \u043b \u0442\u043e\u043c \u043a\u043e\u043c\u043f\u0430\u043d\u0438 \u0431\u0438\u0448 \u0431\u043e\u043b, \u04e9\u04e9\u0440\u0441\u0434\u04e9\u04e9 \u0430\u0440\u0447\u043b\u0430\u0445 \u0433\u044d\u0436 \u0431\u0430\u0439\u0445\u0430\u0430\u0440 AWS-\u044b\u0433 \u0430\u0448\u0438\u0433\u043b\u0430\u0432\u0430\u043b \u0438\u0445 \u0437\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u043d\u0430\u0433\u0434\u0441\u0430\u043d.<br \/>\n\u042d\u043d\u044d \u0442\u043e\u0433\u043b\u043e\u043e\u043c\u044b\u043d \u0445\u0443\u0432\u044c\u0434 \u0431\u043e\u043b\u043e\u0445\u043e\u043e\u0440, MySQL server-\u0442\u044d\u0439 \u0435\u0440\u04e9\u04e9\u0441\u04e9\u04e9 \u0445\u0430\u0440\u044c\u0446\u0434\u0430\u0433\u0433\u04af\u0439, \u0437\u04e9\u0432\u0445\u04e9\u043d world server-\u0442\u044d\u0439\u0433\u044d\u044d \u0445\u0430\u0440\u044c\u0446\u0434\u0430\u0433. World server \u043d\u044c in-memory \u0431\u043e\u043b\u043e\u0445\u043e\u043e\u0440, \u0430\u0441\u0430\u0440 \u0445\u0443\u0440\u0434\u0430\u043d \u0445\u0430\u0440\u0438\u0443 \u04e9\u0433\u0434\u04e9\u0433. \u0411\u0430\u0440\u0430\u0433 \u0445\u04af\u0441\u0441\u044d\u043d \u04e9\u0433\u04e9\u0433\u0434\u04e9\u043b \u0447\u0438\u043d\u044c 1ms-\u044d\u044d\u0441 \u0431\u0430\u0433\u0430 \u0445\u0443\u0433\u0430\u0446\u0430\u0430\u043d\u0434 \u0438\u0440\u043d\u044d. \u0425\u0430\u0440\u0438\u043d world server \u043d\u044c \u0442\u043e\u0433\u0442\u043c\u043e\u043b \u0434\u0430\u0432\u0442\u0430\u043b\u0442\u0442\u0430\u0439, \u04e9\u04e9\u0440 \u0434\u044d\u044d\u0440\u0445 \u04e9\u04e9\u0440\u0447\u043b\u04e9\u043b\u0442\u04e9\u04e9, MySQL \u0440\u04af\u04af \u0431\u0438\u0447\u043d\u044d. In-memory \u0442\u0443\u043b \u044f\u043c\u0430\u0440 \u043d\u044d\u0433\u044d\u043d \u0430\u0441\u0443\u0443\u0434\u0430\u043b \u0433\u0430\u0440\u0432\u0430\u043b, \u0431\u04af\u0445 \u04e9\u0433\u04e9\u0433\u0434\u043b\u04e9\u04e9 \u0430\u043b\u0434\u0430\u0445 \u0442\u0443\u043b, MySQL-\u0440\u0443\u0443 \u0431\u0438\u0447\u0438\u0436 \u0431\u0430\u0439\u0433\u0430\u0430 \u044e\u043c.<br \/>\n\u0410\u0437 \u0431\u043e\u043b\u0436, \u0442\u043e\u0433\u043b\u043e\u043e\u043c\u044b\u043d \u0431\u04af\u0445 \u043a\u043e\u0434, world server-\u0442\u044d\u0439\u0433\u044d\u044d \u0445\u0430\u0440\u044c\u0446\u0430\u0445\u0434\u0430\u0430, \u0437\u04e9\u0432\u0445\u04e9\u043d \u043d\u044d\u0433 \u0433\u0430\u0440\u0446\u0430\u0430\u0440 \u0434\u0430\u043c\u0436\u0434\u0430\u0433 \u0431\u0430\u0439\u0441\u0430\u043d \u044e\u043c.<br \/>\n\u0422\u044d\u0433\u044d\u0445\u044d\u044d\u0440 \u043c\u0438\u043d\u0438\u0439 \u0445\u0443\u0432\u044c\u0434, \u0442\u044d\u0440 \u0433\u0430\u0440\u0446\u0438\u0439\u0433 world server-\u0442\u044d\u0439 \u0431\u0438\u0448 DynamoDB-\u0442\u044d\u0439 \u0445\u0430\u0440\u044c\u0446\u0434\u0430\u0433 \u0431\u043e\u043b\u0433\u043e\u0436 \u04e9\u04e9\u0440\u0447\u043b\u04e9\u0445\u04e9\u0434 \u043b \u0445\u0430\u043d\u0433\u0430\u043b\u0442\u0442\u0430\u0439.<br \/>\n\u0413\u0430\u0440\u0441\u0430\u043d \u0430\u0441\u0443\u0443\u0434\u043b\u0443\u0443\u0434<br \/>\n&#8211; World server \u043d\u044c \u0437\u04e9\u0432\u0445\u04e9\u043d \u04e9\u0433\u04e9\u0433\u0434\u04e9\u043b \u0445\u0430\u0434\u0433\u0430\u043b\u0430\u0445\u0430\u0430\u0441 \u0433\u0430\u0434\u043d\u0430, \u04e9\u04e9\u0440 \u0434\u044d\u044d\u0440\u044d\u044d \u043b\u043e\u0433\u0438\u043a \u0430\u0433\u0443\u0443\u043b\u0434\u0430\u0433 \u0442\u0443\u043b \u0442\u044d\u0434\u0433\u044d\u044d\u0440 \u043b\u043e\u0433\u0438\u043a\u0443\u0443\u0434\u044b\u0433 application layer-\u0440\u04af\u04af \u0437\u04e9\u04e9\u0445<br \/>\n&#8211; DynamoDB-\u044b\u043d Query \u0431\u043e\u043b\u043e\u043d Scan \u043d\u044c 10ms-\u044d\u044d\u0441 \u0431\u0430\u0433\u0430 \u0445\u0443\u0433\u0430\u0446\u0443\u0443\u043d\u0434 \u0438\u0440\u043d\u044d \u0433\u044d\u0441\u044d\u043d \u0431\u0430\u0442\u0430\u043b\u0433\u0430\u0430 \u0431\u0430\u0439\u0445\u0433\u04af\u0439 \u0442\u0443\u043b \u0431\u04af\u0445 \u04e9\u0433\u04e9\u0433\u0434\u043b\u0438\u0439\u0433 GetItem, \u0431\u043e\u043b\u043e\u043d BatchGetItem-\u0430\u0430\u0440 \u0430\u0432\u0447 \u0431\u043e\u043b\u0434\u043e\u0433 \u0431\u0430\u0439\u0445\u0430\u0430\u0440 \u04e9\u0433\u04e9\u0433\u0434\u043b\u0438\u0439\u043d \u0431\u04af\u0442\u0446\u04af\u04af\u0434\u044d\u044d \u04e9\u04e9\u0440\u0447\u043b\u04e9\u0445<br \/>\n&#8211; Consistent read \u0433\u044d\u0436 \u0431\u0430\u0439\u0433\u0430\u0430 \u0447, \u0437\u0430\u0440\u0434\u0430\u043b \u0445\u044d\u043c\u043d\u044d\u0445 \u04af\u04af\u0434\u043d\u044d\u044d\u0441 \u044f\u043c\u0430\u0440 \u04af\u0435\u0434 consistent read, \u044f\u043c\u0430\u0440 \u04af\u0435\u0434 inconsistent read \u0430\u0448\u0438\u0433\u043b\u0430\u0445\u044b\u0433 \u0448\u0438\u0439\u0434\u044d\u0445<br \/>\n&#8211; \u041c\u0430\u043d\u0430\u0439\u0445 \u0437\u0430\u0440\u0438\u043c \u0445\u044d\u0441\u044d\u0433 \u0434\u044d\u044d\u0440\u044d\u044d, transaction(world server \u043d\u044c \u0431\u0430\u0441 transaction-\u0442\u0430\u0439) \u0430\u0448\u0438\u0433\u043b\u0430\u0434\u0430\u0433 \u0442\u0443\u043b \u0442\u044d\u0434\u0433\u044d\u044d\u0440 \u0445\u044d\u0441\u0433\u0438\u0439\u0433 DynamoDB \u0434\u044d\u044d\u0440 \u0430\u0441\u0443\u0443\u0434\u0430\u043b\u0433\u04af\u0439 \u0430\u0436\u0438\u043b\u043b\u0430\u0434\u0430\u0433 \u0431\u043e\u043b\u0433\u043e\u0445<br \/>\nTransaction-\u044b\u043d \u0445\u0443\u0432\u044c\u0434, \u044f\u0433 \u043e\u0434\u043e\u043e\u0433\u043e\u043e\u0440 \u0448\u0438\u0439\u0434\u044d\u044d\u0433\u04af\u0439 \u0431\u0430\u0439\u0433\u0430\u0430 \u0431\u04e9\u0433\u04e9\u04e9\u0434, application layer \u0434\u044d\u044d\u0440 \u043a\u043e\u0434\u044b\u043d \u043b\u043e\u0433\u0438\u043a\u0438\u0439\u0433 \u04e9\u04e9\u0440\u0447\u043b\u04e9\u0445, \u044d\u0441\u0432\u044d\u043b Redis \u0430\u0448\u0438\u0433\u043b\u0430\u043d \u04e9\u04e9\u0440\u0447\u043b\u04e9\u0445 \u0433\u044d\u0436 \u0431\u0430\u0439\u0433\u0430\u0430 \u04e9\u0433\u04e9\u0433\u0434\u043b\u04af\u04af\u0434\u044d\u044d lock \u0445\u0438\u0439\u0436 \u0431\u0430\u0439\u0433\u0430\u0430\u0434 \u0431\u0438\u0447\u0438\u0445 \u0433\u044d\u0441\u044d\u043d 2 \u0441\u0430\u043d\u0430\u043b \u0434\u044d\u044d\u0440 \u044f\u0440\u0438\u043b\u0446\u0430\u0436 \u0431\u0430\u0439\u0433\u0430\u0430.<br \/>\n\u0411\u0430\u0440\u0430\u0433 Redis \u043b \u0430\u0448\u0438\u0433\u043b\u0430\u0436 lock \u0431\u0438\u0447\u0438\u0445 \u0430\u0440\u0433\u0430\u0430\u0440 \u043b \u0445\u0438\u0439\u0445 \u0431\u0430\u0439\u0445.<\/p>\n<p>Have a nice weekend!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>AWS(Amazon Web Services) \u0433\u044d\u0436 \u043c\u044d\u0434\u044d\u044d\u0436 \u0441\u043e\u043d\u0441\u0441\u043e\u043d \u0431\u0430\u0439\u0445. \u0422\u044d\u0440\u043d\u0438\u0439 \u043d\u044d\u0433 \u04af\u0439\u043b\u0447\u0438\u043b\u0433\u044d\u044d \u043d\u044c DynamDB \u044e\u043c. NoSQL \u0442\u04e9\u0440\u043b\u0438\u0439\u043d database. \u042f\u0430\u0433\u0430\u0430\u0434 \u044d\u043d\u044d \u0442\u0430\u043b\u0430\u0430\u0440 \u044f\u0440\u0438\u0445 \u0431\u043e\u043b\u0441\u043e\u043d \u0431\u044d \u0433\u044d\u0445\u044d\u044d\u0440, \u043c\u0438\u043d\u0438\u0439 \u0430\u0436\u0438\u043b\u043b\u0430\u0436 \u0431\u0430\u0439\u0433\u0430\u0430&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.barbayar.net\/index.php?rest_route=\/wp\/v2\/posts\/190"}],"collection":[{"href":"https:\/\/blog.barbayar.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.barbayar.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.barbayar.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.barbayar.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=190"}],"version-history":[{"count":4,"href":"https:\/\/blog.barbayar.net\/index.php?rest_route=\/wp\/v2\/posts\/190\/revisions"}],"predecessor-version":[{"id":194,"href":"https:\/\/blog.barbayar.net\/index.php?rest_route=\/wp\/v2\/posts\/190\/revisions\/194"}],"wp:attachment":[{"href":"https:\/\/blog.barbayar.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=190"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.barbayar.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=190"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.barbayar.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=190"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}