Phục vụ cơ sở người dùng lớn với dữ liệu đáng tin cậy, nhất quán và độ trễ thấp là một thách thức rất khó đối với bất kỳ nhóm phụ trợ nào. Tại Ledger, chúng tôi đã đưa ra lựa chọn chiến lược để lưu trữ các dịch vụ dữ liệu lõi chuỗi khối của riêng mình. Bằng cách không phụ thuộc vào bên thứ ba, chúng tôi có thể tự quản lý dữ liệu của khách hàng, đảm bảo rằng các quy trình cơ bản tuân thủ các nguyên tắc bảo mật và Mục tiêu cấp độ dịch vụ (SLO) định hướng hiệu suất của chúng tôi.
Nhưng chiến lược này cũng mang đến những thách thức riêng.
Thách thức đầu tiên của chúng tôi là di chuyển các dịch vụ cung cấp dữ liệu cốt lõi này ra khỏi các công cụ noSQL thú vị và hấp dẫn. Trong bài viết này, tôi sẽ đi sâu vào tìm hiểu lý do tại sao chúng tôi đưa ra quyết định khó khăn này, những vấn đề phức tạp mà chúng tôi gặp phải và những lợi ích mà chúng tôi thu được.
Mục tiêu của bài viết này là chỉ ra các khía cạnh kỹ thuật đã khiến chúng tôi chọn PostgreSQL làm lớp lưu trữ cơ sở mới cho dữ liệu chuỗi khối.
Đi sâu vào dữ liệu chuỗi khối
Dữ liệu chuỗi khối có một số tính năng chính.
Đầu tiên, nó không ngừng phát triển và không có gì bị xóa khỏi nó. Tuy nhiên trên thực tế, mặc dù phần lớn blockchain là bất biến nhưng phần trẻ nhất của blockchain có thể thay đổi do các xung đột cần được giải quyết. Thật vậy, vì chuỗi là một mạng ngang hàng, một số khối hợp pháp có thể cùng tồn tại tạm thời. Thông thường, cái cũ hơn sẽ bị xóa, dẫn đến cái mà chúng tôi gọi là sắp xếp lại. Tóm lại, dữ liệu được phân chia giữa một cái đuôi lạnh lùng bất biến và một trạng thái đầu hiếm khi thay đổi.
Vấn đề mà chúng tôi đang cố gắng giải quyết là trong khi các chuỗi khối rất tuyệt vời khi có dữ liệu chịu lỗi lâu đời, thì chúng lại kém hiệu quả hơn trong việc cắt và chia nhỏ dữ liệu đó qua nhiều trục. Cụ thể, rất khó để có được danh sách các hoạt động ảnh hưởng đến một tài khoản. Ngay cả việc lấy số dư tài khoản trên một chuỗi khối như bitcoin cũng là một thách thức khi bạn chưa có danh sách giao dịch.
Để vượt qua những thách thức này, Dịch vụ Ledger Explorer lập chỉ mục toàn bộ chuỗi khối. Đây là một dịch vụ lớn, quan trọng và nhạy cảm với hiệu suất được viết hoàn toàn bằng Scala, sử dụng hiệu ứng mèo thời gian chạy hiệu suất cao. Chúng tôi có hơn 10 nghìn vòng / giây trên bitcoin, trong khi vẫn duy trì độ trễ đuôi p95 dưới 100 mili giây. Chúng tôi cũng đang tuyển dụng 😊.
Một chút lịch sử
Khi bắt đầu câu chuyện của chúng tôi, trước khi tôi gia nhập công ty, lớp dịch vụ dữ liệu Ledger được xử lý bởi cơ sở dữ liệu Neo4j nhúng. Mỗi hộp phục vụ đang lập chỉ mục dữ liệu của chính nó và phục vụ cục bộ, điều này gây ra rất nhiều vấn đề.
Tính nhất quán của dữ liệu giữa các phiên bản không được đảm bảo và kích thước tuyệt đối của trạng thái cần được lập chỉ mục, được kết hợp bởi mức sử dụng ram và đĩa neo4j, không thể mở rộng. Vấn đề này chỉ trở nên tồi tệ hơn khi công ty phát triển, khiến việc tạo ra các phiên bản mới ngày càng khó khăn.
Cassandra sau đó đã được chọn làm trình điều khiển chính của thiết lập mới này: nó là một cơ sở dữ liệu có thể mở rộng theo chiều ngang, được nhóm lại ở phía AP của định lý CAP. Nó giải quyết các vấn đề liên quan đến chia sẻ dữ liệu và cho phép tách biệt rõ ràng giữa việc lập chỉ mục, thành phần nhận biết chuỗi khối và các máy chủ API không đầu.
Nhưng mục đích của việc có sẵn toàn bộ trạng thái lịch sử là gì nếu chúng ta sẽ không bao giờ thực sự đọc nó?
Đối với trường hợp sử dụng của chúng tôi, dữ liệu lịch sử thô hiếm khi cần thiết vì trạng thái tài khoản của người dùng của chúng tôi có thể được tổng hợp từ đó. Điều này khiến chúng tôi thách thức giải pháp lưu trữ dữ liệu hiện có dựa trên cơ sở dữ liệu phân tán Cassandra.
Khối lượng dữ liệu chúng ta cần lưu trữ trên mỗi blockchain, mặc dù trong phạm vi hàng terabyte, không phải là thứ mà người ta có thể gọi là “dữ liệu lớn”. Hơn nữa, phần nếu điều đó sẽ được sử dụng để trả lời hầu hết các truy vấn (còn gọi là Đường dẫn nóng) thậm chí còn nhỏ hơn. Ngày nay, người ta có thể dễ dàng tìm thấy các máy chủ phần cứng hàng hóa có dung lượng lưu trữ SSD NVMe hơn 16TB. Chia tỷ lệ theo chiều dọc là một công cụ rất mạnh và cơ sở dữ liệu quan hệ cũng vậy.
Cuối cùng, vấn đề chính mà chúng tôi gặp phải với thiết lập cassandra hiện tại không phải là mô hình lưu trữ lãng phí cũng như trường hợp sử dụng dữ liệu được trang bị kém, mà là sự thiếu thân thiện với nhà phát triển. Việc phát triển một tính năng dựa trên dữ liệu mới trên cassandra đã được chứng minh là tốn thời gian không cần thiết. Chúng tôi đã cố gắng triển khai từng trục mới mà chúng tôi cần cung cấp dữ liệu.
Với chuyên môn của nhóm chúng tôi về kỹ năng lập mô hình dữ liệu và trình độ SQL, PostgreSQL là ứng cử viên hoàn hảo. Giải pháp này đã được Battle-tested, mạnh mẽ, dễ dàng mở rộng, khiến nó trở thành một lựa chọn lý tưởng.
Tại sao chúng tôi chọn SQL thay vì NoSQL:
- Đọc/Ghi số dư: trường hợp sử dụng dữ liệu chuỗi khối đã bị sai lệch nhiều về số lần đọc thay vì ghi (blockchain ghi rất ít dữ liệu với tốc độ rất hợp lý, ngay cả đối với một chuỗi khối như Polygon). Cassandra có khả năng hấp thụ một lượng ghi rất cao – đường dẫn đọc thực sự là còn hơn đường ghi.
- hỗ trợ lập chỉ mục: Các chỉ số là một thành phần chính của DBMS để trả lời các truy vấn và các trường hợp hoặc cơ hội kinh doanh mới. Cassandra có hỗ trợ hạn chế cho việc lập chỉ mục. Các chỉ mục chỉ có hiệu lực nếu truy vấn đã chỉ định một cách hạn chế phân vùng mà truy vấn sẽ chạy trên đó. Chúng tôi trả ở đây chi phí để có một tùy ý phân phối cơ sở dữ liệu. Hỗ trợ PostgreSQL cho các chỉ số hiệu quả, có thể mở rộng và vượt trội.
- hỗ trợ tổng hợp: Trường hợp tương tự cho tập hợp; vì Cassandra không cho phép tập hợp nhiều phân vùng và không chấp nhận mệnh đề GROUP BY trong ngôn ngữ truy vấn của nó, nên sự hỗ trợ của nó hơi thiếu. PostgreSQL đề xuất hỗ trợ tổng hợp rộng rãi, ngay cả trên các loại dữ liệu kỳ lạ như phạm vi và đốm màu jsonb.
- Mô hình dữ liệu: Cassandra rất, rất hạn chế trong cách có thể lập mô hình dữ liệu. Một bảng phải được tạo cho gần như mỗi yêu cầu bạn muốn trả lời và dữ liệu phải được chuẩn hóa thành các hàng lớn (sử dụng đầy đủ cửa hàng cột rộng khía cạnh của C* và thực tế là các nhà văn rất rẻ tiền). PostgreSQL cho phép chúng tôi tận dụng khía cạnh quan hệ của chuỗi khối (cuộc gọi, giao dịch, khối) và dung lượng ổ đĩa dự phòng, khuyến khích sử dụng lại dữ liệu.
- Truy vấn đặc biệt và kiểm toán: Có thể sử dụng tiêu chuẩn đầy đủ của SQL và thực hiện các truy vấn tùy ý có nghĩa là chúng tôi có thể khám phá và tìm kiếm nguyên nhân gốc rễ của lỗi tiềm ẩn hoặc có dữ liệu khám phá cho các trường hợp sử dụng trong tương lai. Chúng tôi thực sự có thể sử dụng cơ sở dữ liệu như một công cụ tương tác và thông minh hơn là một bộ lưu trữ ngu ngốc. Làm như vậy trên Cassandra mà không có cụm máy tính phân tích rộng rãi và tốn kém như Presto, Spark, v.v. (và vì chúng tôi đang chạy trên các máy chủ kim loại trần, nên chúng tôi không có quyền truy cập vào các công cụ phân tích dữ liệu phân tán dễ sinh ra như EMR).
- Sử dụng lưu trữ: Giả định của Cassandra là dung lượng lưu trữ rất rẻ và cụm có thể dễ dàng mở rộng bằng các máy mới. Đó có nghĩa là tất cả các giới hạn đối với cả chỉ số và tổng hợp phải được thanh toán bằng dung lượng lưu trữ. Không có hỗ trợ tham gia và chỉ số hiệu quả toàn cầu có nghĩa là chúng tôi phải không chuẩn hóa và lưu trữ một bản sao của toàn bộ bảng cho mỗi trục mà chúng tôi muốn truy vấn. PostgreSQL tiết kiệm cho chúng tôi hàng terabyte dung lượng lưu trữ.
- Tính nhất quán: Vì Cassandra là một cơ sở dữ liệu phân tán, hướng tới AP (giao tiếp được thực hiện bằng cách buôn chuyện giữa các nút), nên tính nhất quán cuối cùng chỉ là về mặt ghi. Bạn có thể điều chỉnh chính sách nhất quán của từng câu lệnh cho cả đọc và viết, nhưng mục tiêu của cơ sở dữ liệu này là không bao giờ có tính nhất quán cao. PostgreSQL có một câu chuyện mạnh mẽ về việc được sử dụng cho các nhiệm vụ quan trọng và có khả năng phục hồi cao. Được tập trung hóa cũng có nghĩa là không có mạng tham gia vào đường dẫn ghi.
- Giao dịch và MVCC:
- Giao dịch: Cassandra hỗ trợ chỉ giao dịch nhẹ trên các truy vấn DML. Một số đợt có thể được áp dụng (doc) nhưng có rất nhiều cảnh báo, cụ thể là các hàng phải nằm trong cùng một máy chủ (= phân vùng) để không có hiệu suất khủng khiếp.
- MVCC: Cassandra hỗ trợ đóng dấu thời gian hàng nhưng MVCC đầy đủ không được đảm bảo. Việc nén có thể xóa dữ liệu cũ và không có cách nào để nói với C* rằng nó không nên (ví dụ như với một giao dịch trong PG).
- PostgreSQL hỗ trợ mô hình MVCC mạnh để đảm bảo đường dẫn đọc nhất quán cho người dùng của chúng tôi.
- Dụng cụ: PostgreSQL có thêm nhiều công cụ được sử dụng rộng rãi để dễ dàng vận hành cơ sở dữ liệu. Hơn nữa, một công cụ như đường bay đảm bảo chúng tôi duy trì phiên bản mạnh mẽ của lược đồ cơ sở dữ liệu. Chúng tôi đã tích hợp thành công nó với cơ sở mã của chúng tôi. Không có gì tương đương với mức độ trưởng thành này trên Cassandra.
- Khả năng mở rộng theo chiều ngang: Đây là điểm bán hàng chính của Cassandra. Chỉ cần thêm nhiều máy hơn khi dữ liệu của bạn mở rộng. Không tương đương với PostgreSQL vì sharding và phân vùng phải được thực hiện thủ công.
Cách chúng tôi dự định mở rộng quy mô
Như chúng ta đã thấy, nhược điểm duy nhất của việc sử dụng thiết lập Postgres là mở rộng quy mô cả về số lần đọc và lưu trữ. Chúng ta có thể làm gì để khắc phục hạn chế này?
Công cụ hiệu quả đầu tiên mà chúng tôi có là tách biệt mọi giao thức hoặc chuỗi khối mà chúng tôi hỗ trợ vào cơ sở dữ liệu của riêng nó, do đó có thể được điều chỉnh quy mô phù hợp với khối lượng và lưu lượng truy cập. Phân khúc theo lĩnh vực kinh doanh đảm bảo lớp đầu tiên của quy mô.
Bằng cách đưa khái niệm này đi xa hơn, chúng ta cũng có thể phân đoạn dữ liệu lịch sử, lạnh lùng thành phân vùng thời gian. Các phiên bản mới nhất của Postgres đã cải thiện rất nhiều khả năng sử dụng của các bảng được phân vùng, có thể cho phép di chuyển dữ liệu liền mạch trên một cụm máy. Chẳng hạn, chúng tôi có thể sử dụng các máy rẻ hơn với ít sức mạnh tính toán hơn để lưu trữ phần lớn dữ liệu lịch sử, trong khi vẫn giữ các bộ nhớ khổng lồ được xếp chồng lên nhau bằng RAM phục vụ người dùng để lưu trữ các bảng tổng hợp và hoạt động mới nhất của người dùng.
Cách tiếp cận này hoạt động rất tốt trong trường hợp sử dụng của chúng tôi vì không có khóa ngoại phân vùng chéo trong bộ lưu trữ lịch sử (mọi thứ cuối cùng được gắn vào khối). Từ quan điểm của máy chủ chính, dữ liệu lịch sử thậm chí có thể được truy cập một cách rõ ràng bằng cách sử dụng phân vùng và tiện ích mở rộng postgres_fdw.
Để giúp thực hiện tất cả những điều này, chúng tôi cũng đã xem xét tiện ích mở rộng TimescaleDB. Tiện ích mở rộng này bổ sung rất nhiều chức năng cho các postgres cơ bản và hầu hết các chức năng này đều phù hợp hoàn hảo cho các trường hợp sử dụng của chúng tôi:
- Tự động phân vùng các bảng dựa trên thời gian như cột (trong trường hợp của chúng tôi, chúng tôi điều chỉnh nó bằng cách lấy chiều cao chuỗi khối làm tham chiếu của chúng tôi).
- Tự động, nhận biết kiểu dữ liệu và nén dựa trên cột của các khối cũ hơn. Điều này đảm bảo tỷ lệ nén gần như hoàn hảo bằng cách sử dụng thuật toán hiện đại nhất trên dữ liệu rất giống nhau.
- Tổng hợp dựa trên nhóm thời gian hiệu quả để dễ dàng tính toán số dư lịch sử và biểu đồ dữ liệu thị trường.
Chúng tôi mới chỉ bắt đầu thử nghiệm về dung lượng lưu trữ và điều này mở ra rất nhiều trường hợp sử dụng. Bằng chứng về các khái niệm sử dụng một lượng nhỏ dữ liệu (~10 nghìn khối trên mạng chính ethereum, do đó, khoảng 2 ngày dữ liệu) cho thấy giảm dung lượng ổ đĩa cao tới 40%.
Như chúng ta đã thấy, khối lượng dữ liệu, miễn là chúng ta sử dụng đúng chiến lược, không phải là vấn đề. Nhưng làm cách nào để mở rộng quy mô với quy mô cơ sở người dùng của chúng tôi?
Chúng tôi đã có một lợi thế tuyệt vời ở đây: chúng tôi lập chỉ mục toàn bộ dữ liệu chuỗi khối. Do đó, dung lượng lưu trữ cần thiết sẽ không tăng theo số lượng người dùng, mà giống như tổng kích thước chuỗi khối. Tối ưu hóa lưu trữ và đọc là hoàn toàn trực giao trong độ phân giải của chúng.
Thiết lập này, kết hợp với nhu cầu ghi rất thấp tương ứng với khối lượng đọc cần được phục vụ, là thiết lập mơ ước cho mẫu bản sao người dẫn đầu theo phân loại. Để nâng cao hiệu suất và thông lượng hơn nữa, chúng tôi cũng có thể đặt các bản sao đã đọc postgres trên cùng một máy với máy chủ API và tận dụng ổ cắm miền UNIX để bỏ qua các chuyến đi vòng quanh mạng.
Dưới đây là một ví dụ về chiến lược sao chép dữ liệu mà chúng tôi có thể sử dụng để mở rộng quy mô số lần đọc của mình. Hộp màu xám nhạt đại diện cho các máy chủ đơn lẻ. Chúng ta có thể thấy ở đây rằng các nhóm API được đặt cùng vị trí trực tiếp với các bản sao của dữ liệu nóng nhất để đảm bảo thời gian truyền tối thiểu giữa bộ lưu trữ và người dùng. Các phiên bản lưu trữ được mô tả trước đó không được trình bày để không làm phức tạp quá nhiều lược đồ.
Kết luận
Là một người dùng Cassandra lâu dài, tôi muốn nhấn mạnh rằng đây là một cơ sở dữ liệu tuyệt vời trong thiết kế của nó, phù hợp với nhiều ứng dụng khác nhau. Thật không may, lựa chọn được đưa ra tại Ledger để sử dụng nó được thực hiện trong trường hợp sử dụng dữ liệu không bao giờ thành hiện thực.
Năng suất nhóm của chúng tôi bị ảnh hưởng và mong chờ những thách thức mà chúng tôi phải giải quyết, chúng tôi đã chọn cắn viên đạn và không rơi vào ngụy biện chi phí chìm.
Trong nhiều trường hợp, dữ liệu của bạn không phải là dữ liệu lớn. Quản lý phân phối dữ liệu không phải là một nhiệm vụ khó khăn trong hầu hết các trường hợp và sự đánh đổi của cơ sở dữ liệu phân tán chính thức thực sự cần được xem xét cẩn thận. Yếu tố quan trọng cần cân nhắc là trải nghiệm của nhà phát triển vì nó giải phóng thời gian quý báu để xây dựng bất kỳ thứ gì khác. Đây là trường hợp sử dụng thực tế mà chúng tôi cần đầu tư nhiều vào.
- Phân phối nội dung và PR được hỗ trợ bởi SEO. Được khuếch đại ngay hôm nay.
- PlatoAiStream. Thông minh dữ liệu Web3. Kiến thức khuếch đại. Truy cập Tại đây.
- Đúc kết tương lai với Adryenn Ashley. Truy cập Tại đây.
- Mua và bán cổ phần trong các công ty PRE-IPO với PREIPO®. Truy cập Tại đây.
- nguồn: https://www.ledger.com/blog/serving-web3-at-web2-scale
- : có
- :là
- :không phải
- $ LÊN
- 10
- 10K
- 20
- a
- có khả năng
- Có khả năng
- truy cập
- truy cập
- Tài khoản
- ngang qua
- thực sự
- thích ứng
- thêm vào
- Thêm
- tham gia
- Lợi thế
- tập hợp
- thuật toán
- Tất cả
- cho phép
- cho phép
- Đã
- Ngoài ra
- Mặc dù
- số lượng
- an
- phân tích
- phân tích
- và
- trả lời
- bất kì
- bất cứ điều gì
- api
- các ứng dụng
- áp dụng
- phương pháp tiếp cận
- thích hợp
- lưu trữ
- LÀ
- xung quanh
- Nghệ thuật
- bài viết
- AS
- khía cạnh
- các khía cạnh
- giả định
- At
- có sẵn
- nhận thức
- xa
- VÒI
- Trục
- Backend
- Cân đối
- số dư
- cơ sở
- dựa
- Baseline
- BE
- bởi vì
- được
- trước
- Bắt đầu
- người khổng lồ
- được
- Lợi ích
- giữa
- lớn
- Dữ Liệu Lớn.
- Một chút
- Bitcoin
- Chặn
- blockchain
- dữ liệu blockchain
- blockchains
- Khối
- cả hai
- Hộp
- hộp
- Mang lại
- Bug
- xây dựng
- kinh doanh
- nhưng
- by
- cuộc gọi
- Cuộc gọi
- CAN
- ứng cử viên
- mũ lưỡi trai
- cẩn thận
- trường hợp
- trường hợp
- Nguyên nhân
- gây ra
- tập trung
- chuỗi
- thách thức
- thách thức
- thách thức
- thay đổi
- thay đổi
- giá rẻ
- rẻ hơn
- máy rẻ hơn
- sự lựa chọn
- Chọn
- chọn
- lựa chọn
- trong sáng
- cụm
- mã
- cơ sở mã
- lạnh
- Cột
- kết hợp
- hàng hóa
- Giao tiếp
- công ty
- phức tạp
- thành phần
- Tính
- khái niệm
- khái niệm
- xem xét
- xem xét
- thích hợp
- Mát mẻ
- Trung tâm
- Phí Tổn
- có thể
- tạo ra
- quan trọng
- Current
- dữ liệu
- phân tích dữ liệu
- chia sẻ dữ liệu
- lưu trữ dữ liệu
- Cơ sở dữ liệu
- Ngày
- quyết định
- mô tả
- Thiết kế
- Nhà phát triển
- phát triển
- khó khăn
- trực tiếp
- bụi bẩn
- phân phối
- phân phối
- Chia
- do
- làm
- làm
- miền
- dont
- nhược điểm
- giấc mơ
- trình điều khiển
- hai
- e
- mỗi
- dễ dàng
- dễ dàng
- Cạnh
- Hiệu quả
- hiệu quả
- khác
- nhúng
- nhấn mạnh
- cho phép
- khuyến khích
- nâng cao
- đảm bảo
- đảm bảo
- đảm bảo
- Tương đương
- vv
- ethereum
- MẠNG CHÍNH ETHEREUM
- Ngay cả
- cuối cùng
- BAO GIỜ
- Mỗi
- tất cả mọi thứ
- ví dụ
- hiện tại
- Exotic
- mở rộng
- kinh nghiệm
- chuyên môn
- khám phá
- người khám phá
- thêm
- mở rộng
- mở rộng
- thực tế
- Rơi
- Đặc tính
- Tính năng
- vài
- Tìm kiếm
- Tên
- phù hợp với
- Trong
- nước ngoài
- Forward
- thân thiện
- từ
- Full
- chính thức
- đầy đủ
- chức năng
- xa hơn
- tương lai
- nhận được
- được
- Toàn cầu
- mục tiêu
- đi
- đồ thị
- màu xám
- tuyệt vời
- Nhóm
- Phát triển
- Phát triển
- đảm bảo
- hướng dẫn
- có
- Cứng
- phần cứng
- Có
- có
- cái đầu
- nặng nề
- cao
- giúp đỡ
- tại đây
- Cao
- cao
- lịch sử
- chủ nhà
- NÓNG BỨC
- nóng nhất
- Độ đáng tin của
- Hướng dẫn
- Tuy nhiên
- HTML
- HTTPS
- i
- lý tưởng
- if
- bất biến
- tác động
- thực hiện
- cải thiện
- in
- lên
- chỉ số
- CHỈ SỐ
- ví dụ
- tích hợp
- tương tác
- trong
- Đầu tư
- tham gia
- vấn đề
- các vấn đề
- IT
- ITS
- tham gia
- gia nhập
- jpg
- chỉ
- giữ
- Key
- phím
- Loại
- Thiếu sót
- Ngôn ngữ
- lớn
- Độ trễ
- mới nhất
- lớp
- Led
- Ledger
- hợp pháp
- ít
- Cấp
- Tỉ lệ đòn bẩy
- ánh sáng
- trọng lượng nhẹ
- Lượt thích
- giới hạn
- hạn chế
- Hạn chế
- Danh sách
- ít
- tại địa phương
- dài
- nhìn
- tìm kiếm
- Rất nhiều
- Thấp
- Máy móc
- thực hiện
- Chủ yếu
- mạng chính
- duy trì
- Đa số
- Làm
- quản lý
- quản lý
- thủ công
- nhiều
- thị trường
- Dữ liệu thị trường
- trưởng thành
- max-width
- Có thể..
- có nghĩa
- kim loại
- di chuyển
- tối thiểu
- nhiệm vụ
- kiểu mẫu
- người mẫu
- chi tiết
- Hơn thế nữa
- hầu hết
- di chuyển
- nhiều
- phải
- cụ thể là
- gần
- Cần
- cần thiết
- nhu cầu
- Cũng không
- mạng
- không bao giờ
- Mới
- tốt đẹp
- Không
- các nút
- không
- con số
- nhiều
- mục tiêu
- of
- on
- ONE
- có thể
- hoạt động
- Hoạt động
- Cơ hội
- or
- gọi món
- vfoXNUMXfipXNUMXhfpiXNUMXufhpiXNUMXuf
- mình
- kết thúc
- Vượt qua
- riêng
- thanh toán
- một phần
- các bên tham gia
- con đường
- Họa tiết
- Trả
- lê
- ngang ngang nhau
- hoàn hảo
- hiệu suất
- quan điểm
- Nơi
- kế hoạch
- plato
- Thông tin dữ liệu Plato
- PlatoDữ liệu
- vỏ quả
- Điểm
- điều luật
- Polygon
- có thể
- postgresql
- tiềm năng
- quyền lực
- mạnh mẽ
- thực hành
- Vấn đề
- Quy trình
- năng suất
- bằng chứng
- tỷ lệ
- đề xuất
- giao thức
- đã được chứng minh
- cho
- cung cấp
- đặt
- truy vấn
- RAM
- phạm vi
- Tỷ lệ
- hơn
- tỉ lệ
- Nguyên
- Đọc
- thực
- có thật không
- hợp lý
- giảm
- về
- liên quan
- đáng tin cậy
- tổ chức lại
- trả lời
- nhân rộng
- đại diện
- đại diện
- yêu cầu
- đàn hồi
- Độ phân giải
- quyết định
- kết quả
- tái sử dụng
- ngay
- mạnh mẽ
- nguồn gốc
- tròn
- HÀNG
- chạy
- chạy
- tương tự
- Scala
- khả năng mở rộng
- Quy mô
- mở rộng quy mô
- liền mạch
- Tìm kiếm
- an ninh
- xem
- đã xem
- phân khúc
- phân khúc
- Bán
- điểm bán hàng
- dịch vụ
- DỊCH VỤ
- phục vụ
- định
- thiết lập
- một số
- sharding
- chia sẻ
- ngắn
- hiển thị
- bên
- tương tự
- kể từ khi
- duy nhất
- Kích thước máy
- kỹ năng
- nhỏ
- nhỏ hơn
- thông minh
- So
- giải pháp
- động SOLVE
- Giải quyết
- một số
- Không gian
- Spark
- Đẻ trứng
- SQL
- Tiêu chuẩn
- Tiểu bang
- Tuyên bố
- là gắn
- hàng
- Câu chuyện
- Chiến lược
- Chiến lược
- mạnh mẽ
- mạnh mẽ
- Thành công
- hỗ trợ
- Hỗ trợ
- bàn
- Hãy
- dùng
- Nhiệm vụ
- nhóm
- Kỹ thuật
- nói
- về
- hơn
- việc này
- Sản phẩm
- Khối
- Nhà nước
- cung cấp their dịch
- sau đó
- Đó
- Kia là
- họ
- Thứ ba
- các bên thứ ba
- điều này
- thông lượng
- thời gian
- đến
- quá
- công cụ
- công cụ
- Tổng số:
- TỔNG CỘNG
- giao thông
- giao dịch
- Giao dịch
- chuyển
- trong suốt
- kiểu
- loại
- Cuối cùng
- Dưới
- cơ bản
- không may
- unix
- mở khóa
- không cần thiết
- us
- khả năng sử dụng
- Sử dụng
- sử dụng
- ca sử dụng
- đã sử dụng
- người sử dang
- Người sử dụng
- sử dụng
- thường
- Quý báu
- nhiều
- thẳng đứng
- rất
- khối lượng
- muốn
- là
- Đường..
- we
- Web2
- Web3
- TỐT
- Điều gì
- Là gì
- khi nào
- cái nào
- trong khi
- Trong khi
- toàn bộ
- tại sao
- rộng
- rộng rãi
- sẽ
- với
- không có
- công trinh
- viết
- viết
- bạn
- Út
- trên màn hình
- zephyrnet