Поддерживает ли Кассандра условные запросы?

Я подумываю о переходе на cassandra из моего текущего решения в стиле SQL (simpledb) в основном из-за скорости, стоимости и встроенной функции кэширования cassandra. Однако я застрял на идее индексации. Я понял, что в cassandra вам нужно вручную создавать индексы для выполнения сложных запросов. Но что, если у вас есть следующие данные, строка с простым суперстолбцом:

row1 {value1 = "5", я видел обсуждение вставки нескольких строк в Oracle, но меня также интересует, как ...

У меня есть Java-приложение с серверной частью базы данных Oracle, в которое мне нужно вставить несколько строк. Я видел обсуждение вставки нескольких строк в Oracle , но меня также интересует, как на производительность влияет добавление JDBC в смесь.

Я вижу несколько возможностей:

]Опция 1: Используйте однострочную вставку PreparedStatement и выполните ее несколько раз:

String insert = "Insert into foo(bar, baz) values (?, ?)";
PreparedStatement stmt = conn.prepareStatement(insert);
for(MyObject obj : someList) {
    stmt.setString(1, obj.getBar());
    stmt.setString(2, obj.getBaz());
    stmt.execute();
}

Вариант 2: Создайте оператор Oracle INSERT ALL:

String insert = "INSERT ALL " +
    "INTO foo(bar, baz), (?, ?) " +
    "INTO foo(bar, baz), (?, ?) " +
    "SELECT * FROM DUAL";
PreparedStatement stmt = conn.prepareStatement(insert);
int i=1;
for(MyObject obj : someList) {
    stmt.setString(i++, obj.getBar());
    stmt.setString(i++, obj.getBaz());
}
stmt.execute();

Вариант 3: Используйте функцию addBatch PreparedStatement:

String insert = "Insert into foo(bar, baz) values (?, ?)";
PreparedStatement stmt = conn.prepareStatement(insert);
for(MyObject obj : someList) {
    stmt.setString(1, obj.getBar());
    stmt.setString(2, obj.getBaz());
    stmt.addBatch();
}
stmt.execute();

Я полагаю, другой возможностью было бы создать файл CSV и использовать загрузчик SQL, но я не уверен, что это действительно будет быстрее, если вы добавите накладные расходы на создание файла CSV. ..

Какой вариант будет работать быстрее всего?

13
задан Community 23 May 2017 в 12:04
поделиться