Почему является Java масштабируемый EE?

Используйте ваш подход с OPENJSON(), AS JSON и CROSS APPLY, просто не создавайте временные таблицы:

DECLARE @json nvarchar(max)
SET @json = N'{... your JSON here ...}'

SELECT
   DENSE_RANK() OVER (ORDER BY json.productId) Rn,
   json.productId Product,
   color.attrValue Color, 
   size.attrValue Size
FROM OPENJSON(@json)
WITH (
   productId nvarchar(max) '$.productId',
   itemInfo nvarchar(max) '$.itemInfo' AS JSON
) json
CROSS APPLY (
   SELECT *
   FROM OPENJSON(json.itemInfo)
   WITH (
      attributes nvarchar(max) '$.attributes' AS JSON
   )
) item
CROSS APPLY (
   SELECT *
   FROM OPENJSON(item.attributes)
   WITH (
      attrName nvarchar(max) '$.attrName',
      attrValue nvarchar(max) '$.attrValue'
   )
   WHERE attrName = 'Color'
) color
CROSS APPLY (
   SELECT *
   FROM OPENJSON(item.attributes)
   WITH (
      attrName nvarchar(max) '$.attrName',
      attrValue nvarchar(max) '$.attrValue'
   )
   WHERE attrName = 'Size'
) size
17
задан Arjan Tijms 28 April 2012 в 10:13
поделиться

4 ответа

EE Java считают масштабируемым, потому что, если Вы рассматриваете архитектуру EJB и работаете на соответствующем сервере приложений, она включает средства, чтобы прозрачно кластеризировать и позволить использованию нескольких экземпляров EJB обслуживать запросы.

при управлении вещами вручную в простом Java необходимо было бы выяснить все это сами, например, вводными портами, синхронизируя состояния, и т.д.

я не уверен, что Вы могли определить Google как "большой веб-сайт". Это было бы похоже на уподобление Интернета в Ваш офис LAN. EE Java не был предназначен для масштабирования к глобальному уровню, который является, почему сайты как Amazon и Google используют свои собственные технологии (например, с использованием MapReduce).

существуют многие бумаги, обсуждая эффективность Java масштабируемость EE. Например это

24
ответ дан 30 November 2019 в 12:01
поделиться

Можно было посмотреть на масштабируемую архитектуру с точки зрения того, что обеспечивает основная платформа (как Java EE). Но это - только начало.

Разработка для масштабируемой инфраструктуры является архитектурным искусством. Это похоже на искусство проекции..., как это будет вести себя, когда это будет аварийно завершено реальное большой. Основные вопросы:

  • , Где я сохраняю материал, к которому обычно получают доступ так, чтобы, когда столько людей просит его, я не шел для него столько времени (кэш)?
  • , Где я сохраняю материал каждого человека так, чтобы, когда существует столько людей, нуждающихся в сохраненном материале, я не испытывал затруднения при управлении ими всеми.
  • , Как, я помню то, что человек сделал здесь в прошлый раз, когда они прибыли сюда, так как они не могут возвращаться к тому же конкретному узлу, который они посетили в прошлый раз.
  • , Сколько времени я должен буду ожидать (блок на) продолжительная процедура раз так, многие люди запрашивают это?

... такая вещь вне того, что может перенести платформа. Другими словами, платформа могла быть масштабируемой, но продукт соединен проводом слишком трудный для масштабирования.

Java EE, поскольку платформа довольно масштабируема, как большинство современных предназначающихся для микропроцессора платформ предприятия. Но я видел удивительный (не хорошим способом) сборка материала из даже лучшего из них.

Для множества ссылок, ищите Google "Разработку для Масштабируемости"

4
ответ дан 30 November 2019 в 12:01
поделиться

Вещь "масштабируемости" говорит о, "что Вы сделаете, когда Ваше приложение не будет больше помещаться в одиночный компьютер?".

Масштабируемые приложения могут вырасти по большему количеству компьютеров, чем один.

Примечание, что большие серверы могут иметь ОЧЕНЬ крупные приложения с большой памятью и большим количеством CPU - видит http://www.sun.com/servers/highend/m9000/ или http://www-03.ibm.com/systems/i/hardware/595/index.html - но это обычно более дорого, чем наличие большого количества маленьких серверов с приложением, распространяющимся по ним.

1
ответ дан 30 November 2019 в 12:01
поделиться

Что делает Java EE масштабируемой, так это то, что делает все масштабируемым: разделение задач. По мере роста потребностей в обработке или вводе-выводе вы можете добавлять новое оборудование и перераспределять нагрузку полупрозрачно (в основном прозрачно для приложения, очевидно, менее прозрачно для конфигурационных обезьян), потому что разделенные, изолированные задачи не знают и не заботятся о том, находятся ли они на одном физическом оборудовании или на разных процессорах в кластере.

Вы можете создавать масштабируемые приложения на любом языке или платформе исполнения. (Да, даже COBOL на древних мэйнфреймах System 370.) Что дают вам такие прикладные платформы, как Java EE (и другие, естественно - Java EE вряд ли уникальна в этом отношении!), так это возможность легко (относительно говоря) делать это, выполняя большую часть тяжелой работы за вас.

Когда мое веб-приложение использует, скажем, EJB для выполнения бизнес-логики, этот EJB может находиться на одном ядре процессора, на другом ядре того же процессора, на совершенно другом процессоре или, в крайнем случае, даже на другой планете. Я не знаю и, по большей части, если производительность есть, мне все равно. Точно так же, когда я посылаю сообщение по шине сообщений для обработки, я не знаю, и меня не волнует, куда это сообщение попадает, какой компонент выполняет обработку и где эта обработка происходит, опять же до тех пор, пока производительность соответствует моим потребностям. Все это должны решить обезьяны-конфигураторы. Технология позволяет это сделать, и есть инструменты для оценки того, какие части должны идти куда, чтобы получить приемлемую производительность при увеличении размера системы.

Теперь, когда я пытаюсь вручную развернуть все это, я сразу же начинаю с проблем. Если я не продумаю все проксирование, планирование, распределение и т.д. заранее, то когда мое приложение выйдет за пределы возможностей одной машины, мне придется переписывать все заново, перенося часть приложения на другую машину. И затем каждый раз, когда мои возможности растут, мне приходится делать это снова и снова.

Если я действительно думаю обо всем этом заранее, я пишу целую кучу шаблонного кода для каждого приложения, который делает незначительные вариации одних и тех же вещей. Я могу кодировать вещи масштабируемым способом, но хочу ли я делать это каждый раз. я пишу приложение?

Так что то, что Java EE (и другие фреймворки) приносят на стол, это заранее написанные шаблоны для общих требований создания масштабируемых приложений. Конечно, написание моих приложений в соответствии с ними не гарантирует, что они будут масштабируемыми, но фреймворки делают написание таких масштабируемых приложений намного проще.

6
ответ дан 30 November 2019 в 12:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: