- •Мукажанов нуржан какенұлы Əр түрлі құрылымды деректерді жедел аналитикалық өңдеу үдерістерінің ақпараттық-есептеуін қамтамасыз ету
- •6D070400 – Есептеу техникасы жəне бағдарламалық қамтамасыз ету Философия докторы (PhD)
- •Мазмұны
- •Деректерді аналитикалықөңдеудіңқазіргікездегіжай-күйі 14
- •Жедел аналитикалық өңдеулерүшінреляциялық жəне nosql деректерді бірыңғай құрылымға келтіру үлгілеріменəдістері 48
- •Бөлімбойыншатұжырым 80
- •Деректерді жедел аналитикалықөңдеугеарналған деректер қоймасына тиімді деректер құрылымынəзірлеу 81
- •Бөлімбойыншатұжырым 113
- •Əзірленген үлгілер,əдістержəнеалгоритмдердің ашық үкіметпорталыашықдеректерін аналитикалықөңдеудегіпрактикалықапробациясы 114
- •4 Бөлімбойыншатұжырым 131
- •Пайдаланылғанəдебиеттертізімі 133
- •Нормативтік сілтемелер
- •Анықтамалар
- •Белгілеулер мен қысқартулар
- •Диссертациялық жұмысты қорғауға келесі нəтижелер шығарылады
- •Деректерді аналитикалық өңдеудің қазіргі кездегі жай-күйі
- •Деректерді аналитикалық өңдеудің шешімдер қабылдауды қолдау жүйелеріндегі орыны менрөлі
- •Деректерді аналитикалық өңдеудің əдістері, технологиялары жəне платформалары
- •Деректерді көп өлшемді жедел аналитикалық өңдеудің мəселелері жəне зерттеу тапсырмаларыныңқойылымы
- •Бөлім бойыншатұжырым
- •Жедел аналитикалық өңдеулер үшін реляциялық жəне nosql деректерді бірыңғай құрылымға келтіру үлгілері менəдістері
- •Деректерді бірыңғай құрылымға келтіруəдістері
- •Деректер базалары моделдерініңерекшеліктері
- •Реляциялық жəне NoSql деректерді бірыңғай құрылымға келтіру əдісінəзірлеу
- •Бөлім бойыншатұжырым
- •Деректерді жедел аналитикалық өңдеуге арналған деректер қоймасына тиімді деректер құрылымын əзірлеу
- •Деректер қоймасы ішкі құрлымыныңұйымдастырылуы
- •Аналитикалық деректерді өңдеудің көп өлшемді индекстік деректер құрылымынұйымдастыру
- •Агрегациялық мəндерді есептеудің ағаш түріндегі құрылымын əзірлеу
- •Бөлім бойыншатұжырым
- •Əзірленген үлгілер, əдістер жəне алгоритмдердің ашық үкімет порталы ашық деректерін аналитикалық өңдеудегі практикалықапробациясы
- •Ақпараттық-аналитикалық жүйелердің мемлекеттік секторларда қолданылуы
- •Деректерді жедел аналитикалық өңдеудің мемлекеттік секторда қолданылуы
- •Ашық деректерді жедел аналитикалық өңдеудің ақпараттық- аналитикалық жүйесінəзірлеу
- •4 Бөлім бойынша тұжырым
- •Қорытынды
- •Пайдаланылған əдебиеттер тізімі
- •Қосымша а
- •Қосымша б
- •Қосымша в
- •Қосымша г
- •Қосымша д
Қосымша б
Бағдарлама листингінен үзінді
mport java.net.UnknownHostException; import com.mongodb.BasicDBObject; import com.mongodb.DB;
import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject;
import com.mongodb.MapReduceCommand; import com.mongodb.MapReduceOutput; import com.mongodb.MongoClient;
import com.mongodb.MongoException; import java.net.UnknownHostException; import java.util.Date;
import java.util.List;
//import java.util.StringJoiner;
//import java.util.function.Consumer; public class Mongo_open_data_agr
{
public static void main(String[] args)
{
/**** Connect to MongoDB ****/ MongoClient mongo = null;
try {
mongo = new MongoClient("localhost", 27017);
} catch (UnknownHostException | MongoException e) {
}
DB db = mongo.getDB("open_data_1"); DBCollection t_potrebnost_ped_kadrov =
db.getCollection("potrebnost_ped_kadrov");
//BasicDBObject searchQuery = new BasicDBObject();
//DBCursor cursor = t_potrebnost_ped_kadrov.find((DBObject) searchQuery.put("region","subject_name" ));
DBCursor cursor = t_potrebnost_ped_kadrov.find(); while (cursor.hasNext())
{
System.out.println(cursor.next());
}
String map_for_2_d = "function() {var key = {region: this.region, subject_name: this.subject_name};"+
"emit (key, {count: this.count});}";
String reduce_for_2_d = "function(key, values) "+ "{var sum = 0;"+
"values.forEach(function(value)"+ "{sum += value['count'];}); "+
"return {count: sum};};"; MapReduceCommand cmd_for_2_d = new
MapReduceCommand(t_potrebnost_ped_kadrov, map_for_2_d, reduce_for_2_d, null, MapReduceCommand.OutputType.INLINE, null);
MapReduceOutput out = t_potrebnost_ped_kadrov.mapReduce(cmd_for_2_d); for (DBObject out_for_2_d : out.results())
{
System.out.println(out_for_2_d.toString());
}
System.out.println("next dim \n ");
String map_for_1 = "function() {var key = {region: this.region};"+ "emit (key, {count:this.count});}";
String reduce_for_1 = "function(key, values) "+ "{var sum = 0;"+ "values.forEach(function(value)"+
"{sum += value['count'];}); "+
"return {count: sum};};"; MapReduceCommand cmd_for_1_d1 = new
MapReduceCommand(t_potrebnost_ped_kadrov, map_for_1, reduce_for_1, null, MapReduceCommand.OutputType.INLINE, null);
MapReduceOutput out_for_1_d = t_potrebnost_ped_kadrov.mapReduce(cmd_for_1_d1);
for (DBObject o_for_1_d : out_for_1_d.results())
{
System.out.println(o_for_1_d.toString());
}
System.out.println(" next dim \n ");
String map_for_1_d2 = "function() {var key = {subject_name: this.subject_name};"+
"emit (key, {count:this.count});}";
String reduce_for_1_d2 = "function(key, values) "+ "{var sum = 0;"+ "values.forEach(function(value)"+
"{sum += value['count'];}); "+
"return {count: sum};};"; MapReduceCommand cmd_for_1_d2 = new
MapReduceCommand(t_potrebnost_ped_kadrov, map_for_1_d2, reduce_for_1_d2, null, MapReduceCommand.OutputType.INLINE, null);
MapReduceOutput out_for_1_d2 = t_potrebnost_ped_kadrov.mapReduce(cmd_for_1_d2);
for (DBObject o_for_1_d2 : out_for_1_d2.results())
{
System.out.println(o_for_1_d2.toString());
}
}
}
Кілт-мəн түріндегі деректерді бірыңғай кестелік құрылымға келтіру класы
import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;
import java.util.Date;
import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class ExcelWrapper {
FileOutputStream fileOut; HSSFWorkbook workbook; HSSFSheet worksheet;
public ExcelWrapper() throws FileNotFoundException { fileOut = new FileOutputStream("result.xls"); workbook = new HSSFWorkbook();
worksheet = workbook.createSheet("Главная страница");
}
public void put(Object content, int rowNum, int colNum, Class cl) { HSSFRow row = null;
if (worksheet.getRow(rowNum) == null) { row = worksheet.createRow(rowNum);
} else {
row = worksheet.getRow(rowNum);
}
HSSFCell cell = row.createCell(colNum); if (cl.equals(Boolean.class)) {
cell.setCellValue(cast(Boolean.class, content).booleanValue());
} else if (cl.equals(Date.class)) { cell.setCellValue(cast(Date.class, content));
} else if (cl.equals(Double.class)) { cell.setCellValue(cast(Double.class, content).doubleValue());
} else {
cell.setCellValue(content + "");
}
}
<T> T cast(Class<T> cls, Object o) { return cls.cast(o);
}
public void close() throws IOException {
workbook.write(fileOut); fileOut.flush(); fileOut.close();
}
}
// Parser
public class Parser {
ExcelWrapper excelWrapper = new ExcelWrapper(); int currentRow = 0;
excelWrapper.put("Id", currentRow, 0, String.class); excelWrapper.put("school_name", currentRow, 1, String.class); excelWrapper.put("type", currentRow, 2, String.class); excelWrapper.put("address", currentRow, 3, String.class); Scanner in = new Scanner(new File("input"));
while (in.hasNextLine()) { currentRow++;
try {
String line = in.nextLine(); if (line.trim().length() > 0) {
JSONObject json = getJsonObjectElement(line); Object id = json.get("id");
Object school = json.get("school_name"); Object type = json.get("type");
HashMap map = (HashMap) json.get("address"); Object microdistrict = map.get("region_district"); Object city = map.get("city"); System.out.println(id + " " + school + " ");
excelWrapper.put(new Double(id + ""), currentRow, 0, Double.class); excelWrapper.put(school, currentRow, 1, String.class); excelWrapper.put(type, currentRow, 2, String.class); excelWrapper.put(city, currentRow, 3, String.class);
} else {
System.err.println("Didn't processed [" + line + "]");
}
} catch (Exception ex) { System.err.println("UPS ... "); ex.printStackTrace();
}
}
excelWrapper.close();
}
private static JSONObject getJsonObjectElement(String line) throws ParseException{
JSONParser jsonParser = new JSONParser();
JSONObject jsonObject = (JSONObject) jsonParser.parse(line); return jsonObject;
}
}
Нəтижелер:
{ "_id" : { "region" : "Алматы /Алматинская" , "subject_name" : "CWP"} , "value"
: { "count" : 3.0}}
{ "_id" : { "region" : "Алматы /Алматинская" , "subject_name" : "biology"} , "value" : { "count" : 7.0}}
{ "_id" : { "region" : "Алматы /Алматинская" , "subject_name" : "chemistry"} , "value" : { "count" : 9.0}}
{ "_id" : { "region" : "Алматы /Алматинская" , "subject_name" : "english"} , "value" : { "count" : 4.0}}
{ "_id" : { "region" : "Алматы /Алматинская" , "subject_name" : "geography"} , "value" : { "count" : 5.0}}
{ "_id" : { "region" : "Алматы /Алматинская" , "subject_name" : "history"} , "value" : { "count" : 2.0}}
{ "_id" : { "region" : "Алматы /Алматинская" , "subject_name" : "id"} , "value" : { "count" : 4.0}}
{ "_id" : { "region" : "Алматы /Алматинская" , "subject_name" : "informatics"} , "value" : { "count" : 2.0}}
{ "_id" : { "region" : "Алматы /Алматинская" , "subject_name" : "kazakh_language"} , "value" : { "count" :4.0}}
{ "_id" : { "region" : "Алматы /Алматинская" , "subject_name" : "labor"} , "value" :
{ "count" : 2.0}}
{ "_id" : { "region" : "Алматы /Алматинская" , "subject_name" : "mathematics"} , "value" : { "count" : 25.0}}
{ "_id" : { "region" : "Алматы /Алматинская" , "subject_name" : "physical_culture"} , "value" : { "count" :3.0}}
{ "_id" : { "region" : "Алматы /Алматинская" , "subject_name" : "physics"} , "value" : { "count" : 21.0}}
{ "_id" : { "region" : "Алматы /Алматинская" , "subject_name" : "russian_language"} , "value" : { "count" :15.0}}
{ "_id" : { "region" : "Алматы /Алматинская" , "subject_name" : "self-knowledge"}
, "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Алматы /Алматинская" , "subject_name" : "singing"} , "value" : { "count" :3.0}}
{ "_id" : { "region" : "Алматы қ /г.Алматы"} , "value" : { }}
{ "_id" : { "region" : "Алматы қ /г.Алматы" , "subject_name" : "CWP"} , "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Алматы қ /г.Алматы" , "subject_name" : "biology"} , "value"
: { "count" : 0.0}}
{ "_id" : { "region" : "Алматы қ /г.Алматы" , "subject_name" : "chemistry"} , "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Алматы қ /г.Алматы" , "subject_name" : "english"} , "value" :
{ "count" : 0.0}}
{ "_id" : { "region" : "Алматы қ /г.Алматы" , "subject_name" : "geography"} , "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Алматы қ /г.Алматы" , "subject_name" : "history"} , "value" :
{ "count" : 0.0}}
{ "_id" : { "region" : "Алматы қ /г.Алматы" , "subject_name" : "id"} , "value" : { "count" : 17.0}}
{ "_id" : { "region" : "Алматы қ /г.Алматы" , "subject_name" : "informatics"} , "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Алматы қ /г.Алматы" , "subject_name" : "kazakh_language"}
, "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Алматы қ /г.Алматы" , "subject_name" : "labor"} , "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Алматы қ /г.Алматы" , "subject_name" : "mathematics"} , "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Алматы қ /г.Алматы" , "subject_name" : "physical_culture"} , "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Алматы қ /г.Алматы" , "subject_name" : "physics"} , "value"
: { "count" : 0.0}}
{ "_id" : { "region" : "Алматы қ /г.Алматы" , "subject_name" : "russian_language"}
, "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Алматы қ /г.Алматы" , "subject_name" : "self-knowledge"} , "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Алматы қ /г.Алматы" , "subject_name" : "singing"} , "value" :
{ "count" : 0.0}}
{ "_id" : { "region" : "Астана қ /г.Астана"} , "value" : { }}
{ "_id" : { "region" : "Астана қ /г.Астана" , "subject_name" : "CWP"} , "value" : { "count" : 3.0}}
{ "_id" : { "region" : "Астана қ /г.Астана" , "subject_name" : "biology"} , "value" :
{ "count" : 0.0}}
{ "_id" : { "region" : "Астана қ /г.Астана" , "subject_name" : "chemistry"} ,"value"
: { "count" : 10.0}}
{ "_id" : { "region" : "Астана қ /г.Астана" , "subject_name" : "english"} , "value" : { "count" : 8.0}}
{ "_id" : { "region" : "Астана қ /г.Астана" , "subject_name" : "geography"} , "value"
: { "count" : 0.0}}
{ "_id" : { "region" : "Астана қ /г.Астана" , "subject_name" : "history"} , "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Астана қ /г.Астана" , "subject_name" : "id"} , "value" : { "count" : 16.0}}
{ "_id" : { "region" : "Астана қ /г.Астана" , "subject_name" : "informatics"} , "value" : { "count" :4.0}}
{ "_id" : { "region" : "Астана қ /г.Астана" , "subject_name" : "kazakh_language"} , "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Астана қ /г.Астана" , "subject_name" : "labor"} , "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Астана қ /г.Астана" , "subject_name" : "mathematics"} , "value" : { "count" : 45.0}}
{ "_id" : { "region" : "Астана қ /г.Астана" , "subject_name" : "physical_culture"} , "value" : { "count" : 10.0}}
{ "_id" : { "region" : "Астана қ /г.Астана" , "subject_name" : "physics"} , "value" : { "count" : 25.0}}
{ "_id" : { "region" : "Астана қ /г.Астана" , "subject_name" : "russian_language"} , "value" : { }}
{ "_id" : { "region" : "Астана қ /г.Астана" , "subject_name" : "self-knowledge"} , "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Астана қ /г.Астана" , "subject_name" : "singing"} , "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Атырау /Атырауская"} , "value" : { }}
{ "_id" : { "region" : "Атырау /Атырауская" , "subject_name" : "CWP"} , "value" :
{ "count" : 3.0}}
{ "_id" : { "region" : "Атырау /Атырауская" , "subject_name" : "biology"} , "value"
: { "count" : 4.0}}
{ "_id" : { "region" : "Атырау /Атырауская" , "subject_name" : "chemistry"} , "value" : { "count" : 16.0}}
{ "_id" : { "region" : "Атырау /Атырауская" , "subject_name" : "english"} , "value"
: { "count" : 2.0}}
{ "_id" : { "region" : "Атырау /Атырауская" , "subject_name" : "geography"} , "value" : { "count" : 5.0}}
{ "_id" : { "region" : "Атырау /Атырауская" , "subject_name" : "history"} , "value" :
{ "count" : 9.0}}
{ "_id" : { "region" : "Атырау /Атырауская" , "subject_name" : "id"} , "value" : { "count" : 5.0}}
{ "_id" : { "region" : "Атырау /Атырауская" , "subject_name" : "informatics"} , "value" : { "count" : 6.0}}
{ "_id" : { "region" : "Атырау /Атырауская" , "subject_name" : "kazakh_language"}
, "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Атырау /Атырауская" , "subject_name" : "labor"} , "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Атырау /Атырауская" , "subject_name" : "mathematics"} , "value" : { "count" : 32.0}}
{ "_id" : { "region" : "Атырау /Атырауская" , "subject_name" : "physical_culture"}
, "value" : { "count" : 7.0}}
{ "_id" : { "region" : "Атырау /Атырауская" , "subject_name" : "physics"} , "value"
: { "count" : 17.0}}
{ "_id" : { "region" : "Атырау /Атырауская" , "subject_name" : "russian_language"}
, "value" : { "count" : 31.0}}
{ "_id" : { "region" : "Атырау /Атырауская" , "subject_name" : "self-knowledge"} , "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Атырау /Атырауская" , "subject_name" : "singing"} ,"value"
: { "count" : 4.0}}
{ "_id" : { "region" : "Ақмола /Акмолинская"} , "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Ақмола /Акмолинская" , "subject_name" : "CWP"} , "value" :
{ "count" : 0.0}}
{ "_id" : { "region" : "Ақмола /Акмолинская" , "subject_name" : "biology"} , "value" : { "count" : 1.0}}
{ "_id" : { "region" : "Ақмола /Акмолинская" , "subject_name" : "chemistry"} , "value" : { "count" : 6.0}}
{ "_id" : { "region" : "Ақмола /Акмолинская" , "subject_name" : "english"} , "value" : { "count" : 41.0}}
{ "_id" : { "region" : "Ақмола /Акмолинская" , "subject_name" : "geography"} , "value" : { "count" : 2.0}}
{ "_id" : { "region" : "Ақмола /Акмолинская" , "subject_name" : "history"} , "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Ақмола /Акмолинская" , "subject_name" : "id"} , "value" : { "count" : 2.0}}
{ "_id" : { "region" : "Ақмола /Акмолинская" , "subject_name" : "informatics"} , "value" : { "count" : 1.0}}
{ "_id" : { "region" : "Ақмола /Акмолинская" , "subject_name" : "kazakh_language"} , "value" : { "count" :3.0}}
{ "_id" : { "region" : "Ақмола /Акмолинская" , "subject_name" : "labor"} , "value" :
{ "count" : 1.0}}
{ "_id" : { "region" : "Ақмола /Акмолинская" , "subject_name" : "mathematics"} , "value" : { "count" : 10.0}}
{ "_id" : { "region" : "Ақмола /Акмолинская" , "subject_name" : "physical_culture"} , "value" : { "count" :0.0}}
{ "_id" : { "region" : "Ақмола /Акмолинская" , "subject_name" : "physics"} , "value" : { "count" : 2.0}}
{ "_id" : { "region" : "Ақмола /Акмолинская" , "subject_name" : "russian_language"} , "value" : { "count" :3.0}}
{ "_id" : { "region" : "Ақмола /Акмолинская" , "subject_name" : "self-knowledge"}
, "value" : { "count" : 0.0}}
{ "_id" : { "region" : "Ақмола /Акмолинская" , "subject_name" : "singing"} , "value" : { "count" : 4.0}}
............................................
{ "_id" : { "subject_name" : "CWP"} , "value" : { "count" : 31.0}}
{ "_id" : { "subject_name" : "biology"} , "value" : { "count" : 60.0}}
{ "_id" : { "subject_name" : "chemistry"} , "value" : { "count" : 160.0}}
{ "_id" : { "subject_name" : "english"} , "value" : { "count" : 217.0}}
{ "_id" : { "subject_name" : "geography"} , "value" : { "count" : 60.0}}
{ "_id" : { "subject_name" : "history"} , "value" : { "count" : 92.0}}
{ "_id" : { "subject_name" : "id"} , "value" : { "count" : 152.0}}
{ "_id" : { "subject_name" : "informatics"} , "value" : { "count" : 58.0}}
{ "_id" : { "subject_name" : "kazakh_language"} , "value" : { "count" : 91.0}}
{ "_id" : { "subject_name" : "labor"} , "value" : { "count" : 53.0}}
{ "_id" : { "subject_name" : "mathematics"} , "value" : { "count" : 415.0}}
{ "_id" : { "subject_name" : "physical_culture"} , "value" : { "count" : 72.0}}
{ "_id" : { "subject_name" : "physics"} , "value" : { "count" : 204.0}}
{ "_id" : { "subject_name" : "russian_language"} , "value" : { "count" : 175.0}}
{ "_id" : { "subject_name" : "self-knowledge"} , "value" : { "count" : 16.0}}
{ "_id" : { "subject_name" : "singing"} , "value" : { "count" : 68.0}}
