Ответ: В зависимости от ваших нефункциональных требований. Ваши варианты использования будут иметь решающее значение для определения того, какую технологию использовать. Позвольте мне поделиться одним из моих впечатлений, чтобы уточнить, что я имею в виду:
В 2012 году мне нужно было заниматься ~ 2 миллионами неструктурированных записей в месяц и выполнять алгоритмы энтропии (теории информации) и подобия для ~ 600 запросов в минуту. Наш сценарий составлен:
- Записи неструктурированные, но уже в формате JSON.
- Алгоритмы для энтропии и подобия были основаны во всем содержимом БД и записываемых записей (см. [Формулу энтропии Шеннона] [1], и вы поймете сложность, о которой я говорю)
- более 100 различных веб-приложений в качестве клиентов этого решения.
С учетом этих требований (и многие другие), а после выполнения POCS с [Casandra] [2], [Hadoop] [3], [Voldmort] [4], [Neo4j] [5], а также испытания стресса, упругость, масштабируемость и надежность, мы прибыли в самом лучшем решении на тот момент (2012 год):
- Java EE 7 (с новым Garbage-First (G1) коллектором активированным)
- JBoss AS 7 ([wildfly] [6]) + [Infinispan] [7] для состояния гонки MapReduce, среди других задач управления кластерами и распределенного кеша.
- сервлетов 3.0 (потому что это Неблокирующая I/O)
- [Nginx] [8] (В то время была бета, но отличается от httpd2, было уже несколько соединений в неблокирующей моды)
- [MongoDB] [9] (из-за наши необработанные уже в стиле JSON документа)
- [Apache Mahout] [10] для всех реализации алгоритмов, включая стратегию MapReduce
- среди других материалов.
Итак, все зависит от ваших требований. Там нет серебряной пули. Каждая ситуация требует архитектурного анализа.
Я помню, что НАСА в это время обрабатывал ~ 1 ТБ в час в AWS с помощью Hadoop, из-за [проекта Марса с любопытством] [11].
В вашем случае я бы рекомендовал обратить внимание на ваши требования, возможно, рамки Java это не то, что вам нужно (или не только то, что вам нужно):
- Если вы собираетесь просто реализовать алгоритмы анализ данных, статистиков и шахтеров данных (например), возможно [язык программирования R] [12], будет лучшим выбором.
- Если вам нужен очень быстрый ввод-вывод (например, самолет): любой родной скомпилированный язык, например [Go Lang] [13], [C++] [14] и т. Д.
- Но если вы действительно собираюсь создавать веб-приложения, которые на самом деле будут просто клиентом или подавать большое решение для данных, я бы рекомендовал нечто более мягкое и масштабируемое, например [nodeJS] [15], или даже как раз в сжатые сроки технологии, подобные тем, которые основаны на JVM ([Scala] [16], [Jython] [17], Java) в [dockerized] [18] [микросервисы] [19] ...
Удачи! (Извините, переполнение стека не позволило мне добавить ссылку ссылки еще - Но все, о чем я говорил здесь, можно легко найти в googled).
Итак, вы в основном просите «Как делать большие данные» ?. Это целая область исследований и, на мой взгляд, слишком широка для SO. – marstran
все попытки еще ???? tip: поиск общих и обычных запросов, их оптимизация, подумайте, как сгруппировать эти данные для создания индексов (интеграция данных для быстрого чтения), сделайте свой анализ и покажите результаты ..... –
http://stackoverflow.com/questions/ 7984740/java-handling-billionions-bytes? Rq = 1 –