Cloudant
¼ò½é
IBM Cloudant ÊÇÒ»ÖÖ»ùÓÚ json document ÀàÐ͵ķǹØÏµÐÍ£¨NoSQL£©Êý¾Ý¿â£¬Æä¾ßÓÐÔÚÔÆ¶Ë¸ßЧ´¦Àí¸ß¸ºÔØ¡¢¸ß²¢·¢¶ÁдµÄÇ¿´óÌØÐÔ¡£´ÓÁíÒ»¸ö½Ç¶ÈÀ´Ëµ£¬Cloudant
»¹ÊÇÒ»¸ö¿ªÔ´µÄ¡¢·Ö²¼Ê½µÄÊý¾Ý¿â£¬Ëü»ùÓÚ Apache µÄ Couch DB ÏîÄ¿ÒÔ¼°¿ªÔ´µÄ BigCouch
ÏîÄ¿¡£±ÈÈ罫ÆäÓ¦ÓÃÓÚÒ»¸ö´óÐ͵ÄÊý¾ÝÁ¿¿ìËÙÔö³¤µÄ web »ò mobile ÏîĿ֮ÖУ¬ÎÞÒɽ«ÊÇÒ»¸ö·Ç³£Ã÷ÖǵÄÑ¡Ôñ¡£
Òò´Ë£¬´ÓÒµÎñ³¡¾°µÄ½Ç¶ÈÀ´¿´£¬ÎÒÃDz»ÄÑ·¢ÏÖ£¬ÔÚ¾ßÓдó¹æÄ£Êý¾Ý´¦Àí¡¢´ó¹æÄ£ÊµÊ±¶¯Ì¬Êý¾Ý´¦Àí¡¢ÒÔ¼°¸ß²¢·¢ÐÔ·ÃÎʵÄÓ¦Óó¡¾°ÖУ¬Cloudant
Êý¾Ý¿â½«»áÊÇÕû¸öÏîÄ¿¼Ü¹¹µÄÇ¿´óºó¶Ü¡£±ÈÈçÎÒÃÇ¿ÉÒÔ½« Cloudant ÓÃÓÚ´ó¹æÄ£¶¯Ì¬ÊµÊ±Êý¾ÝµÄ³µÁªÍøÏîÄ¿£¬Ò²¿ÉÒÔ½«
Cloudant ÓÃÓÚ»ùÓÚ´ó¹æÄ£Êý¾ÝµÄÎı¾·ÖÎöÏîÄ¿ÖС£Cloudant ÒÔÆäÇ¿´óµÄÌØÐÔÔÚµ±½ñ·Ç³£Á÷ÐеĴóÊý¾ÝÔÆÆ½Ì¨ÏîÄ¿ÖÐÕ¼¾ÝמÙ×ãÇáÖØµÄλÖá£
Õë¶Ô»ùÓÚ Cloudant µÄ Java ¿ª·¢£¬Ä¿Ç°´æÔÚ×ŶàÌ× Java library
¹©Óû§Ê¹Ó㬱ÈÈç Java-Cloudant¡¢ektorp µÈµÈ¡£µ«¸ù¾Ý Cloudant µÄ¹Ù·½Îĵµ£¬Java-Cloudant
ÊÇ Cloudant ¹Ù·½ÍƼöµÄ Java library¡£Òò´Ë£¬ÎÒÃǺóÃæµÄËùÓÐÓÐ¹Ø Java ʾÀýÏê½âµÄ²¿·Ö£¬¶¼½«²ÉÓÃ
Java-Cloudant ×÷ΪÎÒÃÇµÄ Java library¡£µ±È»£¬³ýÁË Java-Cloudant
Ö®Í⣬ÎÒÃÇ»¹ÐèÒª¼ÓÈëÆäËü¼¸¸ö±ØÐëµÄÒÀÀµ°ü£¬²Å¿ÉÒÔ½øÐлùÓÚ Java µÄ Cloudant ¿ª·¢¡£ÏÖ½«ËùÓÐÒÀÀµÁбíÈçÏ£º
1) Java-Cloudant
2) Commons Codec 1.6
3) Commons IO 2.4
4) Gson 2.2.4
5) OkHttp 2.5.0 (OPTIONAL)
³ý´ËÖ®Í⣬Cloudant ¹Ù·½»¹¶ÔÍâÌṩÆä RESTful API£¬¶øÇÒÁîÈËÓä¿ìµÄÊÇ
Cloudant ºÍ Couch DB ÓÐ×ÅÏàͬµÄ REST API£¬Òò´ËËüÃÇÓÐ×ÅÏàͬµÄÓ÷¨¡£Ö®ºóÎÒÃÇ»á×÷³öÏêϸ½éÉÜ¡£
Cloudant Êý¾Ý¿â Java ¿ª·¢Ç°ÆÚÅäÖÃ
Ê×ÏÈ£¬ÔÚÕâÀïÎÒÃǽøÐÐ Cloudant ÕË»§×¢²á£ºhttps://Cloudant.com/sign-up/
ͼ 1. Cloudant ÕË»§×¢²á
ÎÒÃÇÖªµÀ Cloudant ±¾ÉíÊÇ document Ð굀 NoSQL Êý¾Ý¿â£¬Òò´ËÔÚ
Cloudant Êý¾Ý¿âÖÐн¨ document ÊÇ×îΪ»ù±¾µÄ²Ù×÷£¬¶øÓÖÓÉÓÚ Cloudant »ùÓÚ Couch
DB£¬Òò´Ë¶ÔÓÚ document µÄÄÚÈݲ»ÄÑÏëÏóºÍÆäËû document Ð͵ÄÊý¾Ý¿âÒ»Ñù£¬ÆäÊý¾ÝµÄ´æ´¢¸ñʽΪ
json Êý¾Ý¸ñʽ¡£
ÏÂÃæÎÒÃÇÀ´¾ÙÀý˵Ã÷£º
Ê×ÏÈ£¬ÎÒÃÇÔÚн¨µÄ Java project ÖÐ src Ŀ¼ÏÂн¨Ò»¸ö config.properties
Îļþ£¬Ö®ºóÎÒÃǽ«ÔÚÕâ¸öÎļþÀï´æ´¢ÎÒÃǶÔÓÚ Cloudant Êý¾Ý¿âµÄ·ÃÎÊȨÏÞ£º
ͼ 2. config.properties Îļþ
ÔÚÉÏͼÖУ¬url µÄǰ׺Ҳ¾ÍÊÇÓû§×¢²áʱµÄÓû§Ãû£¬µÇ¼ Cloudant ºó£¬ÎÒÃǽ¨Á¢Ò»¸öÃûΪ
Cloudanttest µÄÊý¾Ý¿â, ÕâÀï×¢ÒâÒ»µã£¬ÔÚ½¨Á¢Êý¾Ý¿âÖ®ºó£¬ÎªÁ˰²È«Æð¼û£¬ÎÒÃÇÔÚÖ®ºóµÄ¿ª·¢Öв¢²»Ê¹ÓÃ×¢²áʱµÄÓû§Ãû£¬¼´Ê¹Ëü¾ßÓÐ
admin ȨÏÞ¡£Òò´ËÎÒÃÇÐèÒªÐÂÉú³ÉÒ»¸öÓû§Ãû£¬²¢ÇÒÒª¶ÔÉú³ÉµÄÓû§Ãû½øÐÐ admin ÊÚȨ£¬ÈçÏ£º
ͼ 3. ÅäÖÃÊý¾Ý¿â
µã»÷ͼ 3 ÖеÄËøÐÍÅäÖð´Å¥Ö®ºó£¬ÎÒÃǾͿÉÒÔ¶ÔÊý¾Ý¿â½øÐÐÅäÖÃÁË¡£ÔÚÏÂͼ 4 ÖУ¬ÎÒÃÇ¿ÉÒÔ¿´µ½£¬ÀïÃæÓÐÁ½¸öÑ¡Ïî°´Å¥£¬Ò»¸öÊÇ
Generate API Key, ÁíÒ»¸öÊÇ Grant Rights¡£ÎÒÃÇ¿ÉÒÔʹÓà Generate
API Key ½øÐÐÓû§ÃûµÄϵͳÉú³É£¬Ò²¾ÍÊÇ˵µã»÷Õâ¸ö°´Å¥£¬Ö®ºó Cloudant »á×Ô¶¯¸øÎÒÃÇÉú³ÉÒ»×éÓû§Ãû¼°ÃÜÂ룬ȻºóÎÒÃÇ¿ÉÒÔµã»÷×îÉÏÃæµÄ
Admin Ñ¡Ïî½øÐÐ admin ÊÚȨ¡£µ±È»£¬ÎÒÃÇÒ²¿ÉÒÔͨ¹ýÔÚ GrantRights ÖÐÊäÈëÎÒÃÇ×Ô¶¨ÒåµÄÓû§Ãû£¬²¢½øÐÐÊÚȨ£¬²Ù×÷·½·¨ÀàËÆ¡£
ÕâÀï²»ÄÑ¿´³ö£¬ÐÂÉú³É²¢ÊÚȨ¹ýµÄ account£¬¾ÍÊÇÎÒÃÇÒªÔÚ config.properties
ÎļþÀïÅäÖÃµÄ access ÐÅÏ¢ÁË¡£
ͼ 4. ÐÂÓû§ÃûÉú³É²¢ÊÚȨ
½ÓÏÂÀ´ÎÒÃǽ«Éú³ÉµÄÓû§ÃûÃÜÂëÅäÖÃÔÚ config.properties ÎļþÀΪ°²È«Æð¼û£¬Ö®ºó±ÊÕß¶¼½«Ê¹ÓÃ
Cloudanttest Õâ¸ö mock up ³öÀ´µÄ account ½øÐн²½â£º
Çåµ¥ 1. config.properties ÅäÖÃÎļþÄÚÈÝ
CloudantNoSQLDB.credentials.url=https://Cloudanttest.Cloudant.com CloudantNoSQLDB.credentials.username=atualtttdtdstopinundenos CloudantNoSQLDB.credentials.password=passw0rd db_name=Cloudanttest |
ÓÐÁË config µÄÅäÖÃÐÅÏ¢£¬ÏÂÃæÎÒÃǽ«ÒýÈëÁ½¸ö common µÄÀࣺ
Çåµ¥ 2. ConfigProperties Àà¶ÁÈ¡ config ÐÅÏ¢
import Java.util.Properties; public class ConfigProperties { private static final String ENV_CONFIG_PROPERTIES = "/config.properties"; Properties properties = new Properties(); public ConfigProperties(String propertiesFile) { try { //load ÅäÖÃÎļþÐÅÏ¢ properties.load(ConfigProperties.class.getResourceAsStream(propertiesFile)); } catch (Exception e) { e.printStackTrace(); } } public static ConfigProperties getEnvProperties(){ return new ConfigProperties(ENV_CONFIG_PROPERTIES); } public String getString(String key) { try { return (String) properties.get(key); } catch (Exception e) { e.printStackTrace(); return '!' + key + '!'; } } } |
Çåµ¥ 3. ConfigurationUtil »ñÈ¡ Cloudant ·ÃÎÊȨÏÞ
public class ConfigurationUtil { private static ConfigProperties envProperties = ConfigProperties.getEnvProperties(); private ConfigurationUtil() { } //»ñÈ¡»·¾³±äÁ¿£¬»ò´Ó properties ÎļþÖлñµÃÅäÖÃÐÅÏ¢ public static String getUserDefinedString(String name) { String value = System.getenv(name); return value != null && !value.isEmpty() ? value : envProperties.getString(name); } } |
Õâ¸öÀàÊÇÓÃÀ´¾ö¶¨ÊÇ·ñ´Ó config ÎļþÖлñÈ¡ Cloudant µÄ·ÃÎÊȨÏÞ¡£ÒòΪºóÆÚÎÒÃÇ»á½éÉÜ»ùÓÚ
Bluemix µÄ Cloudant service Ó¦Óã¬Õâ¸ö common ÀàÒ²ÊÇ»ùÓÚÕâÒ»µã¶ø´æÔڵģ¬ÔÒòÊÇÎÒÃDz»½ö¿ÉÒÔ´Ó
config ÎļþÖлñÈ¡·ÃÎÊȨÏÞÍ⣬»¹¿ÉÒÔ´ÓÒÑ°ó¶¨ Cloudant service µÄ Bluemix
app µÄ»·¾³±äÁ¿ÖлñÈ¡ Cloudant µÄ·ÃÎÊȨÏÞ¡£
ÖÁ´Ë£¬ÎÒÃÇÒѾÅäÖúÃÁËÕë¶Ô Cloudant Java ¿ª·¢ËùÐèµÄËùÓÐÅäÖÃÐÅÏ¢¡£
н¨Êý¾Ý¿âÎĵµ
Ê×ÏÈÎÒÃÇн¨Ò»¸ö Java Bean£¬°üº¬ÁËÈý¸ö˽ÓÐÊôÐÔ£¬name£¬age£¬address£¬ÒÔ¼°ËüÃÇËù¶ÔÓ¦µÄ
setter ºÍ getter ·½·¨£¬ÈçÏ£º
Çåµ¥ 4. н¨ Java Bean
public class TestBean { private String name; private int age; private String address; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } } |
ÕâÊÇÒ»¸ö¼òµ¥µÄ Java Bean£¬ÓÚÊÇÎÒÃÇÀûÓà Java ½«ÕâÑùÒ»¸ö Bean
µÄ¶ÔÏó´æÈë Cloudant DB£º
Çåµ¥ 5. ´æ´¢ Java Bean ÖÁ Cloudant Êý¾Ý¿â
import com.Cloudant.client.api.CloudantClient; import com.Cloudant.client.api.Database; import com.ibm.fordme.common.config.ConfigurationUtil; import com.ibm.fordme.common.constants.DBConstants; public class CloudantTest{ public static void main(String[] args){ //Êý¾Ý¿âÁ¬½Ó String url = ConfigurationUtil.getUserDefinedString(DBConstants.CLOUDANT_URL); String username = ConfigurationUtil.getUserDefinedString(DBConstants.CLOUDANT_USERNAME); String password = ConfigurationUtil.getUserDefinedString(DBConstants.CLOUDANT_PASSWORD); CloudantClient client = new CloudantClient(url,username,password); Database db = client.database(ConfigurationUtil.getUserDefinedString("db_name"), false); //ʵÀý»¯ JavaBean TestBean testBean = new TestBean(); testBean.setAddress("Xi'an"); testBean.setAge(26); testBean.setName("yxy"); db.save(testBean); } } |
ÆäÖÐ DBConstantsÀàÄÚÈÝÈçÏ£º
Çåµ¥ 6. Êý¾Ý¿âÅäÖÃ
public class DBConstants { public static final String CLOUDANT_URL = "CloudantNoSQLDB.credentials.url"; public static final String CLOUDANT_USERNAME = "CloudantNoSQLDB.credentials.username"; public static final String CLOUDANT_PASSWORD = "CloudantNoSQLDB.credentials.password"; } |
´ÓÉÏÃæµÄ´úÂë²»ÄÑ¿´³ö£¬ÔÚ´æ´¢ÐÅÏ¢µ½ Cloudant ֮ǰ£¬Ê×ÏÈÒª»ñµÃÈý¸öǰÌáÌõ¼þ£¬·Ö±ðÊÇ
url£¬username£¬password¡£ÓÐÁËÕâÈý¸öÌõ¼þ£¬ÎÒÃǾͿÉÒÔͨ¹ý Java Cloudant
lib ËùÌṩµÄ API À´½øÐÐÊý¾Ý¿âÁ¬½Ó£¬ÔÚÉÏÃæµÄ´úÂëÖУ¬ÎÒÃÇÌṩÁËÊý¾Ý¿âÃû£¬²¢ÇÒ¸øµÚ¶þ¸ö²ÎÊýµÄλÖø³Öµ
false£¬Õâ¸ö²¼¶û²ÎÊýµÄÒâÒåÊÇ˵ÊÇ·ñÔÚÊý¾Ý¿â²»´æÔÚʱн¨ÕâÑùÒ»¸öÊý¾Ý¿â£¬Ò²¾ÍÊÇ˵Èç¹û½«Õâ¸ö²ÎÊýÉèÖÃΪ
true µ±È»Ò²ÊÇ¿ÉÒԵģ¬ÒòΪÎÒÃÇÒѾ½¨ºÃÁ˿⣬Òò´ËÎÒÔÚÕâÀォËüÉèÖÃΪ false¡£ µÃµ½Éú³ÉµÄ document
ÈçÏÂͼËùʾ£º
ͼ 5. ¼òµ¥¶ÔÏóÎĵµ
ÔÚ´ËÎÒÃÇ·¢ÏÖÉú³ÉµÄ document Àï Cloudant »á×Ô¶¯µÄ°ïÎÒÃÇÉú³ÉÁíÍâÁ½¸ö×ֶΣº_id,
_rev¡£
µ±È»Õâ¶¼ÊÇ document µÄΨһ±êʶ·û£¬µ«ÊÇÈç¹ûÎÒÃÇÏë×Ô¶¨Òå_id µÄÖµµÄ»°£¬Ò²ÊÇ¿ÉÒԵģ¬Ö»ÐèÒªÔÚÎÒÃǵÄ
Java Bean ÀïÔö¼Ó_id Õâ¸ö×ֶμ´¿É¡£
ͬʱ£¬Cloudant Ò²Ö§³Ö¸´ÔÓ¶ÔÏóµÄ´æ´¢£º
±ÈÈçÎÒÃÇÔÚ Test Bean µÄ»ù´¡ÉÏ£¬ÔÙ¼ÓÉÏÒ»¸ö TestBeanWrapper£¬ÈçÏÂ
Çåµ¥ 7. ¸´ÔÓ¶ÔÏó´æ´¢
public class TestBeanWrapper { private String wrapperName; private TestBean data; public String getWrapperName() { return wrapperName; } public void setWrapperName(String wrapperName) { this.wrapperName = wrapperName; } public TestBean getData() { return data; } public void setData(TestBean data) { this.data = data; } } |
½Ó×ÅÎÒÃǽ«Õâ¸ö Wrapper ÀàµÄ¶ÔÏó´æÈë Cloudant DB£¬»ñµÃÏÂÃæµÄЧ¹û£º
ͼ 6. ¸´ÔÓ¶ÔÏóÎĵµ
ÖÁ´Ë£¬¶ÔÓÚÈçºÎ½«ÐÅϢдÈë document ²¢´æÈë Cloudant DB£¬ÎÒÏë´ó¼ÒÓ¦¸ÃÒѾÇå³þÁË£¬ÏÂÃæÎÒÃǽ«½éÉÜÈçºÎÔÚ
Cloudant DB ÖÐн¨Ò»¸ö View ²¢Ê¹ÓÃËü¡£
´´½¨ÊÓͼ
Ìáµ½ View£¬´ó¼Ò¿Ï¶¨»á¸Ðµ½·Ç³£ÊìϤ£¬SQL DB ÖÐ View ÊǺܳ£Óõģ¬ÎÒÃÇÖªµÀ
View ±¾Éí¾ÍÊÇÐé±í£¬¶ø¶ÔÓÚ NoSQL£¬±ÈÈç Cloudant£¬View µÄÒâÒåÆäʵºÍ SQL DB
ÖÐµÄ View ±È½ÏÀàËÆ¡£¶ÔÓÚ Cloudant DB µÄ View£¬Ëü¿ÉÒÔÓÐÑ¡ÔñÐԵعýÂË document£¬¿ÉÒÔ¼Ó¿ì²éÕÒËÙ¶È£¬ÔÚ½á¹û·µ»Ø¿Í»§¶Ë֮ǰ¿ÉÒÔ±»ÓÃÀ´Ô¤´¦Àí½á¹û¡£View
ÊǼòµ¥µÄ Javascript º¯Êý£¬ËüÓÉÁ½²¿·Ö×é³É£¬map º¯ÊýºÍ reduce º¯Êý£¬Å׿ª»ÞɬµÄ¸ÅÄÏÂÃæÎÒÃǾÙÒ»¸öÀý×Ó£º
ÔÚ֮ǰ½¨Á¢ºÃµÄÊý¾Ý¿âÖУ¬ÎÒÃÇÊÖ¶¯½¨Á¢Ò»¸ö View£¬ÈçÏ£º
Çåµ¥ 8. ¼òµ¥ÊÓͼ¶¨Òå
function (doc) { if(doc._id){ emit(doc._id, doc.name); } } |
ËüµÄÒâÒåÊÇÈç¹û document ´æÔÚ_id Õâ¸ö×ֶΣ¬ÄÇô½«·¢Éä·µ»Ø document
µÄ_id ÒÔ¼° name ×Ö¶Î×÷Ϊ½á¹û¡£
Çåµ¥ 9. ¸ù¾ÝÊÓͼ²éѯ
import com.Cloudant.client.api.CloudantClient; import com.Cloudant.client.api.Database; import com.ibm.fordme.common.config.ConfigurationUtil; import com.ibm.fordme.common.constants.DBConstants; import Java.util.List; import Java.util.Map; public class CloudantTest { public static void main(String[] args) { String url = ConfigurationUtil.getUserDefinedString(DBConstants.CLOUDANT_URL); String username = ConfigurationUtil.getUserDefinedString(DBConstants.CLOUDANT_USERNAME); String password = ConfigurationUtil.getUserDefinedString(DBConstants.CLOUDANT_PASSWORD); CloudantClient client = new CloudantClient(url, username, password); Database db = client.database(ConfigurationUtil.getUserDefinedString("db_name"), false); //¸ù¾Ý View ²éѯÊý¾Ý¿â£¬²¢ÒÔ map ½ÓÊÕ²éѯ½á¹û List<Map> list = db.View("testView/new-view").query(Map.class); System.out.println(list); } } |
ÔËÐÐÖ®ºóÎÒÃDZã¿ÉµÃµ½½á¹û£º
Çåµ¥ 10. ÊÓͼ²éѯ½á¹û
[{id=43966a7a3b14452fb265b838bafa13ac, key=43966a7a3b14452fb265b838bafa13ac, value=yxy}, {id=5e85569056144a519fe724329d6e6708, key=5e85569056144a519fe724329d6e6708, value=null}, {id=7850ba5c69624fb98f6241015545acfe, key=7850ba5c69624fb98f6241015545acfe, value=null}, {id=d96380207b1d4b5fae5265f27d004218, key=d96380207b1d4b5fae5265f27d004218, value=null}] |
´ÓÉÏÃæÎÒÃÇÖªµÀ View ±¾Éí²¢²»ÄÑÀí½â£¬¶øÇÒºÜÈÝÒ׾ͿÉÒÔ¸ù¾Ý×Ô¼ºµÄÐèҪд³ö¶ÔÓ¦µÄ
View ´Ó¶ø·µ»ØÏàÓ¦µÄ½á¹û¡£
н¨Ë÷Òý
³ýÁËÓà View ½øÐвéѯÍ⣬ÎÒÃÇ»¹¿ÉÒÔÓà index ½øÐвéѯ£¬²¢ÇÒÔÚ´óÊý¾Ý¹æÄ£Ï£¬index
µÄ²éѯЧÂÊÒªÔ¶¸ßÓÚ View¡£ÔÚ Cloudant ÖÐ index µÄ½¨Á¢£¬Ïà¶Ô±È½Ï¼òµ¥£¬ÎÒÃÇÔÚÉÏÃæµÄ´úÂëÖÐÓÃÒ»ÐоͿÉÒÔ½¨ºÃÒ»¸ö×ֶεÄ
index£¬ÀýÈçÎÒÃǽ¨Á¢ wrapperName Õâ¸ö×Ö¶ÎµÄ index£º
Çåµ¥ 11. Java ½¨Á¢Ë÷Òý
db.createIndex("index_wrapper_name", "index_test", null,new IndexField[] {
new IndexField("wrapperName", SortOrder.desc) }); |
ÄÇôÎÒÃǾͿÉÒÔͨ¹ý index_wrapper_name Õâ¸ö index Óà wrapperName
Õâ¸ö×ֶνøÐÐ document µÄÏà¹Ø²éѯ¡£ÀýÈ磺
Çåµ¥ 12. ¸ù¾ÝË÷Òý²éѯ
import com.Cloudant.client.api.CloudantClient; import com.Cloudant.client.api.Database; import com.Cloudant.client.api.model.IndexField; import com.Cloudant.client.api.model.IndexField.SortOrder; import com.ibm.fordme.common.config.ConfigurationUtil; import com.ibm.fordme.common.constants.DBConstants; import com.ibm.ws.objectgrid.config.jaxb.deploymentPolicy.Map; import Java.util.List; public class CloudantTest { public static void main(String[] args) { String url = ConfigurationUtil.getUserDefinedString(DBConstants.CLOUDANT_URL); String username = ConfigurationUtil.getUserDefinedString(DBConstants.CLOUDANT_USERNAME); String password = ConfigurationUtil.getUserDefinedString(DBConstants.CLOUDANT_PASSWORD); CloudantClient client = new CloudantClient(url, username, password); Database db = client.database(ConfigurationUtil.getUserDefinedString("db_name"), false); //Õë¶Ô wrapperName ×ֶν¨Á¢ index db.createIndex("index_wrapper_name", "index_test", null, new IndexField[] { new IndexField("wrapperName", SortOrder.desc) }); //¸ù¾ÝÒѽ¨Á¢ index µÄ×ֶΣ¬¶¨Òå²éѯÌõ¼þ String testIndex = "{\"wrapperName\":{ \"$gt\": null }}"; //Óà map ½ÓÊÕ²éѯ½á¹û List<Map> map = db.findByIndex(testIndex, Map.class); System.out.println(map); } } |
ÔÚÉÏÃæµÄ´úÂëÖУ¬ÓÉÓÚÎÒÃǽ¨Á¢ÁË wrapperName Õâ¸ö×Ö¶ÎµÄ index£¬Òò´ËÎÒÃǾͿÉÒÔÎ§ÈÆÕâ¸ö×ֶζ¨Òå²éѯÌõ¼þ£¬ÉÏÃæµÄ´úÂëÖвéѯÌõ¼þΪ
wrapperName ´óÓÚ null£¬Ò²¾ÍÊÇ˵ֻÓÐ wrapperName Õâ¸ö×ֶδæÔÚµÄ document
¶¼»á±»·µ»Ø¡£Òò´ËÎÒÃÇ¿ÉÒԵõ½½á¹ûÈçÏ£º
Çåµ¥ 13. Ë÷Òý²éѯ½á¹û
[com.ibm.ws.objectgrid.config.jaxb.deploymentPolicy.Map@63d94f05, com.ibm.ws.objectgrid.config.jaxb.deploymentPolicy.Map@4fd30479, com.ibm.ws.objectgrid.config.jaxb.deploymentPolicy.Map@26cacce0] |
ÔÚÕâÀïÎÒÃÇҪעÒâÒ»µã£¬ÔÚÓ¦Óà index ʱһ¶¨Òª½÷É÷£¬Ó¦µ±ÌáǰÃ÷È·ÄÄЩ×Ö¶ÎÐèÒª½¨Á¢index£¬ÄÄЩ²»ÐèÒª¡£Èç¹ûÎÒÃÇËù´¦ÀíµÄÊý¾ÝÆä¹æÄ£³Ê¶¯Ì¬Ôö³¤£¬ÄÇôµ±Êý¾Ý¹æÄ£Ìرð´óʱ£¬ÔÙÈ¥ÁÙʱÌí¼Óij¸ö×ֶεÄ
index ½«»áÏûºÄ²»ÉÙʱ¼ä¡£ÔÙÕߣ¬¶ÔÓÚ Cloudant£¬ÎÒÃÇÈç¹ûÐèÒª°´ÕÕij¸ö×ֶνøÐÐ document
ÅÅÐò£¬ÄÇôҲ±ØÐëÕë¶ÔÕâ¸ö×Ö¶ÎÌáǰ½¨Á¢ºÃ index£¬·ñÔò½«ÎÞ·¨Ê¹Óà sort ¹¦ÄÜ£¬Õâ¸öÎÒÃÇÔÚºóÃæ½²½â
RESTful µ÷ÓÃʱÔÙÊö¡£
Ïò Cloudant Êý¾Ý¿âÉÏ´«¸½¼þ
ÔÚ Cloudant ÀÎÒÃÇÒ²¿ÉÒÔÉÏ´«Îļþ×÷Ϊ¸½¼þ½øÐд洢¡£ÕâÀïÎÒÃÇÒÔÉÏ´«Í¼Æ¬À´¾ÙÀý˵Ã÷£º
Ê×ÏÈ£¬ÎÒÃǶ¨ÒåÒ»¸ö JavaBean£¬ÀïÃæ°üº¬ name, createdBy,
updatedBy ÕâÈý¸öÊôÐÔ¡£Image Àà¼Ì³ÐÁË Cloudant ÖÐµÄ Document À࣬ÕâÑùÎÒÃÇ¿ÉÒÔͨ¹ý
document µÄ»ù±¾ÊôÐÔ½øÐÐ attachment µÄÉèÖá£
Çåµ¥ 14. н¨Í¼Æ¬ JavaBean
import com.Cloudant.client.api.model.Document; public class Image extends Document { private String name; private String created_by; private String updated_by; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCreated_by() { return created_by; } public void setCreated_by(String created_by) { this.created_by = created_by; } public String getUpdated_by() { return updated_by; } public void setUpdated_by(String updated_by) { this.updated_by = updated_by; } } |
½ÓÏÂÀ´£¬ÎÒÃǶ¨ÒåÒ»¸öÀàÀ´½øÐÐͼƬµ½ base64 string µÄת»»¡£ÒòΪ¶ÔÓÚ
Cloudant µÄ attachment£¬ËüÊÇͨ¹ý base64 string À´´æ´¢¸½¼þÄÚÈݵġ£µ±È»ÔÚÕâÀÐèҪ˵Ã÷Ò»µãµÄÊÇ£¬ÎÒÃÇÕâÀïÖ»ÊÇΪÁ˱¾½ÚʾÀýµÄ½²½â¶ø¶¨ÒåÁËÕâ¸öÀ࣬½ñºóΪÁË·½±ãÎÒÃÇÒ²¿ÉÒÔÖ±½Óͨ¹ýÍøÂçÉϵÄ
base64 ת»»¹¤¾ßÀ´µÃµ½Í¼Æ¬µÄ base64 string¡£ÕâÀïÓÐÒ»¸öÓ¦Óó¡¾°£¬Èç¹ûÎÒÃÇÓ¦Óà RESTful
¿ò¼ÜÀ´½øÐÐÏîÄ¿¿ª·¢£¬ÄÇôÎÒÃǺÜÇå³þ£¬ÕâÑù×öǰºǫ́ÊÇ·ÖÀ뿪µÄ£¬ÄÇô¶ÔÓÚͼƬÉÏ´«£¬ÎÒÃǵĺǫ́ REST ½Ó¿Ú½«Ö»¹ØÐÄǰ̨´«¹ýÀ´µÄ
base64 string ¶ø²¢²»Àí²ÇÕâ¸ö base64 string ÊÇÈçºÎÔÚǰ̨ͨ¹ýͼƬת»»µÃµ½µÄ¡£ÕâÒ²¾ÍÊÇÎÒΪʲô˵ÏÂÃæÕâ¸öÀàµÄ¶¨ÒåÖ»ÊÇΪÁËʾÀýµÄ½²½â¶ø´æÔڵġ£
ÕâÀïÎÒÃÇÐèÒªÒýÈë apache µÄ commons.codec Õâ¸ö jar °ü¡£
Çåµ¥ 15. ͼƬ-Base64 String ת»»Æ÷
import org.apache.commons.codec.binary.Base64; import Java.io.FileInputStream; import Java.io.InputStream; import Java.io.PrintStream; public class Image2Base64 { //½«ÎļþתΪ base64 string public String Base64String(String path) throws Exception { InputStream in = new FileInputStream(path); byte[] data = new byte[in.available()]; in.read(data); in.close(); String encoder = Base64.encodeBase64String(data); return encoder; } public InputStream Base64Stream(String path) throws Exception { InputStream in = new FileInputStream(path); return in; } public static void main(String[] args) throws Exception { Image2Base64 test = new Image2Base64(); String result = test.Base64String("C:/Users/IBM_ADMIN/Desktop/IBM.png"); PrintStream out = new PrintStream("C:/Users/IBM_ADMIN/Desktop/IBMBase64Code.txt"); out.print(result); out.close(); } } |
ÓÐÁËÉÏÃæÕâ¸öÀ࣬ÎÒÃDZã¿ÉÒÔ½«Í¼Æ¬×ª»»Îª base64 string£¬ÓÚÊÇÎÒÃǶ¨ÒåÏÂÃæÕâ¸öÀà×÷ΪʾÀý£º
Çåµ¥ 16. Ïò Cloudant Êý¾Ý¿âÉÏ´«Í¼Æ¬
import com.Cloudant.client.api.CloudantClient; import com.Cloudant.client.api.Database; import com.Cloudant.client.api.model.Attachment; import com.ibm.fordme.common.config.ConfigurationUtil; import com.ibm.fordme.common.constants.DBConstants; public class CloudantTest { public static void main(String[] args) throws Exception { String url = ConfigurationUtil.getUserDefinedString(DBConstants.CLOUDANT_URL); String username = ConfigurationUtil.getUserDefinedString(DBConstants.CLOUDANT_USERNAME); String password = ConfigurationUtil.getUserDefinedString(DBConstants.CLOUDANT_PASSWORD); CloudantClient client = new CloudantClient(url, username, password); Database db = client.database(ConfigurationUtil.getUserDefinedString("db_name"), false); Image image = new Image(); image.setId("image001"); image.setName("IBMLOGO"); image.setCreatedBy("xayangxy@cn.ibm.com"); Image2Base64Tool tool = new Image2Base64Tool(); //»ñµÃ base64 string String base64Code = tool.getBase64String("C:/Users/IBM_ADMIN/Desktop/IBM.png"); //¶¨Òå attachment£¬ÓÃÒÔ´æ´¢ÎļþÉú³ÉµÄ base64 string Attachment attachment = new Attachment(); attachment.setData(base64Code); attachment.setContentType("image"); image.addAttachment("IBMLOGO", attachment); //´æ´¢Í¼Æ¬ db.save(image); } } |
¿ÉÒÔ¿´µ½£¬ÉÏÃæµÄ code ·Ç³£ºÃÀí½â£¬Ç°¼¸ÐкÍÉÏÃæµÄ¼¸¸öʾÀý¿ª¶ËÒ»Ñù£¬ÊÇÈ¡µÃÊý¾Ý¿âµÄ·ÃÎÊȨÏÞ£¬Ö®ºóÎÒÃÇʵÀý»¯ÁËÒ»¸ö
image ¶ÔÏ󣬲¢ÊµÀý»¯ÁËÒ»¸ö attachment¡£¿ÉÒÔ¿´µ½£¬attachment µÄÄÚÈÝÐèÒªÓà base64
string ½øÐÐÉèÖ㬽ø¶øÎÒÃÇ»¹ÏóÕ÷ÐÔµÄÉèÖÃÁËͼƬµÄÀàÐÍΪ¡°image¡±£¬¶øÊµ¼ÊÉÏ content type
µÄÉèÖò¢ÎÞʵ¼ÊµÄÒâÒ壬ºóÃæµÄ¹ý³ÌÏë±Ø´ó¼Ò¶¼ºÜÊìϤ£¬Ò²¾ÍÊÇÎÒÃǵڶþ½Ú½éÉÜµÄ create document
to Cloudant£¬´æ´¢Õâ¸ö Bean µ½Êý¾Ý¿âÖм´Íê³ÉÁ˸½¼þµÄÉÏ´«¹¦ÄÜ¡£ÈçÏÂͼËùʾ£º
ͼ 7. Cloudant Îĵµ¸½¼þչʾ
¸üÐÂÊý¾Ý¿âÎĵµ
ÔÚ Cloudant Êý¾Ý¿âÖиüÐÂÒ»¸ö document ÆäʵºÍ´´½¨Ò»¸ö document
ÊǷdz£ÀàËÆµÄ£¬Ò²ºÜ¼òµ¥£¬ÕâÀïÎÒÃÇ»ùÓÚÉÏÃæµÄ image ʾÀý¾ÙÒ»¸ö¼òµ¥µÄÀý×Ó£¬ÈçÏ´úÂ룺
Çåµ¥ 17. ¸üРCloudant Êý¾Ý¿âÎĵµ
import com.Cloudant.client.api.CloudantClient; import com.Cloudant.client.api.Database; import com.ibm.fordme.common.config.ConfigurationUtil; import com.ibm.fordme.common.constants.DBConstants; public class CloudantTest { public static void main(String[] args) throws Exception { String url = ConfigurationUtil.getUserDefinedString(DBConstants.CLOUDANT_URL); String username = ConfigurationUtil.getUserDefinedString(DBConstants.CLOUDANT_USERNAME); String password = ConfigurationUtil.getUserDefinedString(DBConstants.CLOUDANT_PASSWORD); CloudantClient client = new CloudantClient(url, username, password); Database db = client.database(ConfigurationUtil.getUserDefinedString("db_name"), false); String id = "image001"; Image image = db.find(Image.class, id); image.setName("IBMLOGOSHOW"); db.update(image); } } |
¿ÉÒÔ¿´µ½Õâ¸öʾÀýÖÐÌåÏÖ±¾½ÚÄÚÈݵÄÖ»ÓÐ×îºóÃæµÄÕâÈýËÄÐдúÂ룬²»ÄÑÀí½â£¬ÎÒÃÇÊ×ÏÈÒªÖªµÀÐèÒª±»¸üеÄ
document µÄ id£¬ÕâÀïÎÒÃÇÑ¡Ôñ֮ǰ´æ´¢µÄ image001 Õâ¸ö document£¬È»ºóÎÒÃÇ»ñÈ¡Õâ¸ö
document Ëù¶ÔÓ¦µÄ JavaBean£¬Ö®ºóÎÒÃDZã¿ÉÒÔͨ¹ý db.update ·½·¨½øÐÐ document
¸üÐÂÁË¡£ÕâÀïÐèҪעÒâµÄÒ»¸öÎÊÌâÊÇ£¬ÎÒÃDZØÐëÌáǰ֪µÀ±»¸üРdocument µÄ id ºÍÆäËù¶ÔÓ¦ JavaBean
µÄÀàÐÍ¡£Õâ¸öǰÌáÊÇÎ޿ɺñ·ÇµÄ£¬ÉèÏëÕâÑùµÄÒ»¸ö³¡¾°£¬ÎÒÃǽøÐÐ RESTful ¿ª·¢Ê±£¬Èç¹ûÓÐ update
ÕâÑùµÄÒ»¸ö REST service£¬ÄÇô½Ó¿ÚÖбØÈ»ÒªÌṩ id Õâ¸ö²ÎÊý×÷ΪÊäÈëÏ¶ø¶ÔÓÚ document
Ëù¶ÔÓ¦µÄ JavaBean£¬ÎÒÃÇÒ»°ãΪÁ˼ܹ¹ÇåÎú£¬Ò»¸öÊý¾Ý¿âÖÐÒ»°ãÖ»´æ´¢Ò»ÖÖÀàÐ굀 document£¬ÀýÈçÎÒÃÇÓÐÒ»¸öÊý¾Ý¿â½Ð
ibm_image£¬ÄÇôÕâ¸ö¿âÖд洢µÄËùÓÐ documents ¶¼½«ÊÇ Image Õâ¸öÀàÐ굀 documents¡£Òò´ËÎÒÃÇÔÚ×ö¸üвÙ×÷ʱ£¬ÐèҪת»»µÄ
JavaBean ÀàÐÍÊÇÍêÈ«¿ÉÖªµÄ¡£
ɾ³ýÊý¾Ý¿âÎĵµ
¶ÔÓÚɾ³ý²Ù×÷£¬Ôò¸üΪ¼òµ¥¡£ÎÒÃÇÖ»Ðèµ÷Óà db.remove ·½·¨¼´¿ÉÍê³É delete
document ²Ù×÷¡£ÈçÏ´úÂëʾÀý£º
Çåµ¥ 18. ɾ³ý Cloudant Êý¾Ý¿âÎĵµ
import
com.Cloudant.client.api.CloudantClient;
import com.Cloudant.client.api.Database;
import com.ibm.fordme.common.config.ConfigurationUtil;
import com.ibm.fordme.common.constants.DBConstants;
public class CloudantTest {
public static void main(String[] args) throws Exception
{
String url = ConfigurationUtil.getUserDefinedString(DBConstants.CLOUDANT_URL);
String username = ConfigurationUtil.getUserDefinedString(DBConstants.CLOUDANT_USERNAME);
String password = ConfigurationUtil.getUserDefinedString(DBConstants.CLOUDANT_PASSWORD);
CloudantClient client = new CloudantClient(url,
username, password);
Database db = client.database(ConfigurationUtil.getUserDefinedString("db_name"),
false);
String id = "image001";
Image image = db.find(Image.class, id);
db.remove(image);
}
} |
ÕâÀïÎÒÃÇÈÔÈ»ÐèÒªÖªµÀ document µÄ id£¬²¢Í¨¹ý JavaBean »ñȡҪɾ³ýµÄ
document Ëù¶ÔÓ¦µÄ¶ÔÏ󣬴ӶøÉ¾³ýÕâ¸ö document¡£µ±È»Ò²ÓÐÁíÒ»¸ö·½·¨¹©Ê¹ÓÃÕß½øÐе÷Ó㬼´£º
db.remove(String _id, String _rev)
Õâ¸ö·½·¨ÐèÒªÖªµÀ document ¶ÔÓ¦µÄ_id ºÍ_rev£¬²Å¿É½øÐÐɾ³ý²Ù×÷£¬µ«Õâ¸ö·½·¨±¾Éí±ÊÕß²¢²»ÍƼöʹÓá£
»ùÓÚ RESTful API ²éѯ Cloudant Êý¾Ý¿â
Cloudant Ϊ¿ª·¢ÕßÌṩÁ˷dz£·½±ãµÄ RESTful API£¬ÆäÖÐ×îÖØÒªµÄÒ»¸ö
API ¼´£ºxxx.Cloudant.com/dbname/_find£¬ÎÒÃÇ¿ÉÒÔͨ¹ý¶Ô´Ë API µÄµ÷ÓýøÐÐ
document ²éѯ£º
ͼ 8. ͨ¹ý selector ²éѯ
Cloudant Êý¾Ý¿â
ÕâÀïÎÒÃÇʹÓÃÁË chrome ä¯ÀÀÆ÷×Ô´øµÄ REST Client ½øÐÐ
rest ²éѯ£¬Cloudant Ö§³Ö selector, sort, limit, skip, fields
ÕâЩ operators¡£ÉÏÃæµÄʾÀýÖÐÎÒÃǾÍʹÓÃÁË selector Õâ¸ö operator¡£Ç°ÃæËµ¹ýÈç¹ûÒª¶Ôij¸ö×ֶνøÐÐ
sort£¬Ôò±ØÐë¶Ô´Ë×ֶν¨Á¢ index£¬ÕâÀïÎÒÃǾÙÁ½¸öÀý×Ó£º
Ê×ÏÈ£¬µ±Òª½øÐÐ sort µÄ×Ö¶ÎûÓн¨Á¢ index ʱ£¬Èç¹û½øÐÐ
sort ²Ù×÷£¬Ôò»á³öÏÖÈçϽá¹û£º
ͼ 9. ÎÞ¶ÔÓ¦ index ʱ sort
¹¦ÄÜʧЧ
¿ÉÒÔÇå³þµØ¿´µ½£¬Cloudant µÄ RESTful API ·µ»Ø¸øÎÒÃÇÁË
sort ×ֶζÔÓ¦ index ²»´æÔڵĴíÎóÌáʾ¡£
½ÓÏÂÀ´£¬ÎÒÃÇÀûÓÃÇ°Ãæ Create Index Õ½ڽ²½â¹ýµÄÄÚÈÝ£¬¶Ô
name ×ֶν¨Á¢ index£¬Ö®ºóÔٴβéѯ£¬¸ù¾Ý request body ÀïµÄ²éѯÌõ¼þ£¬ÎÒÃDzéѯÁË£¬name
×ֶδæÔÚµÄËùÓÐ documents£¬²¢ÇÒ°´ÕÕ name ×ֶνøÐнµÐòÅÅÐò£¬µÃµ½½á¹ûÈçÏ£º
ͼ
10. ÓжÔÓ¦ index ʱ»ùÓÚ sort ¹¦ÄܲéѯÎĵµ
ÕâÀïÎÒÃÇ»¹¿ÉÒÔÉèÖ÷ÖÒ³¹¦ÄÜ£¬ÀûÓà limit ºÍ skip£¬±ÈÈçÎÒÃÇÒª²éѯ
sort Ö®ºóÖмäÁ½ÌõÊý¾Ý£¬ÄÇôÎÒÃÇ¿ÉÒÔÀûÓÃÏÂÃæµÄ²éѯÌõ¼þ£º
Çåµ¥ 19. ²éѯÌõ¼þ
{"selector":{"name":{"$gt":null}}, "sort":[{"name":"desc"}], "limit":2, "skip":1} |
ÕâÑùÎÒÃǾͿÉÒԵõ½ÏëÒªµÄ½á¹ûÁË¡£
Cloudant Êý¾Ý¿â¸´ÖÆ
ͼ 11. Cloudant Êý¾Ý¿â¸´ÖÆÈë¿Ú
¶Ô Cloudant Êý¾Ý¿â½øÐÐ replicate£¬ÎÒÃǵǼ Cloudant
ºó£¬ÔÚÒª replicate µÄÊý¾Ý¿âÓÒ²àµã»÷ replicate button£¬Ö®ºóÎÒÃÇ¿ÉÒÔ¿´µ½ÈçϽçÃæ£º
ͼ 12. Cloudant ±¾µØÊý¾Ý¿â¸´ÖÆ
ÊäÈë replicate µÄÐÂÊý¾Ý¿âÃû£¬µã»÷ replicate ¼´¿É¡£³ýÁËÉÏÃæµÄ±¾µØÄ£Ê½Í⣬ÎÒÃÇÒ²¿ÉÒÔ
replicate Ô¶³ÌÊý¾Ý¿â£¬»»¾ä»°Ëµ£¬¾ÍÊÇÎÒÃÇ¿ÉÒÔ½«ÁíÒ»¸ö Cloudant ÕË»§ÖеÄijһ¸öÊý¾Ý¿â
replicate µ½µ±Ç° Cloudant ÕË»§ÖС£Óë±¾µØÄ£Ê½Ëù²»Í¬µÄÊÇÎÒÃÇÔÚ source database
Ñ¡ÏîÖÐÒªÌîÈë¹æ¶¨Ñùʽ
£¨https://$USERNAME:$PASSWORD@$REMOTE_USERNAME.Cloudant.com/$DATABASE_NAME£©µÄ·ÃÎÊȨÏÞ£¬ÈçÏÂËùʾ£º
ͼ 13. Cloudant Ô¶³ÌÊý¾Ý¿â¸´ÖÆ

²»ÄÑ¿´³ö£¬Cloudant ÖжÔÊý¾Ý¿âµÄ
replicate ²Ù×÷»¹ÊǷdz£¼òµ¥·½±ãµÄ¡£
»ùÓÚ Bluemix ƽ̨µÄ Cloudant service
Ó¦ÓÃ
¶ÔÓÚ Bluemix£¬Ïë±Ø´ó¼Ò¶¼ÓÐËù¶úÎÅ£¬ÔÚ±¾ÎÄÕÂÖв»×÷ÏêÊö£¬ÓÐÐËȤ¿ÉÒԲο¼
developerWorks ÉϵÄÏà¹ØÎÄÕ£¬»ò²Î¿¼ Bluemix µÄ¹Ù·½Îĵµ¡£ÎÒÃÇÖªµÀ£¬Bluemix
ÊÇ IBM ¹«Ë¾×î¾ßÓдú±íÐÔµÄÔÆÆ½Ì¨£¬»ùÓÚ Bluemix ÎÒÃÇ¿ÉÒÔ·½±ãµÄ´´½¨×Ô¼ºµÄ¹¤³Ì£¬²¢Îª¹¤³Ì°ó¶¨ÐèÒªµÄ
service£¬Õâ¶ÔÓû§À´ËµÊǷdz£·½±ãµÄ¡£µ±È»£¬Cloudant Ò²ÊÇ Bluemix ¿É°ó¶¨µÄ service
Ö®Ò»¡£ÏÂÃæÎÒÃǽ«½²Êö»ùÓÚ Bluemix ƽ̨µÄ Cloudant service Ó¦Óá£
µÇ¼ Bluemix£¬ÎÒÃÇн¨Ò»¸ö Liberty for Java
µÄ app:
ͼ 14. »ùÓÚ Bluemix µÄ
Cloudant service ½çÃæ
½Ó×ÅÎÒÃǵã»÷¡±ADD A SERVICE OR API¡±, ÔÚ Data
and Analytics Ŀ¼ÏÂÕÒµ½ Cloudant service£¬ÈçÏÂ:
ͼ 15. »ùÓÚ Bluemix н¨
Cloudant ·þÎñ

µã»÷ºó½øÈë create service Ò³Ãæ£¬ÎÒÃDZã¿ÉÒÔ create
Ò»¸öÐ嵀 Cloudant service ²¢°ó¶¨¸øÖ®Ç°Ð½¨µÄ APP£¬ÈçͼËùʾ£º
ͼ 16. »ùÓÚ Bluemix µÄ
Cloudant service ÐÅÏ¢ÅäÖÃ

µã»÷ create£¬Ö®ºóÎÒÃDZãµÃµ½Á˰󶨺ÃÁË Cloudant service
µÄ Java liberty app£º
ͼ 17. »ùÓÚ Bluemix µÄ
Cloudant service ½¨Á¢Íê³É

½øÈë app£¬ÎÒÃÇ¿ÉÒÔÔÚ×ó²àÕÒµ½»·¾³±äÁ¿Õâ¸öÑ¡Ïµã»÷½øÈëºó£¬ÎÒÃÇ·¢ÏÖÒѾ°ó¶¨µÄ
Cloudant service µÄËùÓÐȨÏÞÐÅÏ¢±»ÁÐÔÚ VCAP »·¾³±äÁ¿ÀÈçÏÂËùʾ£º
ͼ
18. »ùÓÚ Bluemix µÄ Cloudant service »·¾³±äÁ¿
ÕâÀïÎÒÃÇ»ØÏëÒ»¿ªÊ¼ÔÚ¡°Cloudant Êý¾Ý¿â Java ¿ª·¢Ç°ÆÚÅäÖá±Õ½ÚÖÐÌáµ½¹ýµÄ£¬ConfigurationUtil
ÀàÖÐÎÒÃÇ¿ÉÒÔµ÷Óà getUserDefinedString Õâ¸ö·½·¨£¬Ò²¾ÍÊÇ˵Ëü¿ÉÒÔ´Ó user defined
»·¾³±äÁ¿Àï¶ÁÈ¡·ÃÎÊȨÏÞÐÅÏ¢£¬ÈçÏ£º
ͼ 19. »ùÓÚ Bluemix µÄ
Cloudant service ×Ô¶¨Òå»·¾³±äÁ¿
´ËʱÎÒÃÇËùʾµÄÄÚÈÝÊÇ֮ǰÎÒÃÇÊÖ¹¤½¨Á¢µÄ Cloudant Êý¾Ý¿âµÄ·ÃÎÊȨÏÞ¡£ÔÚÕâÀïÎÒÃÇ¿ÉÒÔ½«ÆäÄÚÈÝ»»ÎªÉÏÃæ°ó¶¨ºó»·¾³±äÁ¿ÖеķÃÎÊȨÏÞ¡£ÆäʵÕâÀBluemix
±¾Éí¾ÍÓÐ VCAP »·¾³±äÁ¿£¬ÎÒÃǰó¶¨ÁË Cloudant service Ö®ºó£¬Æäʵ¿ÉÒÔͨ¹ý Java
API ½ÓÈ¡µÃ»·¾³±äÁ¿ÖеÄËùÓÐÐÅÏ¢£¬Òò´ËÎÒÃÇ¿ÉÒÔ¶Ô ConfigurationUtil Õâ¸öÀàÓÐÏÂÃæµÄÀ©Õ¹£º
ͼ 20. »ùÓÚ Bluemix µÄ Cloudant
service ·½·¨À©Õ¹
¿ÉÒÔ¿´µ½ÎÒÃǶ¨ÒåÁË getVcapString Õâ¸ö·½·¨£¬Òò´ËÕâ¸ö·½·¨µÄÂß¼ÊÇ£¬Ê×ÏÈ·ÃÎÊ
vcap »·¾³±äÁ¿£¬Èç¹ûûÓÐÕÒµ½£¬Ôòµ÷Óà getUserDefinedString È¥ user defined
»·¾³±äÁ¿ÖнøÐвéÕÒ£¬Èç¹ûÈÔȻδÕÒµ½·ÃÎÊȨÏÞÐÅÏ¢£¬ÔòÈ¥ src Ŀ¼Ï·ÃÎÊ config.properties
Îļþ»ñÈ¡·ÃÎÊÐÅÏ¢¡£
Cloudant RESTful API Ïê½â
ÔÚ֮ǰÎÒÃǽéÉÜÁË Cloudant RESTful API query
²¿·ÖµÄÓ÷¨£¬Ò²½éÉÜÁË»ùÓÚ Bluemix ƽ̨µÄ Cloudant service Ó¦Óá£ÔÚÕâÒ»½Ú£¬ÎÒÃǽ«½áºÏÕâÁ½¸ö·½Ãæ½øÐн²½â¡£
Ϊ·½±ãÀí½â£¬ÆäËüÅäÖõĹý³Ì±ÊÕß²»ÔÙ½øÐÐ׸Êö£¬ÏÂÃæÎÒÃǽ«»ùÓÚÒ»¸öÒѾʵÏÖºÃµÄ RESTful ¼Ü¹¹µÄ liberty
Java app ½øÐÐ RESTful API µÄµ÷Óý²½â¡£Èçͼ£º
ͼ 21. »ùÓÚ Bluemix service
µÄ RESTful API ²éѯ
ÔÚÕâÀïÎÒÃÇÒѾÔÚ Bluemix Éϲ¿ÊðºÃÁË RESTful app£¬Òò´ËÉÏÃæµÄ
URL Öм´ÎªÎÒÃÇ RESTful services ÖÐµÄÆäÖÐÒ»¸ö£¬ÕâÀïÎÒÃÇÓõäÐ͵IJéѯ²Ù×÷À´½øÐн²½â¡£¿ÉÒÔ¿´µ½ÉÏÃæµÄ
http ÇëÇóÖÐ request body ÉèÖÃÁ˲éѯÌõ¼þ£¬¼´
1£©document ´æÔÚ
2£©°´ name ½øÐнµÐòÅÅÁÐ
3£©Ö»Êä³ö name ºÍ theme ÕâÁ½¸ö×Ö¶Î
4£©Ö»Êä³öÈýÌõ¼Ç¼£¬ÓÚÊÇÎÒÃÇ¿ÉÒԵõ½ÈçϽá¹û£º
ͼ
22. »ùÓÚ Bluemix service µÄ RESTful API ²éѯ½á¹û 
ÓÐÁËÕâÑùµÄºǫ́²Ù×÷£¬¶ÔÓÚÒѱ»°þÀ뿪µÄǰ̨À´Ëµ£¬¿ª·¢Õß¿ÉÒԺܷ½±ãºÜÇåÎúµÄ½øÐÐǰ̨¿ª·¢ÒÔ¼°ºÍºǫ́µÄÊý¾Ý½»»¥¡£
³ý´ËÖ®Í⣬ÎÒÃÇÔÙ¸ø³öÒ»¸ö¸´ÔÓÀàÐÍ document µÄ²éѯʾÀý£º ÀýÈç
document µÄÄÚÈÝÈç
Çåµ¥ 20. ¸´ÔÓ Json ÎļþʾÀý
{ "_id": "100000000000000000", "_rev": "1-67d924da9402c2f6d70a229f91bfe0e5", "geometry": { "type": "Point" }, "properties": { "mmTrajectory": { "altitude": 0, "heading": 0, "latitude": 0, "longitude": 0, "moID": "1446118616715166666", "note": "By-passed because of missing information or point is not in a known region", "speed": 1.314919948566666, "tripID": "", "ts": 1452071840 }, "packet": { "meta": { "account": "test", "event": "track" }, "payload": { "asset": "1446118616715171320", "connection_id": 795943814836519000, "connection_id_str": "795943814836519042", "fields": { "MDI_CUSTOM_PID_27": { "b64_value": "ODAuOQ==" }, "MDI_CUSTOM_PID_49": { "b64_value": "Mi4xODQzMTQ1NDQzNjM0MjM3RTE4" }, "MDI_CUSTOM_PID_50": { "b64_value": "MS4xMzU5NDQ4Mjc3MDA1MTA3RTE3" }, "MDI_CUSTOM_PID_7": { "b64_value": "NTYuNDcwNTg4MjM1Mjk0MTE2" }, "MDI_CUSTOM_PID_8": { "b64_value": "My4w" } }, "id": 795944156529666666, "id_str": "795944156529666666", "index": 1110, "received_at": "2016-01-06T09:17:54Z", "recorded_at": "2016-01-06T09:17:20Z", "recorded_at_ms": "2016-01-06T09:17:20.000Z", "streams_received_at": "2016-01-06T09:17:55Z" } }, "vehicleId": "1446118616715666666", "pid_fields": { "charge_level": { "value": "56.470588235294116", "tip": "56.470588235294116" }, "charge_status": { "value": "3", "tip": "3" }, "charge_range": { "value": 80.9, "tip": "80.9" } }, "pidop_processed_at": "2016-01-06T09:18:01Z" }, "type": "feature" } |
Èç¹ûÎÒÃÇÒª¶ÔÆäÖеÄijЩ×ֶνøÐÐÌõ¼þ²éѯ£¬ÔòÔÚ http ÇëÇóʱ request
body ÖеÄ×ֶαØÐ뾫ȷµ½ Æä¾ø¶Ô·¾¶£¬ÀýÈçÕë¶ÔÉÏÃæµÄ document£¬ÎÒÃÇÓÃÏÂÃæµÄÓï¾ä½øÐвéѯ£º
Çåµ¥ 21. Cloudant Êý¾Ý¿â RESTful API ¸´ÔÓ²éѯÓï¾ä
{
"selector":
{
"properties.packet.payload.asset":"1446118616715171320","properties.packet.payload.recorded_at":{
"$gte":"2015-11-01T00:00:00Z"
},"
properties.pid_fields.charge_level":{"$exists":true}},
"sort":[{"properties.packet.payload.asset":"desc"},{"properties.packet.payload.recorded_at":"desc"}],
"limit":2
}
|
¿ÉÒÔ¿´µ½£¬Ïñ charge_level£¬asset µÈµÈÕâÑùµÄ×ֶΣ¬¶¼¾«È·µ½Á˾ßÌåµÄ·¾¶£¬±ÈÈ磺properties.packet.payload.asset
ºÍ properties.pid_fields.charge_level¡£Ö»ÓÐÕâÑùÎÒÃDzſÉÒԳɹ¦µÄ²éѯ³öÏëÒªµÄ½á¹û¡£
Cloudant Ó¦ÓÃ×¢ÒâÊÂÏî
Cloudant µÄÓŵãÏë±Ø´ó¼ÒÒÑÓÐÌå»á£¬ÕâÀï²»±Ø¶à˵£¬Ôڴ˱ÊÕß×ܽáÁ½µãʹÓÃ
Cloudant ʱÐèҪעÒâµÄµØ·½£º
1£©sort ¹¦ÄܵÄʹÓÃÊÇÓÐÏÞÖÆµÄ£¬µ±ÎÒÃÇÏë½øÐж༶ sort ²éѯʱ£¬ÀýÈç
document ÖÐÓÐ a,b,c,d Ëĸö×ֶΣ¬Èç¹ûÎÒÃÇÏë¶Ô a,b,c ͬʱ½øÐÐÅÅÐò£¬Ôò±ØÐë´æÔÚÒ»¸ö
a,b,c °ó¶¨ÔÚÒ»ÆðµÄ index£¬¶øÇÒÐèҪͬÐò¶¨Ò壬¼´¶¼ÊÇ desc »ò¶¼ÊÇ asc£¬¼´ÐèÒª´´½¨ÕâÑùµÄ
index£º
Çåµ¥ 22. Ϊ¶à¼¶ÅÅÐò½¨Á¢¸´ºÏË÷Òý
db.createIndex("index_name_field", "indexes", null, new IndexField[]
{
new IndexField("a", SortOrder.desc),new IndexField("b",
SortOrder.desc),new IndexField("c", SortOrder.desc)
}
); |
²¢ÇÒÖÁÉÙÒª±£Ö¤ÓÐÒ»¸ö sort µÄ×Ö¶ÎÒª´æÔÚÓÚ selector ÖС£
2£©selector ÊDzéѯ Cloudant RESTful API
ʱ±ØÐëµÄ operator£¬µ±È»Óû§¿ÉÒÔ¸ù¾ÝÐèÒª½øÐÐÀ©Õ¹£¬ÈÃ×Ô¼º»ùÓÚ Cloudant Êý¾Ý¿âµÄ RESTful
service ûÓÐÕâÑùµÄÏÞÖÆ¡£
½áÊøÓï
Cloudant ÊÇ IBM ¹«Ë¾·Ç³£¾ßÓдú±íÐԵIJúÆ·Ö®Ò»£¬ÎÒÃÇÖªµÀÔÚÔÆÆ½Ì¨´óÊý¾ÝÊ¢Ðеĵ±Ï£¬º£Á¿¹æÄ£Êý¾ÝµÄ´æ´¢ÎÞÒÉÊÇÈËÃÇ×î¹ØÐĵÄÎÊÌâ¡£Cloudant
Êý¾Ý¿âÒÔÆä×ÔÉíÇ¿´óµÄ´¦Àí´ó¹æÄ£Êý¾Ý¡¢Ö§³Ö¸ß²¢·¢ÐзÃÎʵÄÓÅÊÆÊܵ½ÁËÒµ½ç¸ß¶ÈµÄÈϿɡ£±¾ÎÄϵͳµØ½éÉÜÁË Cloudant
Êý¾Ý¿âµÄ¼¸ºõËùÓлù±¾²Ù×÷£¬Ï£ÍûÎÄÖÐÌáµ½µÄ¸ÅÄîºÍʾÀý´úÂë¶Ô¶ÁÕߵĿª·¢¹¤×÷Ìṩһ¶¨µÄ°ïÖú¡£
|