Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    runmain
    @runmain
    @swampcoder tks
    Jan Kotek
    @jankotek
    @swampcoder I think in 3.0 close will finalize transaction and flushes log. Without it there would be some cleanup on next reopen.
    Dario Romano
    @DarioRomano
    Hi, I'm currently working on making a legacy application available through open source and Github. To make it more appealing for open source user to contribute we're creating a Tycho-Maven build system. We're using mapDBv2beta6 which is available through maven central, but unfortunately it requires sun.misc and sun.nio.ch in its manifest. I've found a workaround here https://search.maven.org/artifact/net.sdruskat/net.sdruskat.fragment.sun.misc/1.0.0/jar to expose sun.misc to OSGi. But unfortunately I haven't found something similar for the sun.nio.ch package. I've tried creating this kind of fragment myself, but I haven't been that successful so far. I would also like to avoid to upgrade to mapDBv3 since I'm not sure if there are any compatability issues with the source code, and I'd also have to get kotlin running in an eclipse developing environment and within the tycho maven build.
    Any advice on getting sun.nio.ch exposed to OSGi / the tycho build?
    Dario Romano
    @DarioRomano
    I've also checked if I could just use version 1.0.8 instead, but we seem to be using some methods exclusive to version 2 of MapDB
    Dario Romano
    @DarioRomano
    I've used grep on the source of v2 and noticed that sun.nio.ch seems kind of optional. So I've modified the jar to not require the import. Unfortunately that can't really be a permanent solution since it reduces the portability of the build
    swampcoder
    @swampcoder
    @jankotek have had alot of success with early integration into a data analysis application related to radar processing. Curious, what is your estimate for mapdb 4 being completed? I see it has a lot of interesting and features so just curious.
    Jan Kotek
    @jankotek
    @swampcoder Beginning of 2021
    @DarioRomano I no longer support that version. But feel free to just remove all references to sun.nio.ch. It should be optional for some type of storage.
    Bradley L Schatz
    @blschatz
    db.close() doesnt seem to work correctly. I'm getting the following exception on close, regardless of using mmap, filechannel, or the default.
    java.nio.file.FileSystemException: I:\xxxx: The process cannot access the file because it is being used by another process.
    This is using 3.0.7 on windows x64
    Any suggestions? Thanks!
    Jan Kotek
    @jankotek
    @blschatz most likely file locking. Storage was opened twice. Also on Windows file might remain locked, even after JVM process exits.
    Bradley L Schatz
    @blschatz
    Thanks Jan! It turned out to be I was missing a close in an earlier unit test.
    FYI mmap is working for me on Win10/Java8.
    Organ bank from sector 7G
    @testchamber1_twitter
    Hi there! Has anyone tried to use the expireOverflow feature successfully? The problem I'm facing is that the only function that retrieves the data from the disk memory is the memoryMap.get(some_key). If I call a function like underlyingMap.keys, underlyingMap.values, etcetc they come back empty UNLESS the data was refreshed recently. Is this expected? thanks in advance.
    liuyibox
    @liuyibox
    Hey I recently work on an android project have to use org.mapdb:mapdb:jar:3.0.7, but I got Method name '%%%verify$mapdb' in class 'org.mapdb.DB$Maker' cannot be represented in dex format. build error message. I saw this happen before, I'm wondering if there are any progresses on this problem?
    liuyibox
    @liuyibox
    If I guess correctly, in order to use mapdb.jar on android, the java source files and kotlin source files of MapDB need to be specified separately when compiling them into class/dex files.
    Jan Kotek
    @jankotek
    @liuyibox one method in kotlin has strange name in order to obfuscate it. It is not problem in JVM, but on Android. I will have to release new minor version for that
    nate8628
    @nate8628
    db.treeMap can't do batch import anymore? I'm trying to use the example from the documentation but createFrom() is an invalid method.
    nate8628
    @nate8628
    @jankotek
    SJS830
    @SJS830
    How do you serialize an entire database to a byte array?
    I want to save my databases to amazon s3 without storing them in a file
    Or is there another database that is better suited for that
    Nuwan Sanjeewa Abeysiriwardana
    @nuwansa
    Hi , NavigableSet.headSet with inclusive 'true' is not working, also tailSet with inclusive 'false' not working too. has anyone else experience this. I'm using latest version of mapdb 3.0.8
    to explain further , NavigableSet.headSet with inclusive 'true' not including the equal value in the result set.
    NavigableSet. tailSet with inclusive 'false' including the equal value in the result set
    Jan Kotek
    @jankotek
    @nuwansa it should work, there are unit tests for this case. Maybe you are using some exotic data type where 'equal' is not correctly handled? what is your serializer and config?
    Nuwan Sanjeewa Abeysiriwardana
    @nuwansa
    @jankotek this is the initialization code
    this.db
                .treeSet("map")
                .serializer(new SerializerArrayTuple(Serializer.BIG_DECIMAL, Serializer.LONG))
                .counterEnable()
                .createOrOpen();
    Jan Kotek
    @jankotek
    That should work
    I will look into it jankotek/mapdb#980
    Nuwan Sanjeewa Abeysiriwardana
    @nuwansa
    @jankotek thank you very much
    Qi Chen
    @chenqi0805
    @jankotek Hi, is there plan of re-support encryption API for the DBMaker? If yes, what will be the encryption standards?
    Jan Kotek
    @jankotek
    @chenqi0805 yes, I would like to support encryption. It will be done by block encryption (entire store) or via serializers (only part of data such as Map values)
    Qi Chen
    @chenqi0805

    @jankotek QUES on the hashmap or treemap with nested data structure. With the following code block:

            HTreeMap<String, List<String>> map = (HTreeMap<String, List<String>>) DBMaker.fileDB("map").make().hashMap("map").createOrOpen();
            for (int i = 0; i< 10; i++) {
                final int finalI = i;
                for (int j = 0; j< 10; j++) {
                    final int finalJ = j;
                    map.compute(String.valueOf(finalI), (key, value) -> {
                        if (value == null) {
                            value = new ArrayList<>();
                        }
                        value.add(String.format("%d_%d", finalI, finalJ));
                        return value;
                    });
                }
            }

    It falls into deadloop. Instead, I need to copy the value and then return the modified new copy to make it work.

    HTreeMap<String, List<String>> map = (HTreeMap<String, List<String>>) DBMaker.fileDB("map").make().hashMap("map").createOrOpen();
            for (int i = 0; i< 10; i++) {
                final int finalI = i;
                for (int j = 0; j< 10; j++) {
                    final int finalJ = j;
                    map.compute(String.valueOf(finalI), (key, value) -> {
                        final List<String> newValue;
                        if (value == null) {
                            newValue = new ArrayList<>();
                        } else {
                            newValue = new ArrayList<>(value);
                        }
                        newValue.add(String.format("%d_%d", finalI, finalJ));
                        return newValue;
                    });
                }
            }

    Is it a bug or it is expected? I think this is not an issue with in-memory counterpart (e.g. concurrentHashMap)

    1 reply
    Qi Chen
    @chenqi0805

    Hi, Another question on how expire works in MapDB. The following snippet does not work

    @Test
        public void testExpiration() throws InterruptedException {
            HTreeMap<String, String> map = (HTreeMap<String, String>) DBMaker
    //                .fileDB("map").fileDeleteAfterClose()
                    .memoryDB()
                    .make().hashMap("map")
                    .expireAfterCreate(10)
                    .createOrOpen();
            map.put("a", "b");
            Thread.sleep(4000);
            assertNull(map.get("a"));
            map.close();
        }

    Did I misunderstand how expiration works?

    svukadin85
    @svukadin85
    Hi
    where are mapdb kotlin source files found?
    chaitas
    @chaitas
    Hello
    I want to use SortedTableMap i have ip as key and want multiple values in value section as columns in tables is there any way to achieve it using it ?Tried from examples given but not able to do so if anyone can help on it..
    Thnx
    This is sample data that i want to feed
    3754892057--this is ip hashcode generated
    THis are all values -- "PUB","TH","Thailand","Chon Buri","Ban Talat Bueng","Triple T Internet PCL","triplet.co.th","ISP","45629","JasTel Network International Gateway","30","-"
    @chaitas that structure is called Multimap, but MapDB does not support it yet. I would suggest using Lists as values