Уявіть, що ваша вимога полягає в тому, що у вас є 3 величезні таблиці (структуровані дані) з по 30 мільярдами рядків у кожній (загальний розмір 4 ТБ), і ваші багато одночасних користувачів (які є паралельними OS-потоками на віддалених комп'ютерах локальної мережі) повинні прочитати частину дані за допомогою SELELCT WHERE GROUPBY запитів і дуже одночасних, скажімо, 10 000 одночасно читає одночасно, а також користувачам потрібно вставляти (не оновлювати) дані в ці таблиці дуже одночасно, як 2000 одночасних письменників (у всій мережі локального центру даних) . Користувачі хотіли б прочитати та вставити якомога швидше з цього сховища, де буде відбуватися кожне читання та запис, що становить мс до 1 секунди.
Які технології ви рекомендуєте задовольнити такій вимозі? Чи є сховище даних або сховище ключових значень, яке могло б це зробити? Хмара НЕ є варіантом.
Деякі роз'яснення:
Користувачі НЕ повинні бачити дані відразу, і можлива узгодженість є прийнятною. Доступ до даних здійснюється через будь-який драйвер, який зберігання може надати, і користувачі знову просто потоки, що працюють на віддалених машинах центру обробки даних. Запити здебільшого схожі на ВИБІРИТЬ, де ГРУПИ.
Дані мають табличний формат, і кожен рядок - близько 60 байт.
Немає варіанту хмарності, де я не можу використовувати DynamoDB або подібні рішення. Я повинен мати можливість розмістити його всередині центру обробки даних.
Усі дані таблиць можна читати весь час, а схема використання непередбачувана. Немає запиту на приєднання чи наддовгий запит. Ніяких DR не потрібно, але розумний HA не потрібен, але він не повинен бути фантазійним. Кожен читач отримує партії рядків на основі того, де пункт та рядки насправді не пов'язані. Ми, мабуть, можемо мати фіксовану довжину для кожного ряду, але сподіваюся, що шар зберігання буде турбуватися про це.
Крім того, моє найбільше занепокоєння викликають всі ті паралельні записи, які відбуваються з одночасними читаннями.
Ваша думка про це високо цінується.
І ще більше: у мене є три з цих таблиць, кожні 30 мільярдів рядків містять різні типи об'єктів