.. Copyright BigchainDB GmbH and BigchainDB contributors SPDX-License-Identifier: (Apache-2.0 AND CC-BY-4.0) Code is Apache-2.0 and docs are CC-BY-4.0 BigchainDB Äõ¸® =================== ³ëµå operator´Â MongoDBÀÇ Äõ¸® ¿£ÁøÀÇ ÃÖ´ë ¼º´ÉÀ» »ç¿ëÇÏ¿© ¸ðµç Æ®·£Àè¼Ç, ÀÚ»ê ¹× ¸ÞŸµ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ¿© ÀúÀåµÈ ¸ðµç µ¥ÀÌÅ͸¦ °Ë»öÇϰí Äõ¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ³ëµå operator´Â ¿ÜºÎ »ç¿ëÀÚ¿¡°Ô ¾ó¸¶³ª ¸¹Àº Äõ¸® ÆÄ¿ö¸¦ ¼ÛÃâÇÒÁö ½º½º·Î °áÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹Á¦ Äõ¸®°¡ Æ÷ÇÔµÈ ºí·Î±× °Ô½Ã¹° ------------------------------ BigchainDB ºí·Î±×¿¡ MongoDB µµ±¸¸¦ »ç¿ëÇÏ¿© BigchainDB ³ëµåÀÇ MongoDB µ¥ÀÌÅͺ£À̽º¸¦ Äõ¸®ÇÏ´Â ¹æ¹ý¿¡ ´ëÇÑ °Ô½Ã¹°À» ¿Ã·È½À´Ï´Ù. µ¥ÀÌÅÍ¿¡ ´ëÇÑ ÀϺΠƯÁ¤ ¿¹Á¦ Äõ¸®°¡ ÁÖ¿ä ³»¿ëÀÔ´Ï´Ù. `¿©±â¼­ È®ÀÎÇϼ¼¿ä `_. MongoDB¿¡ ¿¬°áÇϱâ ------------------------- MongoDB µ¥ÀÌÅͺ£À̽º¸¦ Äõ¸®ÇÏ·Á¸é ¸ÕÀú µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áÇØ¾ß ÇÕ´Ï´Ù. ±×·¯±â À§Çؼ± È£½ºÆ® À̸§°ú Æ÷Æ®¸¦ ¾Ë¾Æ¾ß ÇÕ´Ï´Ù. °³¹ß ¹× Å×½ºÆ®¸¦ À§ÇØ Áö¿ª ÄÄÇ»ÅÍ¿¡¼­ BigchainDB ³ëµå¸¦ ½ÇÇà ÁßÀÎ °æ¿ì È£½ºÆ® À̸§Àº "·ÎÄà ȣ½ºÆ®"¿©¾ß Çϸç ÀÌ·¯ÇÑ °ªÀ» º¯°æÇÏÁö ¾Ê´Â ÇÑ Æ÷Æ®´Â "27017"À̾î¾ß ÇÕ´Ï´Ù. ¿ø°Ý ½Ã½ºÅÛ¿¡¼­ BigchainDB ³ëµå¸¦ ½ÇÇà ÁßÀ̸ç ÇØ´ç ½Ã½ºÅÛ¿¡ SSHÇÒ ¼ö ÀÖ´Â °æ¿ì¿¡µµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. ¿ø°Ý ½Ã½ºÅÛ¿¡¼­ BigchainDB ³ëµå¸¦ ½ÇÇàÇϰí MongoDB¸¦ auth¸¦ »ç¿ëÇÏ°í °ø°³ÀûÀ¸·Î ¾×¼¼½ºÇÒ ¼ö ÀÖµµ·Ï ±¸¼ºÇÑ °æ¿ì(±ÇÇÑÀÌ ÀÖ´Â »ç¿ëÀÚ¿¡°Ô) È£½ºÆ® À̸§°ú Æ÷Æ®¸¦ È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. Äõ¸®Çϱâ ------------ BigchainDB ³ëµå ¿î¿µÀÚ´Â ·ÎÄà MongoDB ÀνºÅϽº¿¡ ´ëÇÑ Àüü ¾×¼¼½º ±ÇÇÑÀ» °¡Áö¹Ç·Î ½ÇÇàÇϴµ¥ MongoDBÀÇ ´ÙÀ½ÀÇ API¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù: - `the Mongo Shell `_, - `MongoDB Compass `_, - one of `the MongoDB drivers `_, such as `PyMongo `_, or - MongoDB Äõ¸®¿¡ ´ëÇÑ ¼­µåÆÄÆ¼Åø, RazorSQL, Studio 3T, Mongo Management Studio, NoSQLBooster for MongoDB, or Dr. Mongo. .. note:: SQLÀ» ÀÌ¿ëÇØ mongoDB µ¥ÀÌÅͺ£À̽º¸¦ Äõ¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î: * Studio 3T: "`How to Query MongoDB with SQL `_" * NoSQLBooster for MongoDB: "`How to Query MongoDB with SQL SELECT `_" ¿¹¸¦ µé¾î ±âº» BigchainDB ³ëµå¸¦ ½ÇÇàÇÏ´Â ½Ã½ºÅÛ¿¡ ÀÖ´Â °æ¿ì Mongo Shell (``mongo``)À» »ç¿ëÇÏ¿© ¿¬°áÇÏ°í ´ÙÀ½°ú °°ÀÌ º¼ ¼ö ÀÖ½À´Ï´Ù. .. code:: $ mongo MongoDB shell version v3.6.5 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.6.4 ... > show dbs admin 0.000GB bigchain 0.000GB config 0.000GB local 0.000GB > use bigchain switched to db bigchain > show collections abci_chains assets blocks elections metadata pre_commit transactions utxos validators À§ ¿¹Á¦´Â ¸î °¡Áö »óȲÀ» º¸¿©ÁÝ´Ï´Ù: * BigchainDB´Â µ¥ÀÌÅ͸¦ ``bigchain``.À̶ó´Â µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåÇÕ´Ï´Ù. * ``bigchain` µ¥ÀÌÅͺ£À̽º¿¡´Â ¿©·¯ `collections`_.°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. * ¾î¶² Ä÷º¼Ç¿¡µµ ÅõÇ¥°¡ ÀúÀåµÇÁö ¾Ê½À´Ï´Ù. ÀÌ·± µ¥ÀÌÅÍ´Â ¸ðµÎ ÀÚü(LevelDB) µ¥ÀÌÅͺ£À̽º¿¡ ÀÇÇØ 󸮵ǰí ÀúÀåµË´Ï´Ù. Ä÷º¼Ç¿¡ ´ëÇÑ ±â¼ú --------------------------------------- ``bigchain`` µ¥ÀÌÅͺ£À̽ºÀÇ °¡Àå Èï¹Ì·Î¿î ºÎºÐÀº ¾Æ·¡¿Í °°½À´Ï´Ù: - transactions - assets - metadata - blocks ``db.assets.findOne()`` Àº MongoDB Äõ¸®¸¦ »ç¿ëÇÏ¿© ÀÌ·¯ÇÑ Ä÷º¼ÇµéÀ» Ž»öÇÒ ¼ö ÀÖ½À´Ï´Ù. Æ®·£Àè¼Ç¿¡ ´ëÇÑ ±â¼ú ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ transaction Ä÷º¼Ç¿¡¼­ CREATE Æ®·£Àè¼Ç¿¡´Â Ãß°¡ ``"_id"`` Çʵå(MongoDB¿¡ Ãß°¡µÊ)°¡ Æ÷ÇԵǸç ``"asset"``°ú ``"metadata"`` Çʵ忡´Â µ¥ÀÌÅͰ¡ ÀúÀåµÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù. .. code:: { "_id":ObjectId("5b17b9fa6ce88300067b6804"), "inputs":[¡¦], "outputs":[¡¦], "operation":"CREATE", "version":"2.0", "id":"816c4dd7¡¦851af1629" } A TRANSFER transaction from the transactions collection is similar, but it keeps its ``"asset"`` field. .. code:: { "_id":ObjectId("5b17b9fa6ce88300067b6807"), "inputs":[¡¦], "outputs":[¡¦], "operation":"TRANSFER", "asset":{ "id":"816c4dd7ae¡¦51af1629" }, "version":"2.0", "id":"985ee697d¡¦a3296b9" } assets¿¡ ´ëÇÑ ±â¼ú ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ assets¿¡ ´ëÇÑ ±â¼ú¿¡´Â MongoDB°¡ Ãß°¡ÇÑ ``"_id"` ºÐ¾ß¿Í CREATE °Å·¡¿¡¼­ ³ª¿Â `asset.data`` ±×¸®°í ``"id"`` ¼¼ °¡Áö ÃÖ»óÀ§ ºÐ¾ß·Î ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù. .. code:: { "_id":ObjectId("5b17b9fe6ce88300067b6823"), "data":{ "type":"cow", "name":"Mildred" }, "id":"96002ef8740¡¦45869959d8" } metadata¿¡ ´ëÇÑ ±â¼ú ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ metadata Ä÷º¼ÇÀÇ ¹®¼­´Â MongoDB°¡ Ãß°¡ÇÑ ``"ID"`Çʵå¿Í °Å·¡¿¡¼­ ³ª¿Â `asset.data``±×¸®°í °Å·¡¿¡¼­ ³ª¿Â ``"ID"`` ¼¼ °¡Áö ÃÖ»óÀ§ ºÐ¾ß·Î ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù. .. code:: { "_id":ObjectId("5b17ba006ce88300067b683d"), "metadata":{ "transfer_time":1058568256 }, "id":"53cba620e¡¦ae9fdee0" } blocks¿¡ ´ëÇÑ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: { "_id":ObjectId("5b212c1ceaaa420006f41c57"), "app_hash":"2b0b75c2c2¡¦7fb2652ce26c6", "height":17, "transactions":[ "5f1f2d6b¡¦ed98c1e" ] } ³ëµå operator°¡ ¿ÜºÎÀ¯Àú¿¡°Ô ¼ÛÃâ´Â °Í ------------------------------------------------- °¢ ³ëµå operator´Â ¿ÜºÎ »ç¿ëÀÚ°¡ ÀÚ½ÅÀÇ ·ÎÄà MongoDB µ¥ÀÌÅͺ£À̽º¿¡¼­ Á¤º¸¸¦ ¾ò´Â ¹æ¹ýÀ» °áÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. : - ¿ÜºÎÀ¯Àú¸¦ Äõ¸® ó¸®ÇÏ´Â ·ÎÄà MongoDB µ¥ÀÌÅͺ£À̽º ÇÑµÈ Á¦ÇÑµÈ ±ÇÇÑÀ» °¡Áø ¿ªÇÒÀ» °¡Áø MongoDB »ç¿ëÀÚ ¿¹) read-only - Á¦ÇÑµÈ ¹Ì¸® Á¤ÀÇµÈ Äõ¸® ÁýÇÕÀ» Çã¿ëÇÏ´Â Á¦ÇÑµÈ HTTP API(BigchainDB ¼­¹ö¿¡¼­ Á¦°øÇÏ´Â HTTP API)`_, ȤÀºDjango, Express, Ruby on Rails, or ASP.NET.¸¦ ÀÌ¿ëÇØ ±¸ÇöµÈ Ä¿½ºÅÒ HTTP API - ´Ù¸¥ API(¿¹: GraphQL API) Á¦3ÀÚÀÇ »ç¿ëÀÚ Á¤ÀÇ ÄÚµå ¶Ç´Â Äڵ带 »ç¿ëÇÏ¿© ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.. °¢ ³ëµå operator´Â ·ÎÄà MongoDB µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ ´Ù¸¥ ·¹º§ ¶Ç´Â À¯ÇüÀÇ ¾×¼¼½º¸¦ ³ëÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ÇÑ ³ëµå operator°¡ ÃÖÀûÈ­µÈ °ø°£ Äõ¸®¸¦ Àü¹®À¸·Î Á¦°øÇϱâ·Î Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.`_. º¸¾È °í·Á»çÇ× ----------------------- BigchainDB ¹öÀü 1.3.0 ÀÌÀü ¹öÀü¿¡¼­´Â ÇϳªÀÇ MongoDB ³í¸® µ¥ÀÌÅͺ£À̽º°¡ ÀÖ¾ú±â ¶§¹®¿¡ ¿ÜºÎ »ç¿ëÀÚ¿¡°Ô µ¥ÀÌÅͺ£À̽º¸¦ ³ëÃâÇÏ´Â °ÍÀº ¸Å¿ì À§ÇèÇßÀ¸¸ç ±ÇÀåµÇÁö ¾Ê½À´Ï´Ù. "drop database"´Â °øÀ¯µÈ MongoDB µ¥ÀÌÅͺ£À̽º¸¦ »èÁ¦ÇÕ´Ï´Ù. BigchainDB ¹öÀü 2.0.0 À̻󿡼± °¢ ³ëµå¿¡ °íÀ¯ÇÑ µ¶¸³ ·ÎÄà MongoDB µ¥ÀÌÅͺ£À̽º°¡ Á¸ÀçÇÕ´Ï´Ù. ³ëµå °£ Åë½ÅÀº ¾Æ·¡ ±×¸² 1¿¡¼­¿Í °°ÀÌ MongoDB ÇÁ·ÎÅäÄÝÀÌ ¾Æ´Ñ Tendermint ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ¿© ¼öÇàµË´Ï´Ù. ³ëµåÀÇ ·ÎÄà MongoDB µ¥ÀÌÅͺ£À̽º°¡ ¼Õ»óµÇ¾îµµ ´Ù¸¥ ³ëµå´Â ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù. .. figure:: _static/schemaDB.png :alt: Diagram of a four-node BigchainDB 2.0 network :align: center Figure 1: A Four-Node BigchainDB 2.0 Network .. raw:: html


ÆÛÆ÷¸Õ½º ¹× ¿ä±Ý °í·Á»çÇ× ----------------------------------- Äõ¸® ÇÁ·Î¼¼½ÌÀº »ó´çÈ÷ ¸¹Àº ¸®¼Ò½º¸¦ ¼Ò¸ðÇÒ ¼ö ÀÖÀ¸¹Ç·Î, BigchainDB ¼­¹ö ¹× Tendermint Core¿Í º°µµÀÇ ÄÄÇ»ÅÍ¿¡¼­ MongoDB¸¦ ½ÇÇàÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ³ëµå operator ´Â Á¶È¸¿¡ »ç¿ëµÇ´Â ¸®¼Ò½º¸¦ ÃøÁ¤ÇÏ¿© Á¶È¸¸¦ ¿äûÇÑ »ç¶÷Àº ´©±¸µçÁö ¿ä±ÝÀ» û±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀϺΠÄõ¸®´Â ³Ê¹« ¿À·¡ °É¸®°Å³ª ¸®¼Ò½º¸¦ ³Ê¹« ¸¹ÀÌ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ³ëµå operator´Â »ç¿ëÇÒ ¼ö ÀÖ´Â ¸®¼Ò½º¿¡ »óÇÑÀ» µÎ°í, ÃʰúµÈ´Ù¸é ÁßÁö(¶Ç´Â Â÷´Ü)ÇØ¾ß ÇÕ´Ï´Ù. MongoDB Äõ¸®¸¦ ´õ¿í È¿À²ÀûÀ¸·Î ¸¸µé±â À§ÇØ _`À妽º `_¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ À妽º´Â ³ëµå operator ¶Ç´Â ÀϺΠ¿ÜºÎ »ç¿ëÀÚ°¡ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù(³ëµå ¿î¿µÀÚ°¡ Çã¿ëÇÏ´Â °æ¿ì). À妽º´Â ºñ¾î ÀÖÁö ¾Ê½À´Ï´Ù. »õ µ¥ÀÌÅ͸¦ Ä÷º¼Ç¿¡ Ãß°¡ÇÒ ¶§¸¶´Ù ÇØ´ç À妽º¸¦ ¾÷µ¥ÀÌÆ®ÇØ¾ß ÇÕ´Ï´Ù. ³ëµå ¿î¿µÀÚ´Â ÀÌ·¯ÇÑ ¿ä±ÝÀ» À妽º¸¦ »ý¼ºÇÑ »ç¶÷¿¡°Ô Àü´ÞÇϰíÀÚ ÇÒ ¼ö ÀÖ½À´Ï´Ù. mongoDB¿¡¼­´Â ´ÜÀÏ Ä÷º¼ÇÀº 64°³ ÀÌÇÏÀÇ À妽º¸¦ °¡Áú ¼ö ÀÖ½À´Ï´Ù. `_. One can create a follower node: a node with Tendermint voting power 0. It would still have a copy of all the data, so it could be used as read-only node. A follower node could offer specialized queries as a service without affecting the workload on the voting validators (which can also write). There could even be followers of followers. Tendermint votingÆÄ¿ö°¡ 0ÀÎ ³ëµåÀÎ ÃßÁ¾ÀÚ ³ëµå¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù. ¿©ÀüÈ÷ ¸ðµç µ¥ÀÌÅÍÀÇ º¹»çº»ÀÌ ÀÖÀ¸¹Ç·Î Àбâ Àü¿ë ³ëµå·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Follower ³ëµå´Â ÅõÇ¥ °ËÁõÀÚÀÇ ÀÛ¾÷ ºÎÇÏ¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê°í ¼­ºñ½º·Î Àü¹®È­µÈ Äõ¸®¸¦ Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù(¾²±âµµ °¡´É). ÆÈ·Î¿öÀÇ ÆÈ·Î¿öµéµµ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. ÀÚ¹Ù½ºÅ©¸³Æ® Äõ¸® ÄÚµå ¿¹½Ãs ------------------------------ ´ÙÀ½ Áß Çϳª¸¦ »ç¿ëÇÏ¿© ³ëµåÀÇ MongoDB µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áÇÒ ¼ö ÀÖ½À´Ï´Ù. MongoDB node.js µå¶óÀ̹ö¿Í °°Àº MongoDB µå¶óÀ̹öÀÇ `_. ¿©±â ÀÚ¹Ù½ºÅ©¸³Æ® Äõ¸® Äڵ忡 ´ëÇÑ ¸µÅ©°¡ ÀÖ½À´Ï´Ù - `The BigchainDB JavaScript/Node.js driver source code `_ - `Example code by @manolodewiner `_ - `More example code by @manolodewiner `_